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.json
configs/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下的监控指标。
选好监控指标,就可以从图表中看到监控数据的折线了。