分享

Flink监控:如何实现一个某种数据缺失半小时触发报警的监控


问题导读

1.实现异常报警本文采用了那种方法?
2.采用window是如何实现的?
3.采用keyedstream是如何实现的?

问题定义:半小时监控可以定义为整间隔时间(如9:00-9:30),也可以定义为某条数据之后的半小时

提示: 若采用processingtime,我们可以在env中设置自动定时产生watermark(动动你勤劳的小手google下);若采用eventtime,我们则需要自定义timestamp和watermark(这个网上一大堆)。

1.处理这类问题,提供以下两种方案:

    1.1 采用window(窗口的划分依赖于自然时间,用来处理整间隔时间)

       window的触发需要依赖于数据,而watermark则是窗口是否执行计算的依赖。但是我们只有一种数据来源,若数据丢失,会造成没有窗口,这样我们写的窗口内数据不存在触发报警的逻辑就不可能执行,在这种情况下,我们需要一个定时的数据源帮助定时触发窗口,代码如下:

(1)Flink如何自定义一个定时数据源

1.png

DataStream timerStream = env.addSource(new TimerSource(1000));


(2)触发报警代码
1.png

    另外补充一句,如果有特殊需要,比如说在监控中间来了某种数据需要提前终止窗口计算,可以在窗口后重写trigger

    1.2 采用keyedstream(这个可以用来实现某条数据后半小时没有数据报警)

1.png

1.png



作者:踽踽独行DIY
链接:https://www.jianshu.com/p/7f5729e85ea3


已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条