Prometheus配置基础认证报basic_auth_users字段不存在错误
问题原因
- 版本适配问题:你当前使用的是2.17.0-rc.0版本Prometheus,该版本未内置Web服务基础认证能力,原生basic auth支持从2.24.0版本才正式上线,老版本的配置解析模块无法识别
basic_auth_users字段,直接抛出字段不存在的报错。 - 校验命令使用错误:
promtool check config仅用于校验Prometheus主配置prometheus.yml,校验Web配置需要使用专门的check web-config子命令,命令不匹配也会导致解析逻辑异常。 - 配置本身存在格式错误:
- YAML语法对缩进敏感,你写的配置中
admin字段和上级basic_auth_users没有缩进差,不符合语法规范 basic_auth_users字段要求填写bcrypt算法生成的密码哈希值,你直接填写了明文特殊字符串,不符合配置要求- 你提到的配置文件名混用了xml和yml后缀,Prometheus的Web配置为YAML格式,xml后缀文件无法被正常识别加载。
- YAML语法对缩进敏感,你写的配置中
解决方法
- 优先将Prometheus升级到2.24.0以上的稳定版本,建议选择官方仍在维护的正式稳定版,从根源解决功能缺失问题。
- 生成符合要求的bcrypt密码哈希,不要直接填写明文密码,使用Prometheus自带工具生成即可,执行命令:
./promtool hash-password -- '你实际要设置的登录密码'
复制命令输出的哈希字符串备用。
3. 修正web配置文件内容,注意缩进层级,正确格式如下:
basic_auth_users: admin: 这里替换成上一步生成的bcrypt密码哈希
将配置文件统一命名为web-config.yml,存放到/etc/prometheus/路径下,不要使用xml后缀。
4. 修改Prometheus启动参数,新增--web.config.file=/etc/prometheus/web-config.yml,指定服务启动时加载该Web配置。
5. 使用正确的命令校验配置合法性:
./promtool check web-config /etc/prometheus/web-config.yml
待命令返回校验成功提示后,重启Prometheus服务即可生效。
6. 如果暂时不方便升级Prometheus版本,可以跳过原生认证配置,在Prometheus前端部署Nginx反向代理,在Nginx层配置基础认证规则转发请求到Prometheus服务,同样可以实现密码访问控制。
内容的提问来源于stack exchange,提问作者Rajiv
相关产品推荐
相关产品推荐

