alertmanager设置企业微信和邮箱告警以及模板

alertmanager 配置文件 alertmanager.yml

global:
  resolve_timeout: 1m
  smtp_smarthost: 'smtp.exmail.qq.com:465'  # 这里为 QQ 邮箱 SMTP 服务地址,官方地址为 smtp.qq.com 端口为 465 或 587,同时要设置开启 POP3/SMTP 服务。
  smtp_from: '916719080@qq.com' # 发送邮箱名称
  smtp_auth_username: '916719080@qq.com' # 邮箱名称
  smtp_auth_password: 'lojdeopbholobgah' # 邮箱密码或授权码
  smtp_require_tls: false

templates:
  - "/etc/alertmanager/alert.tmpl"

route:
  group_by: ['alertname']
  receiver: 'wechat'

  group_wait: 10s
  group_interval: 20s
  repeat_interval: 2m

  routes:
  - match_re:
      alertname: filesystem_usage_over.*
    receiver: email
    group_wait: 1m
    group_interval: 5m
    repeat_interval: 6h


receivers:
  - name: "wechat" #这里为总路由,默认接收器
    wechat_configs:
    - corp_id: wwd76d598b5fad5097		# 企业信息("我的企业"--->"CorpID"[在底部])
    to_user: '@all'		# 发送给企业微信用户的ID,这里是所有人
#   to_party: '' 接收部门ID
    agent_id: 1000004	# 企业微信("企业应用"-->"自定应用"[Prometheus]--> "AgentId") 
    api_secret: DY9IlG0Bdwawb_ku0NblxKFrrmMwbLIZ7YxMa5rCg8g		# 企业微信("企业应用"-->"自定应用"[Prometheus]--> "Secret") 
    message: '{{ template "wechat.default.message" .}}'	# 发送内容(调用模板)
    send_resolved: true	 	# 故障恢复后通知


  - name: "email"
    email_configs:
    - to: "192244293@qq.com"
      send_resolved: true
      html: '{{template "email-monitor.html" . }}' #这里为上方 alert.tmpl 定义的邮箱模板

告警模板文件 alert.tmpl

