SpringBoot集成Prometheus实现Alert Manager告警上报(三)

摘要

Alert Manager上报告警到告警服务

一、Spring告警服务接收Alert

简单代码如下,请自行在业务内进行解析:

@RestController
@RequestMapping("/alert")
public class AlertController {

    @PostMapping("/receive")
    public String receive(@RequestBody JSONObject monitorJson){
        System.out.println("monitorJson = " + monitorJson.toString());
        return "success";
    }
}

二、配置AlertManager

在alert manager目录内,编辑alertmanager.yml

global:
  resolve_timeout: 2m
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
  - name: 'web.hook' # 这里使用web hook 当然,也可以使用wechat、email等
    webhook_configs: # 接收告警地址
      - url: 'http://192.168.2.62:8080/system/alert/receive'
inhibit_rules: # 聚合告警规则
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

重启alertmanager

三、测试AlertManager到Spring

Lianux中 编辑临时告警MSG:

#!/usr/bin/env bash
alerts_message='[
  {
    "labels": {
       "alertname": "磁盘已满",
       "dev": "sda1",
       "instance": "实例1",
       "msgtype": "testing"
     },
     "annotations": {
        "info": "程序员小王提示您:这个磁盘sda1已经满了,快处理!",
        "summary": "请检查实例示例1"
      }
  },
  {
    "labels": {
       "alertname": "磁盘已满",
       "dev": "sda2",
       "instance": "实例1",
       "msgtype": "testing"
     },
     "annotations": {
        "info": "程序员小王提示您:这个磁盘sda2已经满了,快处理!",
        "summary": "请检查实例示例1",
        "runbook": "以下链接http://test-url应该是可点击的"
      }
  }
]'

给 AlertManager发送告警

curl -XPOST -d"$alerts_message" http://127.0.0.1:9093/api/v1/alerts

 可以在AlertManager的UI看到

同时,在告警接收端也能看到告警

### PrometheusAlertmanager配合实现向多人发送告警邮件的方案 #### 一、基本原理 Prometheus 是一个开源的时间序列数据库,用于监控和报警。当检测到某些条件满足时,它会触发告警并将这些告警传递给 Alertmanager 进行处理。Alertmanager 负责管理告警通知的方式,例如通过电子邮件、Slack 或其他方式发送告警消息。 为了实现向多人发送告警邮件的功能,需要在 Alertmanager 的配置文件中定义邮件接收者的列表,并确保 SMTP 配置正确以便能够成功发送邮件[^1]。 --- #### 二、具体配置方法 以下是具体的配置流程: ##### 1. 修改 `alertmanager.yml` 文件 在 Alertmanager 的配置文件中,添加或修改全局 SMTP 设置以及路由规则来支持多收件人的功能。以下是一个完整的示例配置: ```yaml global: smtp_smarthost: 'smtp.example.com:587' # 替换为实际的SMTP服务器地址 smtp_from: 'alerts@example.com' # 发送方邮箱地址 smtp_auth_username: 'username@example.com'# SMTP认证用户名 smtp_auth_password: 'password' # SMTP认证密码 smtp_require_tls: true # 是否启用TLS加密 route: group_by: ['alertname'] group_wait: 30s # 同一组内的告警等待时间 group_interval: 5m # 不同组之间的间隔时间 repeat_interval: 1h # 告警重复发送的时间间隔 receiver: 'email-receiver' receivers: - name: 'email-receiver' email_configs: - to: 'user1@example.com, user2@example.com, user3@example.com' # 添加多个收件人邮箱地址 send_resolved: true # 当告警恢复时也发送通知 ``` 上述配置中的关键部分在于 `to` 字段,该字段允许指定多个以逗号分隔的电子邮件地址作为接收者[^3]。 --- ##### 2. 更新 Prometheus 配置 确保 Prometheus 正确指向 Alertmanager 实例。这可以通过编辑 Prometheus 的配置文件 (`prometheus.yml`) 来完成。下面是一段典型的配置片段: ```yaml alerting: alertmanagers: - static_configs: - targets: - '<ALERTMANAGER_IP>:<PORT>' # 将此替换为实际的Alertmanager IP和端口 ``` 如果之前已经存在类似的配置,则只需更新 `<ALERTMANAGER_IP>` 和 `<PORT>` 即可[^2]。 --- ##### 3. 测试配置有效性 完成以上两步之后,分别重启 PrometheusAlertmanager 服务以使更改生效。随后可通过模拟触发一条测试告警验证邮件是否能正常送达至所有指定的收件人。 --- ### 注意事项 - **安全性**:对于生产环境下的应用,请务必妥善保管 SMTP 认证凭证并考虑使用更安全的身份验证机制。 - **网络连通性**:确认主机可以访问所使用的外部 SMTP 服务提供商。 - **日志排查**:如果遇到问题无法收到预期的通知,建议查看 Alertmanager 日志以定位错误原因。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值