AlertManager部署后Webhook正常但Telegram收不到告警问题
排查AlertManager Telegram告警失效问题
首先明确:AlertManager原生支持Telegram告警功能,核心问题不在功能是否启用,而是配置或链路环节存在疏漏,以下是针对性排查步骤:
验证Telegram机器人配置正确性
- 确认机器人Token无误:检查ConfigMap中
receivers下telegram_configs的bot_token是否与@BotFather生成的完全一致,避免多余空格或特殊字符。 - 确认聊天ID正确:向机器人发送消息后,调用
https://api.telegram.org/bot<你的Token>/getUpdates接口获取聊天ID,确保ConfigMap中chat_id与返回的chat.id数字值完全匹配(不要使用用户名)。
- 确认机器人Token无误:检查ConfigMap中
检查AlertManager配置的语法与关联
- 验证配置语法:将ConfigMap内容导出到本地文件,执行
amtool config validate --config.file=<本地配置文件路径>检查是否有语法错误。 - 确认路由关联:检查
route节点下的receiver是否指定了你的Telegram接收器名称,子路由是否正确匹配告警规则并转发到该接收器。 - 确认
telegram_configs结构完整:确保配置中api_url(默认https://api.telegram.org,需代理则修改)等必要字段正确,send_resolved为可选配置不影响告警发送。
- 验证配置语法:将ConfigMap内容导出到本地文件,执行
排查网络与权限问题
- 测试Pod网络连通性:在AlertManager Pod内执行
curl https://api.telegram.org,确认能正常返回内容;私有网络环境需确认允许出站访问Telegram 443端口。 - 检查代理配置:若集群需代理访问外网,在Deployment的Pod模板中添加
HTTP_PROXY、HTTPS_PROXY环境变量,确保AlertManager可通过代理连接Telegram API。
- 测试Pod网络连通性:在AlertManager Pod内执行
查看AlertManager日志定位问题
- 查看Pod日志:执行
kubectl logs <alertmanager-pod-name>,搜索telegram或webhook相关条目,是否存在认证失败、连接超时、聊天ID无效等报错信息。
- 查看Pod日志:执行
手动触发测试告警
- 执行
amtool alert add --alertmanager.url=http://<alertmanager-service-ip>:9093 test_alert="Test Telegram Alert" severity=critical生成测试告警,观察日志及Telegram接收情况。
- 执行
内容的提问来源于stack exchange,提问作者Aitor Encinas
相关产品推荐
相关产品推荐

