Alertmanager ——实战

网友投稿 330 2022-09-09

Alertmanager ——实战

一、Alertmanager 配置文件解析

首先看一下一个简单的 Alertmanager 的配置示例:

global: resolve_timeout: 5m ...receiver: Default group_by: - namespace - job - alertname routes: - receiver: Watchdog match: alertname: Watchdog - receiver: Critical match: severity: critical group_wait: 30s group_interval: 5m repeat_interval: 10minhibit_rules:- source_match: severity: critical target_match_re: severity: warning|info equal: - namespace - alertname- source_match: severity: warning target_match_re: severity: info equal: - namespace - alertnamereceivers: - name: Default email_configs: - send_resolved: true to: kubernetes_guide@163.com from: kubernetes_guide@163.com hello: 163.com smarthost: smtp.163.com:465 auth_username: kubernetes_guide@163.com auth_password: headers: From: kubernetes_guide@163.com Subject: '{{ template "email.default.subject" . }}' To: kubernetes_guide@163.com html: '{{ template "email.default.html" . }}' require_tls: false- name: Watchdog- name: Criticaltemplates: []

Alertmanager 的配置主要分为五大块:

二、Alertmanager 路由规则

route: receiver: Default group_by: - namespace - job - alertname routes: - receiver: Watchdog match: alertname: Watchdog - receiver: Critical match: severity: critical group_wait: 30s group_interval: 5m repeat_interval: 10m

receiver:告警的通知目标,需要和 receivers 配置中 name 进行匹配。需要注意的是route.routes 下也可以有 receiver 配置,优先级高于route.receiver 配置的默认接收人,当告警没有匹配到子路由时,会使用 route.receiver 进行通知,比如上述配置中的Default;group_by:分组配置,值类型为列表。比如配置成['job', 'severity'],代表告警信息包含job 和 severity 标签的会进行分组,且标签的 key 和 value 都相同才会被分到一组; continue:决定匹配到第一个路由后,是否继续后续匹配。默认为 false,即匹配到第一个子节点后停止继续匹配; match:一对一匹配规则,比如 match 配置的为 job: mysql,那么具有 job=mysql 的告警会进入该路由; match_re:和 match 类似,只不过是 match_re 是正则匹配; group_wait:告警通知等待,值类型为字符串。若一组新的告警产生,则会等 group_wait后再发送通知,该功能主要用于当告警在很短时间内接连产生时,在 group_wait 内合并为单一的告警后再发送,防止告警过多,默认值 30s; group_interval:同一组告警通知后,如果有新的告警添加到该组中,再次发送告警通知的时间,默认值为 5m; repeat_interval:如果一条告警通知已成功发送,且在间隔repeat_interval 后,该告警仍然未被设置为 resolved,则会再次发送该告警通知,默认值 4h。

三、Alertmanager 邮件通知

找到 Alertmanager 的配置文件:

[root@k8s-master01 kube-prometheus]# cd manifests/[root@k8s-master01 manifests]# ls alertmanager-secret.yaml alertmanager-secret.yaml# cat alertmanager-secret.yaml apiVersion: v1kind: Secretmetadata: labels: alertmanager: main app.kubernetes.io/component: alert-router app.kubernetes.io/name: alertmanager app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 0.21.0 name: alertmanager-main namespace: monitoringstringData: alertmanager.yaml: |- "global": "resolve_timeout": "5m"...

之后在 alertmanager-secret.yaml 文件的 global 添加配置如下:

alertmanager.yaml: |- "global": "resolve_timeout": "5m" smtp_from: "kubernetesxxx@163.com" smtp_smarthost: "smtp.163.com:465" smtp_hello: "163.com" smtp_auth_username: "kubernetesxxx@163.com" smtp_auth_password: "QJUYMWJXXX" smtp_require_tls: false

之后将名称为 Default 的 receiver 配置更改为邮件通知,修改 alertmanager-secret.yaml 文件 的 receivers 配置如下:

"receivers": - "name": "Default" "email_configs": - to: "notification@163.com" send_resolved: true - "name": "Watchdog" - "name": "Critical"

email_configs:代表使用邮件通知; to:收件人,此处为 notification@163.com,可以配置多个,逗号隔开; send_resolved:告警如果被解决是否发送解决通知。接下来分析一下路由规则(默认分组只有 namespace,在此添加上 job 和 alertname,当然不添加也是可以的):

"route": "group_by": - "namespace" - "job" - "alertname" "group_interval": "5m" "group_wait": "30s" "receiver": "Default" "repeat_interval": "10m" "routes": - "match": "alertname": "Watchdog" "receiver": "Watchdog" - "match": "severity": "critical" "receiver": "Critical"

可以通过 Alertmanager 提供的 Web UI 查看分组信息,和 Prometheus 一致,将 Alertmanager 的 Service 更改为 NodePort:

# kubectl edit svc -n monitoring alertmanager-main

查看监听的端口号:

# kubectl get svc -n monitoring alertmanager-main NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEalertmanager-main NodePort 192.168.92.94 9093:30409/TCP 10d

将更改好的 Alertmanager 配置加载到 Alertmanager:

# kubectl replace -f alertmanager-secret.yaml secret/alertmanager-main replaced

稍等几分钟即可在 Alertmanager 的 Web 界面看到更改的配置(Status):

也可以查看分组信息:

此时 Default receiver 配置的邮箱会收到两者的告警信息,如下所示:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DoMarketing-营销智库:卖面小哥陆正耀“复仇”瑞幸咖啡?
下一篇:k8s学习笔记-service
相关文章

 发表评论

暂时没有评论,来抢沙发吧~