Alertmanager 企业微信配置

Alertmanager 已经内置了对企业微信的支持,我们可以通过企业微信来管理报警。

企业微信配置

企业微信相关概念说明请参考企业微信API说明,可以在企业微信的后台中建立多个应用,每个应用对应不同的报警分组,由企业微信来做接收成员的划分。

创建应用

登录企业微信,在应用管理中,创建应用

Alertmanager 已经内置了对企业微信的支持,我们可以通过企业微信来管理报警。

企业微信配置

企业微信相关概念说明请参考企业微信API说明,可以在企业微信的后台中建立多个应用,每个应用对应不同的报警分组,由企业微信来做接收成员的划分。

创建应用

登录企业微信,在应用管理中,创建应用

配置应用可见范围

收集信息

进入刚才创建的应用,记录应用的:

  • AgentId
  • Secret
图片

点击右上角“我的企业”,记录企业的:

  • 企业ID
图片

Alertmanager 配置

配置说明

prometheus 官网中给出了企业微信的相关配置说明

# Whether or not to notify about resolved alerts.
[ send_resolved:  | default = false ]
# The API key to use when talking to the WeChat API.
[ api_secret:  | default = global.wechat_api_secret ]
# The WeChat API URL.
[ api_url:  | default = global.wechat_api_url ]
# The corp id for authentication.
[ corp_id:  | default = global.wechat_api_corp_id ]
# API request data as defined by the WeChat API.
[ message:  | default = '{{ template "wechat.default.message" . }}' ]
[ agent_id:  | default = '{{ template "wechat.default.agent_id" . }}' ]
[ to_user:  | default = '{{ template "wechat.default.to_user" . }}' ]
[ to_party:  | default = '{{ template "wechat.default.to_party" . }}' ]
[ to_tag:  | default = '{{ template "wechat.default.to_tag" . }}' ]

配置示例

vi wechat.tmpl 消息模板,消息模板用于格式化消息

{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
告警类型: {{ $alert.Labels.alertname }}
告警级别: {{ $alert.Labels.severity }}
=====================
{{- end }}
===告警详情===
告警详情: {{ $alert.Annotations.message }}
故障时间: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}
===参考信息===
{{ if gt (len $alert.Labels.instance) 0 -}}故障实例ip: {{ $alert.Labels.instance }};{{- end -}}
{{- if gt (len $alert.Labels.namespace) 0 -}}故障实例所在namespace: {{ $alert.Labels.namespace }};{{- end -}}
{{- if gt (len $alert.Labels.node) 0 -}}故障物理机ip: {{ $alert.Labels.node }};{{- end -}}
{{- if gt (len $alert.Labels.pod_name) 0 -}}故障pod名称: {{ $alert.Labels.pod_name }}{{- end }}
=====================
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
告警类型: {{ $alert.Labels.alertname }}
告警级别: {{ $alert.Labels.severity }}
=====================
{{- end }}
===告警详情===
告警详情: {{ $alert.Annotations.message }}
故障时间: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}
恢复时间: {{ $alert.EndsAt.Format "2006-01-02 15:04:05" }}
===参考信息===
{{ if gt (len $alert.Labels.instance) 0 -}}故障实例ip: {{ $alert.Labels.instance }};{{- end -}}
{{- if gt (len $alert.Labels.namespace) 0 -}}故障实例所在namespace: {{ $alert.Labels.namespace }};{{- end -}}
{{- if gt (len $alert.Labels.node) 0 -}}故障物理机ip: {{ $alert.Labels.node }};{{- end -}}
{{- if gt (len $alert.Labels.pod_name) 0 -}}故障pod名称: {{ $alert.Labels.pod_name }};{{- end }}
=====================
{{- end }}
{{- end }}
{{- end }}

vi alertmanager.yml

global:
  # The smarthost and SMTP sender used for mail notifications.
  # smtp_smarthost: 'localhost:25'
  # smtp_from: '[email protected]'
  # smtp_auth_username: 'alertmanager'
  # smtp_auth_password: 'password'
  # smtp_require_tls: true
  # The Slack webhook URL.
  # slack_api_url: ''
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'  # 请勿修改
  wechat_api_corp_id: 'ww18615603472f6b05'  # 企业ID
templates:
- '.../conf/*.tmpl'  # wechat.tmpl 消息模板的位置 
route:
  receiver: "wechat"  # 和下面 receivers.name 一致  
  group_by: ['env','instance','alertname','type','group','job']
  group_wait:      30s
  group_interval:  3m
  repeat_interval: 3m
  routes:
