Alertmanager配置概述

摘要:
smtp_smarthost:发件人对应邮件提供商的smtp地址。smtp_auth_Username:发件人的登录用户名,默认情况下与发件人的地址一致。smtp_auth_Password:发件人的登录密码,有时是授权码。smtp_equire_Tls:是否需要Tls协议。wechat_api_密码:密码wechat_api _ corp_ Id:corpid信息。模板配置模板用于控制我们发送的消息的格式控制和内容组织。我们可以自定义一个模板,该模板引用alertmanager提供的一些内置变量,并最终完成消息的呈现。

Alertmanager配置概述

Alertmanager主要负责对Prometheus产生的告警进行统一处理,因此在Alertmanager配置中一般会包含以下几个主要部分:

  • 全局配置(global):用于定义一些全局的公共参数,如全局的SMTP配置,Slack配置等内容;
  • 模板(templates):用于定义告警通知时的模板,如HTML模板,邮件模板等;
  • 告警路由(route):根据标签匹配,确定当前告警应该如何处理;
  • 接收人(receivers):接收人是一个抽象的概念,它可以是一个邮箱也可以是微信,Slack或者Webhook等,接收人一般配合告警路由使用;
  • 抑制规则(inhibit_rules):合理设置抑制规则可以减少垃圾告警的产生

默认配置文件如下

[root@node00 ~]# cd /usr/local/prometheus/alertmanager/
[root@node00 alertmanager]# cat alertmanager.yml.default 
global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://127.0.0.1:5001/'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

global配置:

    global:
      [ resolve_timeout: <duration> | default = 5m ]
      [ smtp_from: <tmpl_string> ] 
      [ smtp_smarthost: <string> ] 
      [ smtp_hello: <string> | default = "localhost" ]
      [ smtp_auth_username: <string> ]
      [ smtp_auth_password: <secret> ]
      [ smtp_auth_identity: <string> ]
      [ smtp_auth_secret: <secret> ]
      [ smtp_require_tls: <bool> | default = true ]
      [ slack_api_url: <secret> ]
      [ victorops_api_key: <secret> ]
      [ victorops_api_url: <string> | default = "https://alert.victorops.com/integrations/generic/20131114/alert/" ]
      [ pagerduty_url: <string> | default = "https://events.pagerduty.com/v2/enqueue" ]
      [ opsgenie_api_key: <secret> ]
      [ opsgenie_api_url: <string> | default = "https://api.opsgenie.com/" ]
      [ hipchat_api_url: <string> | default = "https://api.hipchat.com/" ]
      [ hipchat_auth_token: <secret> ]
      [ wechat_api_url: <string> | default = "https://qyapi.weixin.qq.com/cgi-bin/" ]
      [ wechat_api_secret: <secret> ]
      [ wechat_api_corp_id: <string> ]
      [ http_config: <http_config> ]
  • resolve_timeout:  这个解释有点绕,简单说就是在报警恢复的时候不是立马发送的,在接下来的这个时间内,如果没有此报警信息触发,才发送报警恢复消息。 默认值为5m。
  • smtp_from: 发件人邮箱地址。
  • smtp_smarthost: 发件人对应邮件提供商的smtp地址。
  • smtp_auth_username: 发件人的登陆用户名,默认和发件人地址一致。
  • smtp_auth_password:  发件人的登陆密码,有时候是授权码。
  • smtp_require_tls: 是否需要tls协议。默认是true。
  • wechart_api_url:  微信api地址。
  • wechart_api_secret: 密码
  • wechat_api_corp_id: corp id信息。

templates配置

模板用于控制我们发送的消息格式控制和内容组织的,我们可以自定义一个模板, 模板中引用alertmanager提供的一些内置变量,最终完成消息的渲染。

样例如下:

# alertmanager配置文件
templates:
- '/usr/local/prometheus/alertmanager/templates/myorg.tmpl'

# cat /usr/local/prometheus/alertmanager/templates/myorg.tmpl
{{ define "slack.myorg.text" }}https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}{{ end}}

receivers配置

receivers:
- name: 'email-zhaojiedi'
  email_configs:
  - to: '1072892917@qq.com'

- name: 'hipchat-zhaojiedi'
  hipchat_configs:
  - auth_token: <auth_token>
    room_id: 85
    message_format: html
    notify: true
- name: 'pagerduty-zhaojiedi'
  pagerduty_configs:
  - service_key: <team-DB-key>
