linux怎么查看本机内存大小
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:
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
将更改好的 Alertmanager 配置加载到 Alertmanager:
# kubectl replace -f alertmanager-secret.yaml secret/alertmanager-main replaced
稍等几分钟即可在 Alertmanager 的 Web 界面看到更改的配置(Status):
也可以查看分组信息:
此时 Default receiver 配置的邮箱会收到两者的告警信息,如下所示:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~