Prometheus 除了提供时序数据库和监控系统存在,其本身也对外提供了 Web 服务,用于提供报表展示及表达式计算,以及用于更新配置文件等功能的 API。

处于安全考虑,在对外的 Web 服务里,我们需要增加身份认证。Prometheus 提供 Basic Auth 身份认证。

计算 Hash

Prometheus 官网提供了两种方式计算 Hash:一种是直接访问 bcrypt, 在线生成。另一种则是通过 Python 脚本完成 hash 计算。

具体代码如下:

1
2
3
4
5
6
import getpass
import bcrypt

password = getpass.getpass("password: ")
hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
print(hashed_password.decode())

创建配置文件

在 /etc/prometheus 目录下,创建 config.yml 文件。文件内容如下:

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

使用 prometheus 自带的 promtool 进行配置文件校验:

1
2
$ promtool check web-config web.yml
web.yml SUCCESS

启动服务

完成配置文件创建后,使用 web.config.file 参数进行配置文件加载:

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

当 prometheus 服务启动后,可以通过 curl 进行验证:

1
curl --head http://localhost:9090/graph

在未增加 Basic Auth 请求头的情况下,服务返回 401 与我们预期一致。