Skip to main content
  1. Posts/

Alertmanager 告警配置

294 words·2 mins
AlertManager
Table of Contents

group_wait(default: 30s)
#

How long to initially wait to send a notification for a group of alerts. Allows to wait for an inhibiting alert to arrive or collect more initial alerts for the same group. (Usually ~0s to few minutes.) 一组告警第一次发送之前等待的时间。用于等待抑制告警,或等待同一组告警采集更多初始告警后一起发送。(一般设置为0秒 ~ 几分钟)

group_interval(default: 5m)
#

How long to wait before sending a notification about new alerts that are added to a group of alerts for which an initial notification has already been sent. (Usually ~5m or more.) 一组已发送初始通知的告警接收到新告警后,再次发送通知前等待的时间(一般设置为5分钟或更多)

repeat_interval(default: 4h)
#

How long to wait before sending a notification again if it has already been sent successfully for an alert. (Usually ~3h or more). 一条成功发送的告警,在再次发送通知之前等待的时间。 (通常设置为3小时或更长时间)。

global:
	scrap_interval 从目标抓取监控数据间隔
    scrap_timeout 从目标抓取数据超时时间
	evaluation_interval 告警规则评估时间间隔
route:
	group_wait 初次发送告警的等待时间
	group_interval 同一个组其他新发生的告警发送时间间隔
	repeat_interval 重复发送同一个告警的时间间隔

示例
#

# group_wait: 10s
# group_interval: 30m
# repeat_interval: 50m

group_wait 设置为 2 秒:表示如果在 2 秒内收到相同的告警,系统将等待将它们归为同一个组。
group_interval 设置为 1 分钟:表示在生成了汇总告警后,系统将等待 1 分钟再次检查是否有新的相同类型的告警需要汇总。
repeat_interval 设置为 2 分钟:表示在系统生成了一条告警后,如果在 2 分钟内又收到了相同类型的告警,系统会等待 2 分钟再次生成一条相同类型的告警。

告警过程
#

  1. alertmanager收到告警后,等待group_wait(10s),发送第一次通知
  2. 未达到group_interval(30m 10s),休眠
  3. 达到group_interval(30m 10s)时,小于repeat_interval(50m 10s),休眠
  4. 到下一个group_interval(60m 10s),大于repeat_interval(50m 10s),发送第二次通知

Firing(0s) - 第一次通知(10s) - 第二次通知(60m 10s)

  1. 当repeat_interval小于group_interval时,repeat_interval不影响告警
  2. 当repeat_interval大于group_interval,且不为group_interval倍数,影响告警
  3. 当repeat_interval大于group_interval,且为group_interval倍数,可能影响告警

告警规则
#

groups:
- name: metrics_service_name
  rules:
  - alert: alertname
    expr: round(((topk(1,metrics_1{name="TEST"}) and rate(metrics_1{name="TEST"}[30s])!=0 )- on (name) group_left () metrics_2{name="TEST"}),0.001) > 0.7
    for: 0s
    labels:
      alertname: alertname
      severity: critical
      instance: 127.0.0.1:80
      service: backend
      errorcode: E60001
    annotations:
      metrics: metrics_1
      summary: |
        名称: {{ $labels.name }}, 
        X: {{ $labels.x }}, 
        metrics_3: {{ with query (printf "metrics_3{name='%s'}" $labels.name) }}{{ . | first | value }}{{ end }} unit, 
        差值: {{ $value }},
        value: {{ with query (printf "topk(1, metrics_1{name='%s', x='%s'})" $labels.name $labels.x) }}{{ if . | len }}{{ printf "%.2f" (value (index . 0)) }}{{ else }}N/A{{ end }}{{ end }},
        metrics_2: {{ with query (printf "metrics_2{name='%s'}" $labels.name) }}{{ . | first | value }}{{ end }}        
      source: alertname

热更新配置
#

curl -X POST http://localhost:9090/-/reload

Related

VMware ESXi 虚拟机安装
30 words·1 min
Linux
安装步骤参考 # 选择系统安装磁盘 填写资源分配 勾选cd/dvd驱动器,选择数据存储iso文件。 选择镜像 选择ubuntu20.
Xshell Color Schemes
28 words·1 min
Kiga-Hub
Shell Tools
Xshell 主题导入 # filename: ubuntu.
Ansible: install NTP service
1536 words·8 mins
Ansible
部署目标机配置 # Subnet Ip 配置为 192.
Docker package usage
79 words·1 min
docker
镜像打包 # 从工作站拉取拉取镜像到本地
Ansible: Failed to connect to the host via ssh: Permission denied
410 words·2 mins
Ansible
Failed to connect to the host via ssh: Permission denied # 需要设置免密通信, 通过ssh-keygen命令执行生成密钥对