You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试AlertManager?配置邮件告警未接收问题排查

我来帮你一步步排查AlertManager邮件告警的问题,这些都是我日常调试这类问题时常用的思路:

第一步:先查AlertManager日志(最核心的排查入口)

日志会直接告诉你告警触发、邮件发送的详细过程,包括失败原因,首先得找到日志位置:

  • 如果你是用systemd管理AlertManager(绝大多数Linux发行版的默认方式),直接用这个命令实时查看日志:
    journalctl -u alertmanager -f
    
    建议把日志级别调到debug(在启动参数里加--log.level=debug),这样能看到更细的细节,比如SMTP连接的每一步
  • 如果是手动启动的AlertManager,默认日志会输出到控制台;如果配置了日志文件,看启动命令里的--log.file参数指定的路径
  • 另外,AlertManager自带的状态页面也很有用:默认访问http://<alertmanager-ip>:9093,在Alerts页面能看到当前活跃的告警,Silences页面可以检查有没有静默规则误挡住了告警
第二步:检查AlertManager配置文件

配置错误是最常见的原因,重点看这两部分:

邮件接收器(Receiver)的SMTP配置

确认SMTP参数是否正确,比如:

receivers:
- name: 'email-alert-receiver'
  email_configs:
  - to: 'your-target-email@example.com'
    from: 'alertmanager-sender@example.com'
    smarthost: 'smtp.example.com:587' # 注意端口:587是TLS,465是SSL,别搞混
    auth_username: 'alertmanager-sender@example.com'
    auth_password: 'your-smtp-password' # 像Gmail这类服务商需要用应用专用密码,不是登录密码
    auth_identity: 'alertmanager-sender@example.com'
    require_tls: true # 大部分SMTP服务器强制要求TLS,除非你确定不需要,否则别设为false

路由(Route)规则

确认告警有没有匹配到你的邮件接收器:

  • 检查路由的match/match_re规则是否正确,比如有没有把severity: critical的告警路由到了其他接收器
  • 用官方工具验证配置语法:
    amtool check-config /path/to/your/alertmanager.yml
    
    这个命令能快速发现语法错误、配置冲突
第三步:手动测试邮件发送

如果日志里没看到邮件发送记录,或者想单独验证SMTP连通性:

  • 用swaks或sendemail工具直接测试SMTP服务器(先安装工具):
    swaks --to your-target-email@example.com --from alertmanager-sender@example.com --server smtp.example.com:587 --auth-user alertmanager-sender@example.com --auth-password your-smtp-password --tls
    
    如果这个测试都失败,那问题肯定在SMTP服务器或网络(比如防火墙挡住了端口),和AlertManager无关;如果测试成功,再回到AlertManager的配置和日志找问题
  • 用AlertManager API手动触发测试告警:
    发送POST请求到http://<alertmanager-ip>:9093/api/v2/alerts,请求体是:
    [
      {
        "labels": {
          "alertname": "TestDebugAlert",
          "severity": "critical"
        },
        "annotations": {
          "summary": "这是一条测试告警,用于调试邮件发送"
        }
      }
    ]
    
    然后看日志里有没有处理这条告警并发送邮件的记录
第四步:排查收件端问题

如果AlertManager日志显示“邮件发送成功”,但你没收到:

  • 先检查邮箱的垃圾邮件/垃圾箱,很多邮件服务商把自动化告警归为垃圾邮件
  • 确认收件邮箱地址有没有拼写错误
  • 如果是自己的邮件服务器,检查服务器的投递日志,看邮件是否被拒收、延迟或者退回
关于AlertManager的存储

AlertManager会存储告警状态、静默规则等数据,默认存在和二进制同目录的data/文件夹,或者启动时用--storage.path指定的路径。这个存储主要影响告警的状态跟踪(比如是否已经发送过告警),一般不会直接导致邮件发送失败,但如果存储目录权限不足(比如AlertManager运行用户没有读写权限),可能会导致服务异常,所以也可以检查一下目录权限:

ls -ld /path/to/alertmanager/data/

内容的提问来源于stack exchange,提问作者Mit94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:52:46