Alertmanager

Alertmanager

虽然Prometheus/alerts页面可以看到所有的告警,但是还差最后一步:触发告警时自动发送通知。这是由Alertmanager来完成的,我们首先 下载并安装Alertmanager,和其他Prometheus的组件一样,Alertmanager也是开箱即用的。Alertmanager启动后默认可以通过http://localhost:9093/来访问,但是现在还看不到告警,因为我们还没有把Alertmanager配置到Prometheus中,我们回到Prometheus的配置文件prometheus.yml,添加下面几行:

alerting:
  alertmanagers:
  - scheme: http
    static_configs:
    - targets:
      - "192.168.0.107:9093"

这个配置告诉Prometheus,当发生告警时,将告警信息发送到AlertmanagerAlertmanager的地址为http://192.168.0.107:9093。也可以使用命名行的方式指定Alertmanager

$ ./prometheus -alertmanager.url=http://192.168.0.107:9093

告警信息推送

默认的配置文件alertmanager.yml

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块表示一些全局配置;route块表示通知路由,可以根据不同的标签将告警通知发送给不同的receiver,这里没有配置routes项,表示所有的告警都发送给下面定义的web.hook这个receiver;如果要配置多个路由,可以参考 这个例子:

routes:
  - receiver: "database-pager"
    group_wait: 10s
    match_re:
      service: mysql|cassandra

  - receiver: "frontend-pager"
    group_by: [product, environment]
    match:
      team: frontend

紧接着,receivers块表示告警通知的接收方式,每个receiver包含一个name和一个xxx_configs,不同的配置代表了不同的接收方式,Alertmanager内置了下面这些接收方式:

  • email_config
  • hipchat_config
  • pagerduty_config
  • pushover_config
  • slack_config
  • opsgenie_config
  • victorops_config
  • wechat_configs
  • webhook_config
上一页