在Prometheus中添加基本身份验证功能,可以按照以下步骤进行:
一、生成哈希密码
首先,需要安装bcrypt工具,用于生成哈希密码。这可以通过Python的bcrypt库来完成。如果未安装,可以使用pip进行安装。
创建一个Python脚本,利用bcrypt对原始密码进行哈希处理。脚本会提示输入密码,然后输出哈希后的密码串。
pip install bcrypt
import bcrypt
import getpass
import base64
def hash_password(password):
# 使用bcrypt的gensalt函数生成一个随机的盐值
salt = bcrypt.gensalt()
# 使用哈希函数和盐值对密码进行哈希处理
hashed = bcrypt.hashpw(password.encode('utf-8'), salt)
return hashed
# 提示用户输入密码
password = getpass.getpass("请输入密码: ") # 123456
# 对密码进行哈希处理
hashed_password = hash_password(password)
# 输出哈希后的密码(注意:这只是一个二进制字符串,你可能想以十六进制形式输出)
print("哈希后的密码(二进制): ", hashed_password)
# 如果你想要以十六进制形式输出哈希,可以使用以下代码
print("哈希后的密码(十六进制): ", hashed_password.hex())
# 但请注意,.hex() 方法可能不适用于所有二进制数据,因为哈希结果可能包含无法直接转换为十六进制的字符
# 使用base64编码哈希结果以便打印或存储
hashed_password_base64 = base64.b64encode(hashed_password).decode('utf-8')
print("哈希后的密码(base64编码): ", hashed_password_base64)
或采用Linux htpasswd 生成哈希密码:
htpasswd -nBC 12 '' | tr -d ':\n'
二、配置Prometheus的身份验证
在Prometheus的配置目录下(例如/etc/prometheus,和prometheus.yml配置文件同目录),创建一个新的YAML配置文件,如web.yml。
在web.yml
文件中,添加basic_auth_users
部分,并设置用户名和哈希后的密码。例如:
basic_auth_users:
admin: $2y$12$qOf5.tSlLh/OJH7yqAl3oOOZJibU3.KLWmiQopx47iPxOkXkkEQLS
其中,admin是设置的用户名,$2y 12 12 12qOf5.tSlLh/OJH7yqAl3oOOZJibU3.KLWmiQopx47iPxOkXkkEQLS是(123456)哈希后的密码。可以根据需要设置多个用户。保存并关闭文件。
三、验证并重启Prometheus
使用Prometheus提供的promtool工具来验证配置文件的正确性。在命令行中执行类似以下的命令:
promtool check web-config /etc/prometheus/web.yml
如果输出SUCCESS
,则表示配置文件校验通过。
修改Prometheus的启动参数,新增--web.config.file
选项来指定身份验证配置文件。例如:
--web.config.file=/etc/prometheus/web.yml
重启Prometheus服务以使配置生效。具体重启命令取决于操作系统和Prometheus的安装方式。例如,在使用systemd的系统中,可以使用以下命令重启服务:
systemctl restart prometheus
四、测试身份验证功能
重启Prometheus后,尝试通过浏览器访问Prometheus的Web UI。此时应该会弹出一个身份验证对话框,要求输入用户名和密码。输入之前设置的用户名和原始密码123456(不是哈希后的密码,),如果一切正常,应该能够成功登录并查看Prometheus的监控数据。
五、curl访问Prometheus中reload等接口
curl -u admin:123456 -XPOST http://localhost:9090/promtheus/-/reload