Flink 接入

最近更新时间:2024-08-16 11:52:01

我的收藏

操作场景

在使用 Flink 过程中需要对 Flink 任务运行状态进行监控,以便了解 Flink 任务是否正常运行,排查 Flink 故障等。 Prometheus 监控服务对 push gateway 做了集成,支持 Flink 写入 metrics,并提供了开箱即用的 Grafana 监控大盘。

前提条件

1. 购买的腾讯云弹性 MapReduce(以下简称 EMR)产品包含 Flink 组件,并在实例上跑 Flink 任务。
2. 使用与 EMR 相同的地域及私有网络 VPC 购买腾讯云 Prometheus 监控实例

操作步骤

产品接入

获取 PushGateway 访问配置

2. 在左侧菜单栏中单击 Prometheus 监控
3. 在 Prometheus 监控页面中,选择对应的“实例” > 基本信息 > 实例信息页面,获取 Pushgateway 地址和 Token。



4. 账号信息 页面获取 APPID。
1. 进入 弹性 MapReduce > 选择对应的“实例” > 集群服务页面。
2. 找到 Flink 配置项,在右侧选择操作 > 配置管理,进入配置管理页面。
3. 在页面右侧单击新增配置项,依次添加以下配置。
配置名
默认
类型
描述
建议
metrics.reporter.promgateway.class
字符串
实现 metrics 导出到 push gateway 的 Java 类名
-
metrics.reporter.promgateway.jobName
字符串
push 任务名
指定方便理解的字符串
metrics.reporter.promgateway.randomJobNameSuffix
true
布尔
是否在任务名后添加随机字符串
需设置为 true,如果不添加, Flink 任务间 metrics 会相互覆盖
metrics.reporter.promgateway.groupingKey
字符串
添加到每个 metrics 的全局 label,格式为 k1=v1;k2=v2
添加 EMR 实例 ID 方便区分不同实例的数据,例如 instance_id=emr-xxx
metrics.reporter.promgateway.interval
时间
推送 metrics 的时间间隔,例如30秒
建议设置在1分钟左右
metrics.reporter.promgateway.host
字符串
push gateway 的服务地址
控制台上 prometheus 实例的服务地址
metrics.reporter.promgateway.port
-1
整数
push gateway 服务端口
控制台上 prometheus 实例的服务端口
metrics.reporter.promgateway.needBasicAuth
false
布尔
push gateway 服务是否需要认证
设置为 true,prometheus 监控服务的 push gateway 需要认证
metrics.reporter.promgateway.user
字符串
认证的用户名
用户的 APPID
metrics.reporter.promgateway.password
字符串
认证的密码
控制台上 prometheus 实例的访问 Token
metrics.reporter.promgateway.deleteOnShutdown
true
布尔
Flink 任务执行完后是否删除 push gateway 上对应的 metrics
设置为 true
配置示例如下:
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.jobName: climatePredict
metrics.reporter.promgateway.randomJobNameSuffix:true
metrics.reporter.promgateway.interval: 60 SECONDS
metrics.reporter.promgateway.groupingKey:instance_id=emr-xxxx
metrics.reporter.promgateway.host: 172.xx.xx.xx
metrics.reporter.promgateway.port: 9090
metrics.reporter.promgateway.needBasicAuth: true
metrics.reporter.promgateway.user: appid
metrics.reporter.promgateway.password: token
官方包中的 push gateway 插件目前还不支持配置认证信息,但是托管服务需要认证才允许写入,建议使用我们提供的 jar 包。我们也向 flink 官方提交了支持认证的 PR。
1. 为防止类冲突,如果已经使用 Flink 官方插件,需要先执行以下命令删除官方插件。
cd /usr/local/service/flink/lib
rm flink-metrics-prometheus*jar
2. 弹性 MapReduce 控制台 > 选择对应的“实例” > 集群资源 > 资源管理 > Master 页面,查看 Master 节点。
3. 单击实例 ID 跳转至 CVM 控制台,登录 CVM 执行以下命令安装插件。
cd /usr/local/service/flink/lib
wget https://rig-1258344699.cos.ap-guangzhou.myqcloud.com/flink/flink-metrics-prometheus_2.11-auth.jar -O flink-metrics-prometheus_2.11-auth.jar

验证

1. 在 Master 节点上使用 hadoop 这个用户使用 flink run 来提交一个任务,参考:
sudo -H -u hadoop bash -c 'flink run /usr/local/service/flink/examples/streaming/StateMachineExample.jar'
2. 然后通过如下命令查看任务日志。
grep metrics /usr/local/service/flink/log/flink-hadoop-client-*.log
3. 日志中包含下图内容,表示配置加载成功:


注意
集群中已经提交的任务,由于使用的是旧配置文件,因此不会上报 metrics。

查看监控

1. 在对应 Prometheus 实例 > 集成中心中找到 Flink 监控,安装对应的 Grafana Dashboard 即可开启 Flink 监控大盘。
2. 进入 Grafana,单击

展开 Flink 监控面板。


3. 单击 Flink Job List 查看监控。


4. 单击表格中的 Job 名Job ID 列值,查看 Job 监控详情。


5. 单击右上角的 Flink 集群,查看 Flink 集群监控。


6. 单击表格中的 Task 名列值,查看 Task 监控详情。



告警接入

2. 在左侧菜单栏中单击 Prometheus 监控。选择对应 Prometheus 实例进入管理页面。
3. 单击告警策略,可以添加相应的告警策略,详情请参见 新建告警策略