receivers:
- name: 'wechat' 
  wechat_configs:
  - send_resolved: true  # 是否发生 resolved 消息
    to_user: '@all'  # 所有用户
    message: '{{ template "wechat.default.message" . }}'  # 使用消息模板
    agent_id: '1000002'  # 应用的 AgentId
    api_secret: 'dDeZazjNCdWsF5R30lh3xrj1_TtGw3zD_p5AJS4JKOc'  # 应用的 Secret

重启 Alertmanager

sudo systemctl restart alertmanager-9093.service

消息示例

图片

配置应用可见范围

图片

收集信息

进入刚才创建的应用,记录应用的:

  • AgentId
  • Secret
图片

点击右上角“我的企业”,记录企业的:

  • 企业ID
图片

Alertmanager 配置

配置说明

prometheus 官网中给出了企业微信的相关配置说明

# Whether or not to notify about resolved alerts.
[ send_resolved:  | default = false ]
# The API key to use when talking to the WeChat API.
[ api_secret:  | default = global.wechat_api_secret ]
# The WeChat API URL.
[ api_url:  | default = global.wechat_api_url ]
# The corp id for authentication.
[ corp_id:  | default = global.wechat_api_corp_id ]
# API request data as defined by the WeChat API.
[ message:  | default = '{{ template "wechat.default.message" . }}' ]
[ agent_id:  | default = '{{ template "wechat.default.agent_id" . }}' ]
[ to_user:  | default = '{{ template "wechat.default.to_user" . }}' ]
[ to_party:  | default = '{{ template "wechat.default.to_party" . }}' ]
[ to_tag:  | default = '{{ template "wechat.default.to_tag" . }}' ]

配置示例

vi wechat.tmpl 消息模板,消息模板用于格式化消息

{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
告警类型: {{ $alert.Labels.alertname }}
告警级别: {{ $alert.Labels.severity }}
=====================
{{- end }}
===告警详情===
告警详情: {{ $alert.Annotations.message }}
故障时间: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}
===参考信息===
{{ if gt (len $alert.Labels.instance) 0 -}}故障实例ip: {{ $alert.Labels.instance }};{{- end -}}
{{- if gt (len $alert.Labels.namespace) 0 -}}故障实例所在namespace: {{ $alert.Labels.namespace }};{{- end -}}
{{- if gt (len $alert.Labels.node) 0 -}}故障物理机ip: {{ $alert.Labels.node }};{{- end -}}
{{- if gt (len $alert.Labels.pod_name) 0 -}}故障pod名称: {{ $alert.Labels.pod_name }}{{- end }}
=====================
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
告警类型: {{ $alert.Labels.alertname }}
告警级别: {{ $alert.Labels.severity }}
=====================
{{- end }}
===告警详情===
告警详情: {{ $alert.Annotations.message }}
故障时间: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}
恢复时间: {{ $alert.EndsAt.Format "2006-01-02 15:04:05" }}
===参考信息===
{{ if gt (len $alert.Labels.instance) 0 -}}故障实例ip: {{ $alert.Labels.instance }};{{- end -}}
{{- if gt (len $alert.Labels.namespace) 0 -}}故障实例所在namespace: {{ $alert.Labels.namespace }};{{- end -}}
{{- if gt (len $alert.Labels.node) 0 -}}故障物理机ip: {{ $alert.Labels.node }};{{- end -}}
{{- if gt (len $alert.Labels.pod_name) 0 -}}故障pod名称: {{ $alert.Labels.pod_name }};{{- end }}
=====================
{{- end }}
{{- end }}
{{- end }}

vi alertmanager.yml

global:
  # The smarthost and SMTP sender used for mail notifications.
  # smtp_smarthost: 'localhost:25'
  # smtp_from: '[email protected]'
  # smtp_auth_username: 'alertmanager'
  # smtp_auth_password: 'password'
  # smtp_require_tls: true
  # The Slack webhook URL.
  # slack_api_url: ''
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'  # 请勿修改
  wechat_api_corp_id: 'ww18615603472f6b05'  # 企业ID
templates:
- '.../conf/*.tmpl'  # wechat.tmpl 消息模板的位置 
route:
  receiver: "wechat"  # 和下面 receivers.name 一致  
  group_by: ['env','instance','alertname','type','group','job']
  group_wait:      30s
  group_interval:  3m
  repeat_interval: 3m
  routes:
receivers:
- name: 'wechat' 
  wechat_configs:
  - send_resolved: true  # 是否发生 resolved 消息
    to_user: '@all'  # 所有用户
    message: '{{ template "wechat.default.message" . }}'  # 使用消息模板
    agent_id: '1000002'  # 应用的 AgentId
    api_secret: 'dDeZazjNCdWsF5R30lh3xrj1_TtGw3zD_p5AJS4JKOc'  # 应用的 Secret

重启 Alertmanager

sudo systemctl restart alertmanager-9093.service

消息示例

图片

你可能感兴趣的:(Alertmanager 企业微信配置)