Prometheus Alertmanager传递授权令牌遇401错误的排查求助
解决Prometheus Alertmanager传递授权令牌返回401的问题
你遇到的unexpected status code 401错误,以及curl中显示Authorization: Basic undefined的问题,根源在于两个配置错误:YAML缩进不规范,以及未明确指定Basic认证类型。
问题分析
- YAML缩进错误:你的配置中
webhook_configs的缩进与上级列表项name不一致,导致Alertmanager无法正确解析http_config部分的配置,进而无法读取授权凭证,最终生成的请求头出现undefined。 - 未指定认证类型:Alertmanager默认的授权类型是
Bearer,而你的目标服务器需要Basic认证,不指定类型会导致凭证以错误的方式发送,服务器拒绝请求。
修复后的配置
- name: 'msteamsdesktop' webhook_configs: - url: 'https://d.teamwork.com/tasklists/111111/tasks.json' send_resolved: false http_config: authorization: type: Basic credentials: 'bSDVkTG5UdkNydQ=='
关键修改点
- 统一缩进:确保
webhook_configs与同级的name缩进一致(通常用2或4个空格,保持整个YAML文件缩进统一即可),让配置能被正确解析。 - 添加认证类型:在
authorization块中明确指定type: Basic,告诉Alertmanager使用Basic认证方式发送凭证。
修改完成后,重启Alertmanager,此时请求的Authorization头会正确携带你的Base64编码凭证,即可解决401认证失败问题。
内容的提问来源于stack exchange,提问作者Rostyslav Malenko
相关产品推荐
相关产品推荐

