Flink任务一般为实时不断运行的任务,如果没有任务监控,
任务异常时无法第一时间处理会比较麻烦。
这里通过调用API接口方式来获取参数,实现任务监控。
Flink任务监控(基于API接口编写shell脚本)
Flink部署模式主要分为Flink StandAlone 模式,flink-on-yarn 模式。
Flink Standalone模式。主要是通过调用Flink Rest API
flink-on-yarn 模式。主要是通过调用yarn的API
一 Flink Standalone 模式
通过 Flink Rest API 获取线上所有job 的id和status
curl -s http://xxx:8081/jobs |jq
其中jq,是linux一个很方便的json处理工具
官方给的定义是:
A jq program is a “filter”: it takes an input, and produces an output. There are a lot of builtin filters for extracting a particular field of an object, or converting a number to a string, or various other standard tasks.
通俗的说就是一个能够接受json,处理json,输出json的程序,反正很好用。
安装起来也非常的方便,直接使用yum即可安装。
yum install jq
获取到线上job的id,我们就可以查看这个job任务的详情。如图就可以获取到job任务名和状态。
curl -s http://xxx:8081/jobs/109c2c3e749dcc22157f74ce5973fa0d
二 flink-on-yarn 模式
当flink-on-yarn 部署时,需要通过yarn的api来获取如下图任务情况。
获取所有application
curl -s http://XXX:8088/ws/v1/cluster/apps
获取 state值为 RUNNING 的application任务
curl -s http://XXX:8088/ws/v1/cluster/apps?state=RUNNING
查看具体任务详情
获取这个任务单个信息
curl -s http://XXX:8088/ws/v1/cluster/apps/application_1619074605427_0063 |jq .app.state
到这里就介绍完使用API方式,获取任务状态,接下来基于上述方式,编写shell脚本监控flink任务。
三 编写shell 脚本
由于公司离线yarn和实时yarn 采用是分开的方式。
只需要监控实时yarn 任务有没有处于RUNNING,达到监控的目的
这里shell脚本也只记录,flink-on-yarn 这种部署方式任务监控
shell脚本水平有限,大家多多谅解,欢迎指导
shell脚本实现功能:
获取线运行job任务,记录到日志文件。下一次脚本调用时候读取日志文件,判断状态。
不是RUNNING,就告警同时重新记录日志。
#!/bin/bash
Joblist=`cat /opt/shell/logs/flink_job.log` #获取记录job的log文件