- name: 'opt-webhook'
  send_resolved: true 
  url: "http://xxxxx.xxx.com/5002/dingding/xxx/send/

官方提供很多receviers的配置格式, 详细的参考官方文档: https://prometheus.io/docs/alerting/configuration/#receiver

route配置

routes:
  - match_re:
      service: ^(foo1|foo2|baz)$
    receiver: team-X-mails
    routes:
    - match:
        severity: critical
      receiver: team-X-pager
      
  - match:
      service: files
    receiver: team-Y-mails

    routes:
    - match:
        severity: critical
      receiver: team-Y-pager


  - match:
      service: database
    receiver: team-DB-pager
    # Also group alerts by affected database.
    group_by: [alertname, cluster, database]
    routes:
    - match:
        owner: team-X
      receiver: team-X-pager
      continue: true
    - match:
        owner: team-Y
      receiver: team-Y-pager

这个配置文件时从alertmanager官方的github上面找到的。 地址如下:  https://github.com/prometheus/alertmanager/blob/master/doc/examples/simple.yml , 我们可以通过官方的工具来看下这个路由树是什么样的。

Alertmanager配置概述第1张

 inhibit_rules配置

我们知道alertmanager对报警有抑制工程, 可以通过一定的规则,抑制一些报警消息,比如如下场景。

场景1 : 磁盘报警,80%报警设置为info级别,90设置为警告级别, 如果2个消息都发送,那就多余了。 我们需要设置相同报警高级别压制低级别的报警,只发送高级别的报警信息。

场景2: 节点宕机了, 在这个节点上面的各种服务报警都会触发的, 如果都发送不太方便定位问题,还容易带来巨大的压力。可以配置节点宕机压制节点层面的其他报警信息。

样例配置如下:

inhibit_rules:
- source_match:
    severity: 'critical'
  target_match:
    severity: 'warning'
  # Apply inhibition if the alertname is the same.
  equal: ['alertname' ]

通过上面的配置,可以在alertname相同的情况下,critaical的报警会抑制warning级别的报警信息。

静默配置

静默配置是通过web界面配置的, 如下图。

Alertmanager配置概述第2张

 进入静默配置页面

Alertmanager配置概述第3张

免责声明:文章转载自《Alertmanager配置概述》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇RTP协议之Header结构解析htpasswd用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vb mid函数的使用方法详细介绍

mid函数从字符串中返回指定数量的字符。 语法 Mid(string, start[, length]) 对语法的理解就是:返回string中从start开始的后面的length长度的字符串 string是必需的参数,如果string包含Null,返回结果也将是Null。 start必需的参数,string中被取出部分的字符位置。需要注意的是如果start超...

rabbitMQ第二篇:java简单的实现RabbitMQ

前言:在这里我将用java来简单的实现rabbitMQ。下面我们带着下面问题来一步步的了解和学习rabbitMQ。 1:如果消费者连接中断,这期间我们应该怎么办 2:如何做到负载均衡 3:如何有效的将数据发送到相关的接收者?就是怎么样过滤 4:如何保证消费者收到完整正确的数据 5:如何让优先级高的接收者先收到数据 一:"Hello RabbitMQ" 下面...

Java: 获取当前执行位置的文件名/类名/方法名/行号

在 JAVA 程序有时需要获取当前代码位置, 于是就利用 Thread.currentThread().getStackTrace() 写了下面这个工具类, 用来获取当前执行位置处代码的文件名/类名/方法名/行号. 当然通过 new Throwable().getStackTrace() 也能得到同样信息, 在处理异常时用这种方法还行, 否则需要 new...

RestTemplate 发送Post 多个参数请求

        MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<>(); requestEntity.add("clientFlag", clientFlag); requ...

strchr,wcschr 和strrchr, wcsrchr,_tcschr,_tcsrchr功能

       strchr,wcschr 和strrchr, wcsrchr,_tcschr,_tcsrchr功能 (1) char *strchr( const char *string, int c );wchar_t *wcschr( const wchar_t *string, wchar_t c );Find a character in...

Spring中使用RedisTemplate操作Redis(spring-data-redis)

RedisTemplate如何检查一个key是否存在? return getRedisTemplate().hasKey(key); 由一个问题,复习了一下redis 抄自: https://www.jianshu.com/p/7bf5dc61ca06大部分都试了一遍 Redis 数据结构简介 Redis可以存储键与5种不同数据结构类型之间的映射,这5种数...