操作场景
在使用 Flink 过程中需要对 Flink 任务运行状态进行监控,以便了解 Flink 任务是否正常运行,排查 Flink 故障等。 Prometheus 监控服务对 push gateway 做了集成,支持 Flink 写入 metrics,并提供了开箱即用的 Grafana 监控大盘。
前提条件
1. 购买的腾讯云弹性 MapReduce(以下简称 EMR)产品包含 Flink 组件,并在实例上跑 Flink 任务。
2. 使用与 EMR 相同的地域及私有网络 VPC 购买腾讯云 Prometheus 监控实例。
操作步骤
产品接入
获取 PushGateway 访问配置
1. 登录 腾讯云可观测平台。
2. 在左侧菜单栏中单击 Prometheus 监控。
3. 在 Prometheus 监控页面中,选择对应的“实例” > 基本信息 > 实例信息页面,获取 Pushgateway 地址和 Token。
4. 在 账号信息 页面获取 APPID。
修改 Flink 配置
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.PrometheusPushGatewayReportermetrics.reporter.promgateway.jobName: climatePredictmetrics.reporter.promgateway.randomJobNameSuffix:truemetrics.reporter.promgateway.interval: 60 SECONDSmetrics.reporter.promgateway.groupingKey:instance_id=emr-xxxxmetrics.reporter.promgateway.host: 172.xx.xx.xxmetrics.reporter.promgateway.port: 9090metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.user: appidmetrics.reporter.promgateway.password: token
安装 Flink PushGateway 插件
官方包中的 push gateway 插件目前还不支持配置认证信息,但是托管服务需要认证才允许写入,建议使用我们提供的 jar 包。我们也向 flink 官方提交了支持认证的 PR。
1. 为防止类冲突,如果已经使用 Flink 官方插件,需要先执行以下命令删除官方插件。
cd /usr/local/service/flink/librm flink-metrics-prometheus*jar
2. 在 弹性 MapReduce 控制台 > 选择对应的“实例” > 集群资源 > 资源管理 > Master 页面,查看 Master 节点。
3. 单击实例 ID 跳转至 CVM 控制台,登录 CVM 执行以下命令安装插件。
cd /usr/local/service/flink/libwget 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 监控详情。
告警接入
1. 登录 腾讯云可观测平台。
2. 在左侧菜单栏中单击 Prometheus 监控。选择对应 Prometheus 实例进入管理页面。
3. 单击告警策略,可以添加相应的告警策略,详情请参见 新建告警策略。