flink实现指标监控

                                 flink实现指标监控

  数据监控都要求实时性,我把监控分为2种,一种是有状态监控,一种是无状态监控。有状态就是指指标的计算依赖于之前的数据,比如连续产生N次才触发告警推送;无状态计算就是指只跟当前值相关,即值大于(或者等于、小于)某个阀值触发告警推送,下面是一个大概的数据流程图:

flink监控流图

流程图说明:

(1)由于我们监控的数据来源可能很多,为了尽可能复用监控平台,我们需要标准化数据结构,即图中的Adapter1到AdapterN,这些模块的输出为同一个数据结构。

(2)由于是实时计算,我们需要在flink的map阶段将无效的过时的数据丢弃。

(3)由于监控指标的不固定性,我们可能随时需要增加监控指标,而且监控的阀值或者规则也不尽相同,因此我们需要配置监控规则,这里可以将规则配置的mysql,以javascript的方式配置,flink可以通过javascript引擎解析出是否需要告警。

(4)由于有些指标涉及到有状态计算,规则中也需要标识是否是有状态计算,还要配置缓存指标

(5)告警数据产生之后一方面我们需要写库,供后面二次统计使用,另一方面需要发送到告警推送模块进行统一的推送(短信,邮件等)

(6)离线计算引擎会读取实时产生的告警数据,进行二次统计,这里一般采用定时计算。

你可能感兴趣的:(flink实现指标监控)