文章目录加载中

如何设计定时告警任务?

# 任务流程

  1. 解析告警规则
  2. 初始化时启动告警规则,向 elk 查询:检测查询语句和告警规则是否有问题
  3. 根据 interval 字段开启定时查询器
  4. 查询结果与 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