kubernetes operator安装 前提:创建企业微信,创建应用

    然后配置altermanager.yaml

    1. global:
    2. resolve_timeout: 5m
    3. receivers:
    4. - name: wechat
    5. wechat_configs:
    6. - agent_id: "100000x"
    7. api_secret: Nm7PRrxxxxG8EpkyWuXDAWMLmFo
    8. corp_id: wwf9d3833cd66f34d8
    9. send_resolved: true
    10. to_user: Joker
    11. route:
    12. group_by:
    13. - job
    14. group_interval: 5m
    15. group_wait: 30s
    16. receiver: wechat
    17. repeat_interval: 12h
    18. routes:
    19. - match:
    20. alertname: Watchdog
    21. receiver: wechat

    然后删除原有的alertmanager-main

    1. kubectl delete secret alertmanager-main -n monitoring

    重新创建

    1. kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring

    然后就可以收到告警了
    image.png

    不过现在这个告警不好看,我们可以自定义模板。

    创建一个template.tmp1的文件。如下

    1. {{ define "wechat.default.message" }}
    2. {{- if gt (len .Alerts.Firing) 0 -}}
    3. {{- range $index, $alert := .Alerts -}}
    4. {{- if eq $index 0 }}
    5. ==========异常告警==========
    6. 告警类型: {{ $alert.Labels.alertname }}
    7. 告警级别: {{ $alert.Labels.severity }}
    8. 告警详情: {{ $alert.Annotations.message }}{{ $alert.Annotations.description}};{{$alert.Annotations.summary}}
    9. 故障时间: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    10. {{- if gt (len $alert.Labels.instance) 0 }}
    11. 实例信息: {{ $alert.Labels.instance }}
    12. {{- end }}
    13. {{- if gt (len $alert.Labels.namespace) 0 }}
    14. 命名空间: {{ $alert.Labels.namespace }}
    15. {{- end }}
    16. {{- if gt (len $alert.Labels.node) 0 }}
    17. 节点信息: {{ $alert.Labels.node }}
    18. {{- end }}
    19. {{- if gt (len $alert.Labels.pod) 0 }}
    20. 实例名称: {{ $alert.Labels.pod }}
    21. {{- end }}
    22. ============END============
    23. {{- end }}
    24. {{- end }}
    25. {{- end }}
    26. {{- if gt (len .Alerts.Resolved) 0 -}}
    27. {{- range $index, $alert := .Alerts -}}
    28. {{- if eq $index 0 }}
    29. ==========异常恢复==========
    30. 告警类型: {{ $alert.Labels.alertname }}
    31. 告警级别: {{ $alert.Labels.severity }}
    32. 告警详情: {{ $alert.Annotations.message }}{{ $alert.Annotations.description}};{{$alert.Annotations.summary}}
    33. 故障时间: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    34. 恢复时间: {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    35. {{- if gt (len $alert.Labels.instance) 0 }}
    36. 实例信息: {{ $alert.Labels.instance }}
    37. {{- end }}
    38. {{- if gt (len $alert.Labels.namespace) 0 }}
    39. 命名空间: {{ $alert.Labels.namespace }}
    40. {{- end }}
    41. {{- if gt (len $alert.Labels.node) 0 }}
    42. 节点信息: {{ $alert.Labels.node }}
    43. {{- end }}
    44. {{- if gt (len $alert.Labels.pod) 0 }}
    45. 实例名称: {{ $alert.Labels.pod }}
    46. {{- end }}
    47. ============END============
    48. {{- end }}
    49. {{- end }}
    50. {{- end }}
    51. {{- end }}

    然后将其和上面的altermanager.yaml放到同一个secret中。
    先修改altermanager.yaml,如下:

    1. global:
    2. resolve_timeout: 5m
    3. receivers:
    4. - name: wechat
    5. wechat_configs:
    6. - agent_id: "100000x"
    7. api_secret: Nm7PRrxxxxG8EpkyWuXDAWMLmFo
    8. corp_id: wwf9d3833cd66f34d8
    9. send_resolved: true
    10. to_user: Joker
    11. route:
    12. group_by:
    13. - job
    14. group_interval: 5m
    15. group_wait: 30s
    16. receiver: wechat
    17. repeat_interval: 12h
    18. routes:
    19. - match:
    20. alertname: Watchdog
    21. receiver: wechat
    22. templates:
    23. - /etc/alertmanager/config/template.tmp1

    如下先删除,再创建

    1. kubectl delete secret alertmanager-main -n monitoring
    2. kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml --from-file=template.tmp1 -n monitoring

    然后报警出来就会好看些了。

    image.png