1.通过Prometheus采集数据
建议先阅读hadoop metrics采集方法说明_枫叶小山的博客-CSDN博客
1.1 pushgateway组件安装
- 获取安装包 pushgateway-1.4.3.linux-amd64.tar.gz
- 解压安装包 tar -xvf prometheus.tar -C 自定义路径
- 跳转到对应解压目录,启动pushgateway nohup ./pushgateway >> pushgateway .log &
- 访问服务器对应9091端口,如果能正常访问则安装成功
1.2 修改flink-conf.yaml
- 在flink-conf.yaml尾部追加以下配置:
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: ip (pushgateway 安装服务器信息)
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: flink-** (自定义采集jobname)
metrics.reporter.promgateway.randomJobNameSuffix: true (是否随机生成jobname防止重复,默认true)
metrics.reporter.promgateway.deleteOnShutdown: false (是否关闭连接时删除指标,默认false) - 重启flink:
cd $FLINK_HOME/bin
./stop-cluster.sh
./start-cluster.sh
1.2 修改prometheus.yml
- 在prometheus.yml尾部追加以下配置:
- job_name: 'pushgateway-242'
static_configs:
- targets: ['10.32.122.242:9091'] - 重启prometheus。
1.3 提交任务
- 如果是本地localhost提交,需要在main方法中添加以下参数
config.put("metrics.reporter.promgateway.class","org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter"); config.put("metrics.reporter.promgateway.host", ""); config.put("metrics.reporter.promgateway.port", ""); config.put("metrics.reporter.promgateway.jobName", ""); config.put("metrics.reporter.promgateway.randomJobNameSuffix", "true"); config.put("metrics.reporter.promgateway.deleteOnShutdown", "false");
- 在提交的json文件中的setting中增加如下配置
"metricPluginConf" : {
"pluginName": "prometheus"
}
1.3 采集后的数据如下
1.4 数据也会同步到Prometheus,示例如下,可以通过promQL查询
2.通过mysql数据库采集
2.1 提交的json文件中的setting中增加如下配置即可,表如果不存在程序会自动创建
"metricPluginConf" : {
"pluginName": "mysql",
"pluginProp": {
"jdbcUrl":"jdbc:mysql://ip:port", (需要采集指标对应的数据库)
"database":"database", (需要采集指标对应的库名)
"schema":"schema",
"table":"FLINK_METRICS", (需要采集指标对应的表名,可以自定义)
"username":"username",
"password":"password",
"properties":{
}
}
}