hyj 发表于 2020-4-16 19:34:04

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如何自定义一个定时数据源



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


(2)触发报警代码


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

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







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


美丽天空 发表于 2020-4-17 11:19:29

感谢分享
页: [1]
查看完整版本: Flink监控:如何实现一个某种数据缺失半小时触发报警的监控