prometheus监控flink
背景
很久没写博客了,今天也算完成了一个小测试。由于flink没有监控的平台,只是自己写了python脚本去监控发报警。flink 自己的ui界面其实已经有很多的指标可以看了,但是就得自己一个一个的去找到,所以基于这个我想找个监控的平台去监控一下flink,google,官网,博客以后发现大多数用的都是prometheus + grahana去监控展示的。于是开始了我的链路打通。
Promethesu
什么是prometheus ?https://prometheus.io/docs/introduction/overview/ 看官网就可以了。我也是没有接触过,只是听说过,带着学习的态度去了解吧。看了基本的介绍,然后把prometheus的结构了解一下。
对架构图简单的说明一下,给我的理解就是这么几部分。
采集部分,pushgateway 和 exporters ,为啥是两个呢?就是涉及到了固定机器和动态机器的问题。就像我们flink on yarn,一个job作业会分发到几个机器上,我们不能每次都要去重新配置prometheus的上报地方吧?所以通过gateway的方式让flink自动上报到gateway,然后prometheus去gateway同步数据就可以了。exporters就是我们有5台机器的监控,那么就是配置好这个5台机器就可以了。然后把exporter安装到五台机器让他们上报到prometheus就可以了。
中间的部分是服务动态发现,prometheus服务。数据是存在TSDB一种时序数据库在我们的磁盘上,然后通过http对外保留接口。
最后一部分就是报警和展示。报警我本次没做,展示也没做。
过程
好了,基本的架构了解了。我们要做的就是prometheus 配置启动,然后gateway连通prometheus,之后配置flink,开发一个flink任务,最后到prometheus上能看到指标就到此为止了,后面的展示应该也就简单了!总体来说都不难。
prometheus pushgateway 安装配置
我在机器上安装了docker,直接进行docker的拉取最新版本安装的prometheus,因为我也是一个docker小白,所以也想尝试尝试!
其实应该先把gateway先启动起来的,不过无妨。9090默认prometheus的端口,9091 pushgateway的端口。这里注意的是每个配置的上下级的缩进,因为缩进我这里弄了半天感觉没啥错误,结果就是因为没注意缩进导致卡了一下。
这样prometheus就完成了,我们也启动起来了。通过9090端口访问,可以看到prometheus服务和pushgateway服务都是正常运行,我因为刚才也说到了应该先启动gateway的,如果你先启动prometheus,可能pushgateway现在不是绿色的状态。
flink 配置
上报完毕以后,因为prometheus是一个插件,所以没有直接在flink的lib中,但是plugins中已经提供了对应jar,找到以后放到lib中。
cp plugins/metrics-prometheus/flink-metrics-prometheus-1.12.5.jar lib/
这样我们启动的时候flink run的时候会去加载我们的jar包,这样简单的链路就通了。我们自己flink任务是通过streamx进行管理提交的采用的是application模式。作业提交完毕以后,我们再从9090端口查看,如果有flink开头的指标,这样整条链路就通了。
总结
不管是prometheus还是docker,这些都是自己第一次尝试用于正式环境,以及第一次用。所以想记录一下这个过程,过程很简单,但是还是要操作一下,关键点就是想明白prometheus那个架构图。有哪里说的不对的地方,还希望大家帮忙指出来,一起每天进步一点点!!!底端英语翻译来自今天听的《樊登读书》介绍翻译家许渊冲老先生,借此纪念一下许老!
From hill to hill no bird in flight; From path to path no man in sight.
A lonely fisherman afloat , Is fishing snow in lonely boat. -- 《江雪》柳宗元 许渊冲译