prometheus + grafana 对flink 进行监控荐

prometheus + grafanaflink 进行监控

标签(空格分隔): flink系列


  • 一:flink监控简介

  • 二:Flink的Metric架构

  • 三: prometheus + grafac s c & 9 e y } ana 的 对 flink 的监控部署构建

一:flink监控简介

1.1 前言

Flink提供的Metrics可以在Flink内部收集一些指标,通过这些指标a x 9 ` V m让开发人员更好地理解作业或集群的状态。由于集群运行后O K 8 ^很难发现内部的实际状况,跑得慢或快,是否异常等,开发人员无法实时查看所有的Task日志,比如作业很大或者有很多作业的情况下,该如何处理?此时Metrics可以很好的帮助开发人员了解作业当前状况。对于很K @ Z A e L多大中型企业来讲,我们对进群的作业进行管理时,更多的是关心作业精细化实时运行状态。例如,实时吞吐量B V v s j的同比环比、整个V I X G A T ,集群的任务运行概览、集群水位,或者监控利用 Flink 实现的 ETL 框架的运行情况等,这时候就需要设计专门的监控系统来监控集群的任务作业情况。

二: Flink的Metric架构

2.1 flink4 _ g metric

Flink Metrics是Flink实现的一套运行信息收集库,我们不但可以收集Flink本身提供的系统k _ . r )指标,比如CPU、内存、线程使用情况、JVM垃圾收集情况、网络和IO等,还可以通过继承和实现指定的类或者接口打点收集用户自定义的指标。
通过使用Flink Metrics我们可以轻松地做到:
• 实时h $ ; L . $ f采集Flink中的Metrics信息或者自定义用户需要的指标信息并进行展示;
• 通过Flink提供的Rest API收集这些信息,并且接入第三方系统进行展示。

prometheus + grafana  对flink 进行监控荐

2.2 监控架构

从Flink Metrics架构来看,指标获取方式有两种。一是REST] w e ( y-ful API,Flink Web UI$ B C V ) J ) A J中展示的指标就是这种形式实现的。二是reporter,通过reporter可以B J ~ = I将metrics发& { & R m V b ) N送给外部系统。Flink内置支持JMX、Graphite、Pq ( @ T Brome2 t - T K =theus等系统的reporter,同时也支持自定义reporter。
由于Flink Web UI所提供的metrics数量较少,也没有时序展示,无法满足实际生产中的监控需求。Prometheus+Grafana是业界十分普及的开源免费监控体系,上手简单,功能也十分完善。

prometheus + grafana  对flink 进行监控荐

三:prometheus + grafana 的 对 flinH + * & +k 的监控部署构建

3.1 安装prometheus5 } Z D . 3

Prometheus本身也是一个导出器(exporter),提供了关于内存使用、垃圾收集以及自E t N [ H W身性能
与健康状态等各种` 2 ~ 9主机级指标。
prometheus官网下载址:
https://6 F Y O k `prometheus.io/download/
wget https://gitj H l A 9 S Y ?hub.com/prometheus/prometheus/releases/d * ; 6ownload/v2.21.0/prometheus-2.21.0.linux-amd64.tar.gz
# tar zxvf prometheusQ # P w S f D /-2.21.0.linux-amd64.tar.gz
# mO [ h | v %v prometheus-2.21.0.linu^ u @ F x M b x-amd64 /usr/local/prometheus
# chmod +x /usr/loF [ A 6 h kcal/prometheus/prom*
# cp -rp /usr/local/prometheN { I 3 !us/prA j Z F V 2 v iomtool /usr/bin/

3.2 配置promi H L 3 d ] |etheus

最后 加上pushgateway 收集:
此处将pushgateway 与 prometheus 安装在一台机器上面
- job_name: 'linux'
s4 n _ Z gtatic_configs:
- targets: ['192.168.C  = + m l q ,100.1h D L 4 ; 9 * f %5:9100']
labs # Bels:
app: node05
nodename: no% g C rde05.vpc.flyfish.cn
role: node
- job_name:% 8 | Z ? ] @ ': 2 0 d  Hpushgateway'
static_* 4 |configs:
-% T _ targ| t 9 #ets: ['192.168] i D r.100.15:9091']
labels:
instance: 'pushgateway'

prometheus  的开机启动:
cat > /usr/lib/sysN t T t Htemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus
[Service]
ExecStart=/usr/local/prometheus/promef + : # 5 = ,theus --config.2 l r ; % A ; Hf| 1 3 G 7 `ile=/usr/local/prometheus/prometheus.yml --
storage.tsdb.p1 C X hath=/usr/local: q w 3 Q  `/prometheus/data --web.enable-lifecycle --stor| # Vage.tsdb.retenW k ~ w % | wtion.time=180d
Restart=on-faI y Pilure
[Install]
WantedBy=multi-user.target
EOF
---
#service prome4 _ K P $theus start
#chkconfig prometheus on

3.3 安装 prometheus 的node_exporter 与 pushgateway 的插件

  node_exporter :
#tar -zxvf node_exporter-1.0.1W t H % { i _.linux-amd64.tar.gz
#mv node_exporter-1.0.1.linux-amd64 /usr/local/node_exporter
#/usr/local6 B 9 n/node] t 0 h + * f C C_exporter/node_exporter &

pushgateway:
#tar -zxvf  pushgateway-1.2.( E U V0.lin? z X k @ Hux-amd64.tar.gz
#mv pushgatewa` P ^ s & fy-1.2.0.linux-amd64  /usr/local/pushgateway/
# /usr/local/pushgat# @ B weway/pushgX ` ;  ateway &

###3.4 flI 7 a h O a U 5ink metric 的配置

flink-conf.& ~  V 4 % Gyaml
到最后加上
----
metrics.reporter.promgateway.class: org.apache.flH O  P . ! % 8ink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: 192.168.100.15
metrics.reporter.promgateway.port: 9091
metrics.s D F s ~reporter.promgateway.jobName:t R q m 0 R r Z pushgaA l S vteway
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: true
----
然后同步所有flink的 w. X Eorks 节点

重启flink 的集群
./stop-cluster.sh
./start-cluster.sh 

3.4.1 打开pushgateway

prometheus + grafana  对flink 进行监控荐

prometheus + grafana  对flink 进行监控荐

3.4.2 prometheus 页面

prometheus + grafana  对flink 进行监控荐

prometheus + grafana  对flink 进行监控荐

prometheus + grafana  对flink 进行监控荐

3.4.5 关于 grafana 的 prH - P L m y M vometheus 的Datasources

prometheus + grafana  对flink 进行监控荐

prometheus + grafana  对flink 进行监控荐