1.简介 Flink支持多种监控指标的汇报reporter,例如jmx、slf4j、Prometheus、InfluxDB等。 Grafana+Prometheus是当前比较流行的监控可视化解决方案。如下图为Prometheus及相关组件组成的生态系统。

2.安装配置 Prometheus是采用拉模式的方式,从exporter拉取监控的数据。但Prometheus自动发现Flink on YARN作业的提交、结束以及自动拉取数据是比较困难的。PushGateway作为一个中转组件,通过配置Flink on YARN作业将监控指标推到PushGateway,Prometheus再从PushGateway拉取数据。 (1)首先拷贝监控用的jar包Flink的lib目录下 将flink的opt目录下面的flink-metrics-prometheus-1.7.2.jar包拷贝到flink的lib下:
cd /opt/flink-1.7.2
cp opt/flink-metrics-prometheus-1.7.2.jar lib(2)Prometheus和PushGateway组件下载地址为:
https://github.com/prometheus/prometheus/releases/download/v2.12.0/prometheus-2.12.0.linux-amd64.tar.gz
https://github.com/prometheus/pushgateway/releases/download/v0.9.1/pushgateway-0.9.1.linux-amd64.tar.gz(3)解压文件,并修改 Prometheus的配置文件prometheus.yml添加配置如下图; Prometheus的默认端口是9090,PushGateway的默认端口是9091。
- job_name: 'flink'
file_sd_configs:
- files:
- configs/flink.jsonconfigs/flink.json的配置如下图:
[
{
"targets": ["172.30.11.15:9091"]
}
](4)启动PushGateway和Prometheus。
nohup ./pushgateway --web.listen-address :9091 > /var/log/pushgateway.log 2>&1 &
nohup ./prometheus --config.file=prometheus.yml > /var/log/prometheus.log 2>&1 &若Prometheus为生产环境热启动,只需要在服务器上执行如下命令即可:
curl -X POST http://172.30.11.15:9090/-/reload(5)编辑flink-conf.yaml,添加Flink与PushGateway集成的参数
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
# 这里写PushGateway的主机名与端口号
metrics.reporter.promgateway.host: 172.30.11.15
metrics.reporter.promgateway.port: 9091
# Flink metric在前端展示的标签(前缀)与随机后缀
metrics.reporter.promgateway.jobName: flink-metrics-ppg
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: false(6)配置grafana Grafana默认端口:3000,点击Create your first data source添加Prometheus数据源。如下图所示:

(7)启动flink (8)添加监控图表 点击New Dashboard->Add Query按钮,即可看到Flink下的监控指标。

选好监控指标,就可以从图表中看到监控数据的折线了。