Prometheus配置basic_auth

本文介绍了如何在Prometheus部署后增加基本认证加密,包括安装工具、生成密钥、配置web-config.yml和prometheus.yml,以及修改Service文件,确保只有授权用户能访问监控数据,防止数据泄露。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是Prometheus?

在这里插入图片描述

  1. Prometheus是一个开源的系统监控和报警框架,其本身也是一个时序列数据库(TSDB),它的设计灵感来源于Google的Borgmon,就像Kubernetes是基于Borg系统开源的。
  2. Prometheus是由SoundCloud的Google前员工设计并开源的,官方网站:Prometheus - Monitoring system & time series database 。Prometheus于2016年加入云原生计算机基金会(Cloud Native Computing Foundation,简称CNCF),成为了受欢迎程度仅次于Kubernetes的开源项目。
问题

prometheus部署完成后,是通过web进行访问的,但是大部分人部署完成后是没有进行加密的安全措施,导致在公网上可以给任何人都能访问,从而暴露出公司内部监控的所有Targets。

在FOFA平台通过protocol="prometheus(http)"的语法进行搜索

在这里插入图片描述

可以发现很多都是没有进行加密的,导致Targets以及配置的泄露。

在这里插入图片描述

解决问题

使用basic_auth加密

二、配置

1、安装所需的工具包,并生成basic_auth密钥
# yum install httpd-tools -y

# htpasswd -nBC 12 '' | tr -d ':\n'
# 密码设置的是123
New password: 			
Re-type new password: 
# 生成的密钥信息
$2y$12$p/NIsggcAYK.qr89GgY6NeiSCROoX//nOELaBX3mQl5GnxtX7tNPS
2、在prometheus的文件夹下添加配置文件
# cd /usr/local/prometheus
# vim web-config.yml 
basic_auth_users:
    admin: $2y$12$p/NIsggcAYK.qr89GgY6NeiSCROoX//nOELaBX3mQl5GnxtX7tNPS
3、修改prometheus.yml配置文件
scrape_configs:
  - job_name: "prometheus"
    basic_auth:
      username: admin	# 账号为admin
      password: 123		# 密码为123
    static_configs:
      - targets: ["192.168.20.50:39090"]
4、修改prometheus的Service文件。[我这里使用的是二进制部署的prometheus]
# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--web.listen-address=:39090 \
--web.config.file=/usr/local/prometheus/web-config.yml \
--storage.tsdb.path=/usr/local/prometheus/data/ \
--storage.tsdb.retention=15d \
--web.enable-lifecycle

ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
5、重启服务
# systemctl restart prometheus

三、检验

在浏览器使用Ctrl+F5,强制刷新

在这里插入图片描述

此时需要刚刚设置的账号和密码才能登录进入prometheus的页面,防止了相关数据的泄露。

<think>好的,用户现在遇到了另一个关于Prometheus配置文件的错误,这次是在检查时提示“authorization type cannot be set to "basic", use "basic_auth" instead”。我需要先理解这个错误的具体原因,然后给出相应的解决方案。 首先,回顾之前的对话,用户之前遇到的错误是因为在较新版本的Prometheus中,`basic_auth`被替换为`authorization`字段,并需要指定类型。现在这个错误看起来像是用户可能已经按照之前的建议修改了配置文件,但可能类型设置不正确,或者版本兼容性问题。 错误信息明确指出,不能将authorization的type设置为"basic",应该使用"basic_auth"。这可能意味着用户在新的配置中使用了`authorization`块,并将type设为"basic",但Prometheus期望的是另一种格式。例如,在较新的版本中,可能已经弃用了这种设置方式,或者用户混淆了不同版本的配置语法。 接下来,我需要确定Prometheus版本之间的配置差异。之前的回答提到v2.24+版本对认证进行了重构,但可能用户现在使用的版本更高,或者存在其他变化。例如,在某些版本中,可能要求使用`basic_auth`而不是在`authorization`中设置类型为"basic"。 可能的解决方案包括检查当前的Prometheus版本,确认其支持的配置语法,然后调整配置文件。例如,如果用户使用的是较新的版本,可能需要将`authorization`替换回`basic_auth`,或者调整类型为"Basic"(注意大小写),或者可能需要使用不同的结构。 还需要考虑YAML格式的正确性,例如缩进是否正确,字段是否在正确的位置。此外,检查是否有拼写错误,比如将`Basic`写成小写的"basic",这可能导致解析错误。 可能的步骤包括: 1. 确认Prometheus版本,以确定正确的配置语法。 2. 根据版本调整配置文件,将`authorization`的type改为正确的值,或者改用`basic_auth`。 3. 检查YAML语法是否正确,缩进是否正确。 4. 建议用户使用`promtool`检查配置文件。 5. 提供正确配置示例,帮助用户修改。 同时需要确保用户理解不同版本之间的配置差异,并指导他们查阅官方文档以获取最新的配置说明。可能用户混淆了不同版本的配置方式,或者升级后未正确更新配置文件。</think>您遇到的配置错误反映了Prometheus版本与配置语法的版本冲突,以下是详细解决方案框架: $$ \text{版本适配关系} = \begin{cases} \text{v2.24-2.33} & \Rightarrow authorization.type=Basic \\ \text{v2.34+} & \Rightarrow basic\_auth \text{语法回归} \end{cases} $$ ### 错误根源分析 错误信息明确显示**类型定义与字段选择不匹配**: ```bash "authorization type cannot be set to 'basic', use 'basic_auth' instead" ``` 这说明当前同时存在两种冲突配置: 1. 使用了`authorization`配置块 2. 试图在该块中设置`type: basic` ### 修正步骤说明 #### 第一步:确认Prometheus版本 执行版本检测命令: ```bash ./prometheus --version ``` - 若版本号为`2.34+`,使用`basic_auth`语法 - 若版本号为`2.24-2.33`,使用`authorization`语法 #### 第二步:配置文件改造 **Case 1:当版本≥2.34时**(当前推荐方案) ```yaml scrape_configs: - job_name: 'app_metrics' basic_auth: # 新版恢复的字段 username: monitor_user password: "s3cr3tP@ss" scheme: https ``` **Case 2:当版本=2.24~2.33时**(历史过渡方案) ```yaml scrape_configs: - job_name: 'app_metrics' authorization: # 短命过渡方案 type: Basic # 注意首字母大写 credentials: "dXNlcm5hbWU6cGFzc3dvcmQ=" # base64编码格式 ``` #### 第三步:格式验证 通过工具链进行双重验证: ```bash # 语法格式检查 yamllint prometheus.yml # 配置逻辑校验(需promtool工具) ./promtool check config prometheus.yml ``` ### 版本兼容对照表 | Prometheus版本 | 有效配置方式 | 认证类型标识 | |---------------|--------------------------|------------------| | ≤2.23 | `basic_auth` | 自动识别 | | 2.24-2.33 | `authorization.type` | Basic/Bearer | | ≥2.34 | `basic_auth`(重新引入) | 隐式Basic认证 | ### 典型配置示例 ```yaml # 适用于v2.34+的完整配置片段 scrape_configs: - job_name: 'k8s_nodes' metrics_path: '/metrics' scheme: https basic_auth: username: cluster_monitor password_file: /etc/secrets/prometheus_pass tls_config: insecure_skip_verify: true # 如需忽略证书验证 ``` 建议始终参考[官方配置文档](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)获取最新语法规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hunter_Jun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值