前言
Flink 提供的Metrics可以在Flink 内部收集一些指标,通过这些指标可以让开发人员更好地理解作业或集群的状态。
但Flink 内置的Metrics更多的是查看任务的实时状态,要是想持久化这些指标,就需要借助于flink-metrics-prometheus,下面将展示一下prometheus监控flink的配置。
配置pushgateway
Prometheus 在正常情况下是采用拉模式从产生 metric 的作业或者 exporter(比如专门监控主机的 NodeExporter)拉取监控数据。但是我们要监控的是 Flink on YARN 作业,想要让 Prometheus 自动发现作业的提交、结束以及自动拉取数据显然是比较困难的。PushGateway 就是一个中转组件,通过配置 Flink on YARN 作业将 metric 推到PushGateway,Prometheus 再从 PushGateway 拉取就可以了。
1、下载并安装pushgateway
wget https://github.com/prometheus/pushgateway/releases/download/v1.5.1/pushgateway-1.5.1.linux-amd64.tar.gz tar xf pushgateway-1.5.1.linux-amd64.tar.gz -C /usr/local/ cd /usr/local/ ln -s pushgateway-1.5.1.linux-amd64/ pushgateway
2、服务启动
/usr/local/pushgateway/pushgateway --web.listen-address :9091
3、prometheus集成pushgateway
- job_name: "flink-pushgateway" static_configs: - targets: ["192.168.1.1:9091"]
Flink 配置
Flink 的 Metric Exporter 是一个可插拔的组件,可以将 Flink 的度量指标导出到 Prometheus 格式。flink官方提供插件jar包,默认在plugins目录下,只需要将jar包拷贝到flink lib目录下,就算是打开了扩展。
拷贝jar包:
cd /usr/local/flink-1.13.6/ cp plugins/metrics-prometheus/flink-metrics-prometheus-1.13.6.jar lib/
修改flink配置:flink-conf.yaml
##### 与 Prometheus 集成配置 ##### metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter # PushGateway 的主机名与端口号 metrics.reporter.promgateway.host: 192.168.1.1 metrics.reporter.promgateway.port: 9091 # Flink metric 在前端展示的标签(前缀)与随机后缀 metrics.reporter.promgateway.jobName: flink-metrics-ppg metrics.reporter.promgateway.randomJobNameSuffix: true metrics.reporter.promgateway.deleteOnShutdown: false metrics.reporter.promgateway.interval: 30 SECONDS
然后就可以启动flink程序进行验证了(注:这里使用的flink安装包自带的flink程序)
./bin/flink run -t yarn-per-job --detached ./examples/streaming/TopSpeedWindowing.jar
启动 Prometheus 后,它将开始从 Flink 的 Metric Exporter 中抓取度量指标,并将它们存储在 Prometheus 的时间序列数据库中。
验证
flink 程序启动后,prometheus就可以收集到上报的数据了,需要做图表展示的话,在grafana dashboard挑选合适的模板即可。