Prometheus 自定义告警模板 搭建监控系统八(入门篇)

本文介绍了如何创建和配置Prometheus自定义告警模板,包括创建模板文件,注释中强调了`.StartsAt.Format`的时间参数应正确设置为Go语言诞生时间,避免时间显示错误。此外,还讲解了修改alertmanager.yml配置文件以及如何重启alertmanager和重新加载Prometheus配置。

自定义告警模板

  • 创建模板文件
[root@prometheus ~]# mkdir -p /usr/local/Prometheus_alertmanager/template
[root@prometheus ~]# vim /usr/local/Prometheus_alertmanager/template/email.tmpl
{
  
  { define "email.html" }}
    {
  
  { range .Alerts }}
<pre>
    ========start==========
    告警程序: prometheus_alert 
    告警级别: {
  
  { .Labels.severity }} 
    告警类型: {
  
  { .Labels.alertname }} 
    故障主机: {
  
  { .Labels.instance }} 
    告警主题: {
  
  { .Annotations.summary }}
    告警详情: {
  
  { .Annotations.description }}
    触发时间: {
  
  { (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    ========end==========
</pre>
    {
  
  { end }}
{
  
  { end }}

注释:.StartsAt.Format "2006-01-02 15:04:05"的参数一定不能乱填,这里定义的时间为go 语言的诞生时间!!!如果填错时间会乱码。

  • 修改alertmanager.yml配置
root@prometheus ~]# vim /usr/local/Prometheus_
### 配置 Prometheus 自定义告警模板Prometheus 中,自定义告警模板是通过 Alertmanager 的模板引擎实现的。Prometheus 本身并不直接支持模板配置,而是通过 Alertmanager 的 `templates` 配置项来引用模板文件,从而实现对告警内容的格式化输出。 #### 创建模板文件 首先需要创建一个模板文件,用于定义告警信息的格式。模板文件可以放置在任意路径,通常推荐使用统一的目录结构进行管理。例如: ```bash mkdir -p /usr/local/Prometheus_alertmanager/template vim /usr/local/Prometheus_alertmanager/template/alert.tmpl ``` 在该模板文件中,可以定义多个模板块,每个块对应一种通知格式。以下是一个通用的告警模板示例: ```text {{ define "wechat.default.message" }} {{ range .Alerts }} 告警状态: {{ .Status | title }} 告警级别: {{ .Labels.severity }} 告警名称: {{ .Labels.alertname }} 实例地址: {{ .Labels.instance }} 告警详情: {{ .Annotations.description }} 触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }} {{ end }} {{ end }} ``` 该模板定义了一个名为 `wechat.default.message` 的模板块,用于格式化企业微信告警消息的内容。其中包含告警状态、级别、名称、实例地址、描述和触发时间等信息 [^2]。 #### 修改 Alertmanager 配置 在 Alertmanager 的配置文件中,需要指定模板文件的路径,并在接收器中引用对应的模板名称。例如,在 `alertmanager.yml` 中添加如下配置: ```yaml templates: - '/usr/local/Prometheus_alertmanager/template/*.tmpl' receivers: - name: 'wechat-receiver' webhook_configs: - url: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your-webhook-key' send_resolved: true ``` 在上述配置中,`templates` 指定了模板文件的路径,`webhook_configs` 中的 `url` 指向企业微信的 Webhook 地址,`send_resolved` 表示在告警恢复时也发送通知 [^4]。 #### 启用恢复通知 如果需要在告警恢复时发送通知,可以在模板中添加恢复信息的判断逻辑。例如: ```text {{ define "wechat.default.message" }} {{ if gt (len .Alerts.Firing) 0 }} {{ range .Alerts.Firing }} 告警状态: 触发 告警级别: {{ .Labels.severity }} 告警名称: {{ .Labels.alertname }} 实例地址: {{ .Labels.instance }} 告警详情: {{ .Annotations.description }} 触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }} {{ end }} {{ end }} {{ if gt (len .Alerts.Resolved) 0 }} {{ range .Alerts.Resolved }} 告警状态: 恢复 告警名称: {{ .Labels.alertname }} 实例地址: {{ .Labels.instance }} 恢复时间: {{ .EndsAt.Format "2006-01-02 15:04:05" }} {{ end }} {{ end }} {{ end }} ``` 此模板通过 `if` 判断分别处理触发和恢复的告警事件,确保在告警恢复时也能接收到通知 [^4]。 #### 验证模板配置 完成模板文件和 Alertmanager 配置后,需要重启 Alertmanager 服务以加载新的配置。随后,可以通过手动触发一个测试告警来验证模板是否生效。例如,在 Prometheus告警规则中添加如下规则: ```yaml groups: - name: test-alert rules: - alert: TestAlert expr: up == 0 for: 1m labels: severity: warning annotations: summary: "Instance {{ $labels.instance }} is down" description: "检测到实例 {{ $labels.instance }} 已经离线超过1分钟" ``` 当该规则被触发时,会通过 Alertmanager 发送告警信息,并使用自定义模板进行格式化输出 [^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值