文章目录加载中
如何设计定时告警任务?
# 任务流程
- 解析告警规则
- 初始化时启动告警规则,向 elk 查询:检测查询语句和告警规则是否有问题
- 根据 interval 字段开启定时查询器
- 查询结果与 monit.thresholds 比较,不在范围内则发送告警
# 告警规则
version: v2
dataSource:
es:
index: cloudbase_gateway_log-*
rules:
# todo:thresholds 调整为 [0, 10]
# 由于数据流没测完限频
- title: 集群初始化失败
alarm:
qcloud:
type: TCB-GATEWAY-ALARM
interval: 1m
tags: TCB
period:
length: 1m
count: 1
monit:
type: Metric
thresholds: [0, 100]
args:
filters:
query: logType:describeClusterFailed AND kubernetes.owner_name:cloudbase-gateway
- title: TKE 请求转发异常环境过多
alarm:
qcloud:
type: TCB-GATEWAY-ALARM
interval: 1m
tags: TCB
period:
length: 1m
count: 1
monit:
type: Metric
thresholds: [0, 10]
args:
filters:
query: logType:tkeError AND kubernetes.owner_name:cloudbase-gateway
aggs: '{"result":{"cardinality":{"field":"envId"}}}'
version 指定解析器版本,向后兼容。
dataSource:指定 ELK 日志索引,否则会搜索所有索引的日志。
rules:每个 rule 都会启动一个轮询任务器。
rule.monit:query 是传给 ELK 的参数,aggs 是用来做聚合。
rule.period:分别统计[now, now - count] ~ [now, now - count*length]之间的满足条件的告警数量,都要满足 period 条件才不会发出告警。
# 更多规则
除了绝对值,告警还应该考虑到百分比或者相对值。
相对值可以用来告警性能:1-2 小时平均耗时(costTime)100ms,2-3 小时平均耗时(costTime)500ms。说明有问题,要发送告警。
本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog