前言

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

操作步骤

  1. /jobs/overview 使用获取所有任务的概况接口得到所有任务的运行状态
  2. 根据钉钉自定义机器人接入文档在钉钉群创建告警机器人
  3. 根据文档获取机器人信息接入API
  4. 循环执行每十秒获取异常flink任务的运行状态