node_exporter添加访问验证

文章目录
  1. 1. 步骤1:密码哈希
  2. 2. 步骤2:创建web.yml
  3. 3. 步骤3:启动Prometheus
  4. 4. 步骤4:测试
  5. 5. (可选)步骤5:node_exporter以docker的方式运行
  6. 6. 步骤6:在server端的prometheus.yml添加验证信息
  7. 7. 步骤7:测试验证
    1. 7.1. 参考资料

假设你想要求所有访问Prometheus实例的用户提供用户名和密码。为了这个例子,使用admin作为用户名,并选择任何你喜欢的密码。

步骤1:密码哈希

首先,生成密码的bcrypt哈希值。为了生成哈希密码,我们将使用python3-bcrypt。让我们通过运行apt install python3-bcrypt来安装它,假设你正在运行类似debian的发行版。其他替代方案也存在来生成哈希密码;为了测试,你也可以使用网上的bcrypt生成器。

这里是一个使用python3-bcryptpython脚本,它会提示你输入密码并对其进行哈希处理:

1
2
3
4
5
6
7
import getpass
import bcrypt
# 提示输入密码
password = getpass.getpass("password: ")
hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
# 获取密码的哈希值
print(hashed_password.decode())

步骤2:创建web.yml

让我们创建一个web.yml文件,内容如下:

1
2
basic_auth_users:
admin: $2b$12$hNf2lSsxfm0.i4a.1kVpSOVyBCfIB51VRjgBUyv6kdnyTlgWj81Ay

注意用户名:【空格】密码

你可以使用promtool check web-config web.yml来验证该文件

步骤3:启动Prometheus

你可以使用web配置文件来启动prometheus

1
$ prometheus --web.config.file=web.yml

步骤4:测试

1
2
3

curl -u admin http://localhost:9090/metrics

(可选)步骤5:node_exporter以docker的方式运行

在原有运行容器的命令中加上--web.config.file=/xxx/xxx/web.yml

1
2
3
4
# 原有命令
docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" --name prom-node quay.io/prometheus/node-exporter:latest --path.rootfs=/host
# 启用验证命令
docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" --name prom-node quay.io/prometheus/node-exporter:latest --path.rootfs=/host --web.config.file=/host/data/prometheus/config.yml

步骤6:在server端的prometheus.yml添加验证信息

1
2
3
4
5
6
- job_name: 'node'
static_configs:
- targets: ['xxx.xxx.xxx.xxx:9100']
basic_auth:
username: admin # 用户名
password: xxxx # 明文密码

步骤7:测试验证

登录到server前台,验证是否能够获取node数据

参考资料