作者: 唐恺
概述
对数据加工任务配置监控,可以发现数据流量、加工逻辑、系统运行的一些潜在异常,帮助业务及时做好异常恢复。
本文大部分监控指标基于“数据加工诊断”仪表盘(参考规则洞察仪表盘)。在系统层面关注:流式加工的消费延迟、是否有异常报错。业务层面上,处理日志行数或写出日志行数是可以被考虑的指标。
进入数据加工任务所属project,选择“仪表盘”-“数据加工诊断”,可以根据业务需求选择以下指标设置告警。
加工延迟
- 选择“shard消费延迟 (秒)”图表
- 设置触发条件
例如,选择阈值为120秒时告警:
[delay (s)] > 120
- 设置通知方式
本文以钉钉webhook为例,更多通知方式参考告警通知方式。
- 告警通知
异常报错
- 选择“异常详情”图表
- 设置触发条件
例如,希望在出现ERROR时告警:
- 设置通知方式
- 告警通知
ERROR日志一般由加工逻辑或代码上引发,可以在修改代码并重启(停止、启动)作业后观察是否还有新的错误。
加工流量(绝对值)
- 选择“加工速率 (lines/s)”图表
- 设置触发条件
例如,当每秒处理日志条数少于4万行告警时告警(每种数据的流量特征不同,请根据实际情况设置有效的告警条件):
accept < 40000
- 设置通知方式
- 告警通知
加工流量(日同比)
- 自定义监控指标(图表)
进入数据加工任务所属project,选择logstore internal-etl-log,使用如下SQL计算每5分钟的写出日志行数与昨日同比的指标:
__topic__: __etl-log-status__ AND __tag__:__schedule_type__: Resident and event_id: "shard_worker:metrics:checkpoint" |
select dt, today, yesterday, round((today - yesterday) * 100.0 / yesterday, 3) as inc_ration from
(select dt, (case when diff[1] is null then 0 else diff[1] end) as today, (case when diff[2] is null then 0 else diff[2] end) as yesterday from
(select dt, compare("delivered lines", 86400) as diff from
(select date_format(__time__ - __time__ % 300, '%H:%i') as dt, sum("progress.delivered") as "delivered lines" from log group by dt order by dt asc limit 5000)
group by dt order by dt asc limit 5000))
保存该查询条件到仪表盘etl-monitor:
你还可以修改SQL以设置更精确的告警指标,例如只对任务ID:06f239b7362ad238e613abb3f7fe3c87设置告警:
__topic__: __etl-log-status__ AND __tag__:__schedule_type__: Resident and event_id: "shard_worker:metrics:checkpoint" and __tag__:__schedule_id__: 06f239b7362ad238e613abb3f7fe3c87 |
select ...
- 设置触发条件
例如,当日志处理速率比昨日下降40%时告警:
inc_ration < (-40)
- 设置通知方式
- 告警通知
告警相关操作
可以在告警列表中进行删除或禁用通知或修改操作:
更多告警使用指南请参考设置告警。
进一步参考
欢迎扫码加入官方钉钉群获得实时更新与阿里云工程师的及时直接的支持: