flinkOnYarn并配置prometheus+grafana监控告警
一、相关服务版本:
flink版本:1.17.2
pushgateway版本:1.10.0
prometheus版本:3.0.0
grafana-v11.3.0
参考了网上的多个文档以及学习某硅谷的视频,总结了一下文档,希望对你有用,如有出入,欢迎评论沟通,博主看到后会第一时间回复。
二、安装flink
1、找一台安装有Yarn相关服务配置的服务器来安装flink服务。(主要是为了启动flink的历史服务器,可以查看成功或者失败的flink任务)
修改 conf/flink-conf.yaml 配置文件
jobmanager.archive.fs.dir: hdfs://bigdata/logs/flink-job
historyserver.web.address: hadoop112
historyserver.web.port: 8082
historyserver.archive.fs.dir: hdfs://bigdata/logs/flink-job
historyserver.archive.fs.refresh-interval: 5000
2、创建历史服务器数据目录:
hadoop fs -mkdir -p /logs/flink-job
3、在用户家目录中的.bash_profile 文件中添加环境变量
# flink相关配置
export HADOOP_CLASSPATH=`hadoop classpath`
不行的话:再添加hadoop目录环境变量
HADOOP_HOME=/opt/module/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
4、启动历史服务器
bin/historyserver.sh start
bin/historyserver.sh stop
历史服务器对应的web端口:
http://hadoop102:8082
5、尝试去提交flinkOnYarn作业
bin/flink run-application -t yarn-application -c com.atguigu.source.DataGeneratorDemo FlinkTutorial-1.17.2-1.0-SNAPSHOT.jar
6、修改conf/flink-conf.yaml 文件增加监控配置
metrics.reporter.promgateway.factory.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporterFactory
metrics.reporter.promgateway.host: hadoop112 # 修改为你的promgateway所在的IP地址
metrics.reporter.promgateway.port: 9091 # 对应的promgateway的端口
metrics.reporter.promgateway.jobName: myJob # 这个jobName也可以在后面提交具体任务的时候更改
metrics.reporter.promgateway.randomJobNameSuffix: true # 用于在job_name后生成一个随机字符串,用于区分同jobName名的不同任务
metrics.reporter.promgateway.deleteOnShutdown: false # 为true,当flink任务杀死,会一并将在promgateway上的记录删除。为false,不会删除。
#metrics.reporter.promgateway.groupingKey: k1=v1;k2=v2 # key和value值可以任意,用来区分不同的业务job任务,可以再监控时进行任务筛选
metrics.reporter.promgateway.interval: 30 SECONDS #当前flink任务运行参数多久上报一次。
三、配置监控告警 prometheus + grafana
1、下载prometheus 和 pushgateway
1.1、解压运行pushgateway,这里用的pushgateway-1.10.0
nohup ./pushgateway --web.listen-address :9091 > ./pushgateway.log 2>&1 &
1.2、解压prometheus-3.0.0,修改 prometheus.yml 配置文件,增加如下配置
- job_name: 'pushgateway'
scrape_interval: 10s
honor_labels: true #加上此配置exporter节点上传数据中的⼀些标签将不会被pushgateway节点的相同标签覆盖
static_configs:
- targets: ['localhost:9091'] # pushgateway的服务器地址
labels:
instance: pushgateway
注意:yml文件格式
pushgateway的 web端口:
http://hadoop112:9091
可以查看到当前提交的flink任务的实时监控指标。
1.3、启动prometheus服务
nohup ./prometheus --config.file=prometheus.yml > ./prometheus.log 2>&1 &
prometheus web端口:
http://hadoop112:9090/targets
可以看到pushgateway 状态为up,正常。
2、安装grafana
2.1、下载并解压,并启动grafana
nohup ./bin/grafana-server web > ./grafana.log 2>&1 &
2.2、web端口
http://hadoop112:3000
默认账户:admin
默认密码:admin
2.3、配置仪表板
添加prometheus数据源
配置仪表板
这里我使用的flink_jobmanager_job_uptime 监控指标参数来判断当前任务是否存活。这里的k1就是前面在flink配置文件中配置的metrics.reporter.promgateway.groupingKey参数,当然也可以用其他字段进行筛选,
计算逻辑:当前值减去30s前的数据值,再除以1000。
((flink_jobmanager_job_uptime{ k1="v7"})-(flink_jobmanager_job_uptime{ k1="v7"} offset 30s))/1000
告警规则如下:
出发告警的条件:
1、当最新的数据值小于5
2、评估周期2分钟都小于5,
3、并且连续4分钟都小于5 ,就触发告警。
告警方式可以使邮件或者飞书等其他平台。
如有帮助,欢迎点赞加评论。