从flink1.8版本开始,reporter支持了将指标数据写入influxdb,用户可以自研可视化系统读取influxdb中的数据进行可视化。
但是对中小型公司来讲,可能因为成本原因,大多并不会选择自研可视化,我们选择grafana进行flink metrics的可视化。
本文主要重点讲述influxdb、prometheus为Reporter,将flink的metrics数据写入外部系统,并使用grafana进行可视化。
安装配置方式手把手教学,如下:
docker run -p 8086:8086 \
-v /data/docker_volume/influxdb:/var/lib/influxdb \
influxdb
docker exec -it e9b352ee20d4 influx
create database flink
create user "flink" with password 'flink#123centos' with all privileges;
https://prometheus.io/download/
分别解压prometheus和pushgateway
vim prometheus.yml
在末尾新增:
# pushgateway
- job_name: 'pushgateway'
scrape_interval: 10s
honor_labels: true #加上此配置exporter节点上传数据中的⼀些标签将不会被pushgateway节点的相同标签覆盖
static_configs:
- targets: ['localhost:9091']
labels:
instance: pushgateway
./prometheus > /dev/null 2>&1 &
./pushgateway --web.enable-admin-api > /dev/null 2>&1 &
参数 --web.enable-admin-api,表示启用通过webapi方式管理数据,可以在webUI中删除metrics或通过命令curl -X PUT http://localhost:9091/api/v1/admin/wipe删除所有metrics
# prometheus:
打开 http://10.42.63.116:9090/targets
# pushgateway:
打开http://10.42.63.116:9091/
可以看到flink写入的监控指标数据(需要flink任务重启)
vim flink-1.10.0/conf/flink-conf.yaml
# 配置influxdb
metrics.reporter.influxdb.class: org.apache.flink.metrics.influxdb.InfluxdbReporter
metrics.reporter.influxdb.host: 10.42.63.116
metrics.reporter.influxdb.port: 8086
# db,username,password需要跟配置influxdb一致
metrics.reporter.influxdb.db: flink
metrics.reporter.influxdb.username: flink
metrics.reporter.influxdb.password: flink#123centos
#metrics.reporter.influxdb.retentionPolicy: one_hour
#metrics.reporter.influxdb.consistency: ANY
#metrics.reporter.influxdb.connectTimeout: 60000
#metrics.reporter.influxdb.writeTimeout: 60000
# 配置prometheus
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: 10.42.63.116
metrics.reporter.promgateway.port: 9091
# jobName直接指定,不需要事先在prometheus中配置
metrics.reporter.promgateway.jobName: tdflink_prom
metrics.reporter.promgateway.randomJobNameSuffix: true
# flink任务关闭后是否删除prometheus中存储的metrics,默认false,但设置为true时,仍然无法有效删除,详见https://issues.apache.org/jira/browse/FLINK-11457,可通过pushgateway的webUI或api删除
metrics.reporter.promgateway.deleteOnShutdown: true
# 收集操作系统指标
# Flag indicating whether Flink should report system resource metrics such as machine's CPU, memory or network usage.
metrics.system-resource: true
从flink-1.10.0/opt中拷贝influxdb和prometheus相应jar包到lib目录
cp opt/flink-metrics-influxdb-1.10.0.jar ./lib
cp opt/flink-metrics-prometheus-1.10.0.jar ./lib
metric repoter 上报操作系统指标,下载jar包上传到lib目录下
jna-4.2.2.jar
jna-platform-4.2.2.jar
oshi-core-3.4.0.jar
# yarn-single-job
/home/admin/flink-1.10.0/bin/flink run -m yarn-cluster -p 100 -yjm 4g -ys 10 -ytm 16g -yqu root.flink -ynm etl_test \
/home/admin/tiangx/applog_etl/jar_test/applog_etl-1.0-SNAPSHOT-jar-with-dependencies.jar \
--input-topic applog_raw \
--output-topic applog_test \
--bootstrap.servers 10.19.171.177:9092 \
--zookeeper.connect 10.19.171.177:2181 \
--group.id flink_applog_etl_test \
--redis 10.10.152.217 > /dev/null 2>&1 &
flink任务重启,无法自动清除prometheus中历史metrics,影响监控使用体验(会看到已经停止的任务),建议手动清除,有如下两种方式:
curl -X PUT http://localhost:9091/api/v1/admin/wipe
下载:
docker pull grafana/grafana
启动:
docker run -d --name=grafana -p 3000:3000 grafana/grafana
首次打开grafana,http://localhost:3000/,
点击skip跳过密码验证,第二次打开grafana需要密码验证,默认用户admin,密码admin,登录后会提示修改密码。
https://grafana.com/grafana/dashboards
搜索flink metrics模板并下载
点击“import”,将下载的模板导入,完成后打开dashboard:
下载的grafana dashboard可能需要再次加以调整才能正确显示。