前言
flink 有自己的任务UI界面:http://127.0.0.1:8081/#/overview
在界面中可以详细看到每个任务的具体信息,但是如果任务运行失败的情况下,失败任务的信息在UI界面里只会显示一个小时并且没有实时的报警机制,在公司内部没有对线上任务实现平台化的情况下,我们可以依赖flink的API接口和钉钉的API接口实现对flink任务的实时报警。
需求
监控flink线上任务、实现钉钉群告警
简介
语言: Python 或者 Java
使用API:
flink监控API钉钉自定义机器人接入API
flink常用API
请求方法 | 接口 | 功能 | 参数 |
GET | /jobmanager/config | 获取集群配置 | |
GET | /jobmanager/metrics | 获取JM的metrics | get:获取指定metric的值,有多个值时用逗号隔开 |
GET | /jobs | 获取所有任务id及其运行状态 | |
GET | /jobs/metrics | 获取所有任务的metrics | get:获取指定metric的值,有多个值时用逗号隔开;其他支持参数:agg、jobs |
GET | /jobs/overview | 获取所有任务的概况 | |
GET | /jobs/:jobid | 获取指定jobid的任务详情 | jobid(例如e0e129bfb8c68d6a774d493e2d8f0ada) |
GET | /jobs/:jobid/checkpoints | 获取指定jobid的检查点统计信息 | jobid |
GET | /jobs/:jobid/checkpoints/config | 获取指定jobid的检查点配置 | jobid |
GET | /jobs/:jobid/checkpoints/details/:checkpointid | 获取指定jobid和checkpointid的检查点详情 | jobid、checkpointid |
GET | /jobs/:jobid/config | 获取指定jobid的任务配置 | jobid |
GET | /jobs/:jobid/exceptions | 获取指定jobid的异常信息 | jobid、maxExceptions |
GET | /jobs/:jobid/metrics | 获取指定jobid的metrics | jobid |
GET | /jobs/:jobid/vertices/:vertexid | 获取指定jobid和vertexid的算子节点的信息 | jobid、vertexid(例如bc764cd8ddf7a0cff126f51c16239658) |
GET | /jobs/:jobid/vertices/:vertexid/backpressure | 获取指定jobid和vertexid的算子节点的反压情况 | jobid、vertexid |
GET | /jobs/:jobid/vertices/:vertexid/taskmanagers | 获取任务管理器汇总的任务信息 | jobid、vertexid |
GET | /overview | 获取集群概况 | |
GET | /taskmanagers | 获取所有TM的概况 | |
GET | /taskmanagers/metrics | 获取TM的metrics | get:获取指定metric的值,有多个值时用逗号隔开 |
GET | /taskmanagers/:taskmanagerid | 获取指定taskmanagerid的详情 | taskmanagerid(例如container_1600830023237_0002_01_000002) |
GET | /taskmanagers/:taskmanagerid/metrics | 获取指定taskmanagerid的metrics | taskmanagerid |
GET | /jobs/:jobid/stop | 停止指定jobid的任务,并保存一个savepoint | jobid、drain(默认false)、targetDirectory(savepoint存储位置) |
GET | /jobs/:jobid/yarn-cancel | 停止指定jobid的任务 | jobid |
操作步骤
- /jobs/overview 使用获取所有任务的概况接口得到所有任务的运行状态
- 根据钉钉自定义机器人接入文档在钉钉群创建告警机器人
- 根据文档获取机器人信息接入API
- 循环执行每十秒获取异常flink任务的运行状态