业务监控系统实现对系统的业务指标实时监控、预警以及趋势分析。通过类 sql 语句的监控型事件定义,灵活针对各种场景的自定义业务监控
1.业务监控平台系统架构

2.业务监控平台服务架构

3.指标监控
本文中介绍的业务监控系统中的核心 esper 引擎对业务需要监控的事件具有如下优势:
• 高吞吐量 - 处理大量消息(单机每秒50w 左右的吞吐量)
• 低延迟 - 实时响应发生的条件(从几毫秒到几秒)
• 复杂计算 - 应用程序检测事件之间的模式(事件相关),过滤事件,
1) 事件关联
关联了两个事件流。第一个事件流由欺诈告警事件组成,用于保存过去30分钟的事件信息。第二个流则是withdrawal事件,用来保存过去30秒的事件。这两个流通过account number进行关联:
select fraud.accountNumber as accntNum,
fraud.warning as warn,
withdraw.amount as amount,
MAX(fraud.timestamp, withdraw.timestamp) as timestamp,
'withdrawlFraud' as desc
from
FraudWarningEvent.win:time(30 min) as
fraud,WithdrawalEvent.win:time(30 sec) as withdraw
where fraud.accountNumber = withdraw.accountNumber
2) 事件模式匹配
一个或多个事件发生时,事件模式会匹配定义的模式。模式也可以是基于时间的。模式匹配时通过状态机实现的。模式表达式可以由连接了模式操作符的过滤器表达式组成。通过在圆括号中的嵌入表达式,可以实现更深的模式表达式嵌套。
3)模式匹配和事件流分析结合使用
当检测到事件序列(或没有事件发生)时,模式就会匹配。模式匹配的结果可以用于进一步的分析和处理。
下面的模式监测的是 Status事件发生后的10s没有相同ID的status事件发生的场景。整个EPL语句进一步计算了所有发生的每个ID的事件总数。
select a.id, count(*) from pattern [every a=Status -> (timer:interval(10 sec) and not Status(id=a.id)) group by id