{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 }}
=========监控报警:{{ $alert.Labels.job }} =========
告警状态:{{  .Status }}
告警级别:{{ .Labels.severity }}
告警类型:{{ $alert.Labels.alertname }}
故障主机: {{ $alert.Labels.instance }} {{ $alert.Labels.pod }}
告警主题: {{ $alert.Annotations.summary }}
告警详情: {{ $alert.Annotations.message }}{{ $alert.Annotations.description}};
触发阀值:{{ .Annotations.value }}
故障时间: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
========= = end =  =========
{{- end }}
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 }}
=========异常恢复:{{ $alert.Labels.job }} =========
告警类型:{{ .Labels.alertname }}
告警状态:{{  .Status  }}
告警主题: {{ $alert.Annotations.summary }}
告警详情: {{ $alert.Annotations.message }}{{ $alert.Annotations.description}};
故障时间: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
恢复时间: {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
{{- if gt (len $alert.Labels.instance) 0 }}
实例信息: {{ $alert.Labels.instance }}
{{- end }}
========= = end =  =========
{{- end }}
{{- end }}
{{- end }}
{{- end }}


{{ define "email-monitor.html" }}
    {{- if gt (len .Alerts.Firing) 0 -}}
    <h1>告警</h1>
    <table border="5">
        <tr>
            <td>报警项</td>
            <td>实例</td>
            <td>报警详情</td>
            <td>报警阀值</td>
            <td>开始时间</td>
        </tr>
        {{ range $i, $alert := .Alerts }}
            <tr><td>{{ index $alert.Labels "alertname" }}</td>
                <td>{{ index $alert.Labels "instance" }}</td>
                <td>{{ index $alert.Annotations "description" }}</td>
                <td>{{ index $alert.Annotations "value" }}</td>
                <td>{{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}</td>
            </tr>
        {{ end }}
    </table>
    {{ end }}
    {{- if gt (len .Alerts.Resolved) 0 -}}
    <h1>恢复</h1>
    <table border="5">
        <tr>
            <td>报警项</td>
            <td>实例</td>
            <td>报警详情</td>
            <td>报警阀值</td>
            <td>开始时间</td>
        </tr>
        {{ range $i, $alert := .Alerts }}
            <tr>
                <td>{{ index $alert.Labels "alertname" }}</td>
                <td>{{ index $alert.Labels "instance" }}</td>
                <td>{{ index $alert.Annotations "description" }}</td>
                <td>{{ index $alert.Annotations "value" }}</td>
                <td>{{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}</td>
            </tr>
        {{ end }}
    </table>
    {{ end }}{{- end }}

参考链接:

        https://prometheus.io/docs/alerting/latest/configuration/
        https://blog.51cto.com/starsliao/5763175
        http://​https://blog.csdn.net/weixin_45880055/article/details/120585024​

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 企业微信机器人是一种能够自动发送告警信息的工具。Python是一种强大的编程语言,可以用于编写企业微信机器人的告警信息功能。 在使用Python编写企业微信机器人告警信息功能时,我们可以使用企业微信提供的API接口来发送告警信息。首先,我们需要在企业微信后台创建一个机器人,并获取到机器人的Webhook地址。然后,使用Python的requests库发送POST请求到这个Webhook地址,将告警信息作为请求的参数发送给企业微信。 在编写Python代码时,可以使用requests库中的post方法来发送POST请求。首先需要导入requests库,然后设置请求的URL和告警信息的内容。最后,调用post方法发送请求。 下面是一个简单的示例代码: ``` import requests def send_alert(alert_message): url = "企业微信机器人的Webhook地址" data = { "msgtype": "text", "text": { "content": alert_message } } response = requests.post(url, json=data) if response.status_code == 200: print("告警信息发送成功") else: print("告警信息发送失败") # 调用发送告警信息的函数 send_alert("服务器发生故障!") ``` 以上代码中,首先设置企业微信机器人的Webhook地址,然后构造了一个包含告警信息的字典data。接下来,使用requests库的post方法发送POST请求,并根据返回的状态码判断告警信息是否发送成功。 通过这种方式,Python可以很方便地实现企业微信机器人告警信息功能,帮助企业及时接收并处理可能的故障和异常情况。 ### 回答2: Python 企业微信机器人可以方便地实现告警信息的推送和管理。企业微信是一款企业级即时通讯工具,通过Python编写的机器人可以与企业微信平台进行交互,实现告警信息的即时推送和管理。 使用Python编写的企业微信机器人可以通过调用企业微信提供的接口,将告警信息发送给指定的用户或群组。例如,当系统出现故障或发生异常情况时,可以通过Python脚本获取相关信息,并使用机器人将告警信息推送给相关的人员,以便及时处理和解决问题。 通过Python编写的企业微信机器人还可以实现告警信息的管理和统计。机器人可以获取和记录告警信息,并对其进行分类、过滤和统计。例如,可以记录每天的告警次数、告警级别等信息,以便进行分析和监控,及时发现系统瓶颈和异常情况。 此外,Python编写的企业微信机器人还可以实现自定义的告警推送规则和方式。可以根据不同的告警类型和级别,设置不同的推送方式,如消息、邮件、电话等。可以根据具体需求定制机器人的行为,提高告警信息的及时性和准确性。 总之,Python 企业微信机器人是一种高效、灵活和方便的告警信息管理工具。通过使用Python编写的机器人,可以实现告警信息的即时推送和管理,提高团队的工作效率和问题处理速度。 ### 回答3: Python 企业微信机器人是一种使用 Python 编写的工具,用于向企业微信发送告警信息。企业微信是一款企业即时通讯应用,而告警信息是指在系统运行过程中出现的异常情况或重要事件,需要及时通知相关人员处理的消息。 Python 企业微信机器人具有以下优点: 1. 简便易用:使用 Python 编写的机器人代码简洁明了,易于理解和维护。只需要导入相关库,编写少量代码即可实现告警信息的发送。 2. 定制化:机器人支持自定义告警信息的格式和内容。可以根据业务需求,灵活设定告警级别、告警内容、接收人等参数。 3. 高效可靠:Python 语言具有良好的性能和稳定性,在发送告警信息时能够保证消息的实时性和可靠性。 4. 扩展性强:Python 拥有丰富的第三方库,可以结合其他库实现更多功能需求。例如,可以通过调用其他库获取系统监控数据,将实时监控数据与告警信息结合发送,提高系统监控和告警的综合能力。 使用 Python 企业微信机器人发送告警信息的流程一般如下: 1. 导入企业微信机器人相关库。 2. 设置企业微信机器人的相关参数,如机器人的 Webhook URL、告警等级、接收人等。 3. 构造告警信息的内容,可以包括日期、时间、异常信息等。 4. 将告警消息通过机器人发送给企业微信内指定的接收人。 通过以上步骤,企业微信机器人就可以快速将告警信息发送给相关人员,及时通知和解决系统运行中出现的异常情况,提高系统的可用性和稳定性。同时,通过 Python 的灵活性和丰富的第三方库支持,机器人还可以进一步扩展自己的功能,以满足不同场景下的告警需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值