使用Flink Metric Reporter 对flink任务指标进行监控

从flink1.8版本开始,reporter支持了将指标数据写入influxdb,用户可以自研可视化系统读取influxdb中的数据进行可视化。

但是对中小型公司来讲,可能因为成本原因,大多并不会选择自研可视化,我们选择grafana进行flink metrics的可视化。

本文主要重点讲述influxdb、prometheus为Reporter,将flink的metrics数据写入外部系统,并使用grafana进行可视化。

安装配置方式手把手教学,如下:

1. influxdb

1.1 启动

docker run -p 8086:8086 \
    -v /data/docker_volume/influxdb:/var/lib/influxdb \
    influxdb

1.2 连接influxdb

docker exec -it e9b352ee20d4 influx

1.3 建库

create database flink

1.4 建用户

create user "flink" with password 'flink#123centos' with all privileges;

2. Prometheus

2.1 下载prometheus和pushgateway

https://prometheus.io/download/

2.2 安装

分别解压prometheus和pushgateway

2.3 配置

vim prometheus.yml 
在末尾新增:

  # pushgateway
  - job_name: 'pushgateway'
    scrape_interval: 10s
    honor_labels: true #加上此配置exporter节点上传数据中的⼀些标签将不会被pushgateway节点的相同标签覆盖 
    static_configs:
     - targets: ['localhost:9091']
       labels:
         instance: pushgateway

2.4 启动

./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

2.5 验证

# prometheus:
打开 http://10.42.63.116:9090/targets

可以在targets中看到pushgateway,如下图:
使用Flink Metric Reporter 对flink任务指标进行监控_第1张图片

# pushgateway:
打开http://10.42.63.116:9091/

可以看到flink写入的监控指标数据(需要flink任务重启)
使用Flink Metric Reporter 对flink任务指标进行监控_第2张图片

3. flink配置

3.1 修改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

3.2 拷贝jar包

从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

3.3 启动flink任务

# 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 &

3.4 清除prometheus中历史metrics

flink任务重启,无法自动清除prometheus中历史metrics,影响监控使用体验(会看到已经停止的任务),建议手动清除,有如下两种方式:

3.4.1 通过pushgateway的webUI删除所有metrics:

使用Flink Metric Reporter 对flink任务指标进行监控_第3张图片

3.4.2 通过pushgateway的api删除metrics:

curl -X PUT http://localhost:9091/api/v1/admin/wipe

4. Grafana

4.1 安装并启动grafana

下载:
docker pull grafana/grafana

启动:
docker run -d --name=grafana -p 3000:3000 grafana/grafana

首次打开grafana,http://localhost:3000/,
点击skip跳过密码验证,第二次打开grafana需要密码验证,默认用户admin,密码admin,登录后会提示修改密码。

4.2 配置数据源

如下图:
使用Flink Metric Reporter 对flink任务指标进行监控_第4张图片

配置influxdb:
使用Flink Metric Reporter 对flink任务指标进行监控_第5张图片

配置prometheus:
使用Flink Metric Reporter 对flink任务指标进行监控_第6张图片

4.3 下载grafana模板

https://grafana.com/grafana/dashboards
搜索flink metrics模板并下载

4.3 将模板导入到grafana

使用Flink Metric Reporter 对flink任务指标进行监控_第7张图片

点击“import”,将下载的模板导入,完成后打开dashboard:

使用Flink Metric Reporter 对flink任务指标进行监控_第8张图片

下载的grafana dashboard可能需要再次加以调整才能正确显示。

你可能感兴趣的:(大数据,Flink,Grafana,大数据,可视化,flink)