Prometheus

55479
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

Basic authentication


Prometheus 支持使用 basic authentication(basic auth,即基本认证)以连接到 Prometheus 的表达式浏览器HTTP API

注意:本教程涵盖了对 Prometheus 实例进行基本认证的连接。基本认证也支持从 Prometheus 实例到抓取 Target 的连接。

密码散列

现在假设你希望所有访问 Prometheus 实例的用户提供用户名和密码。对于这个示例,请使用admin作为用户名,并选择任意密码。

首先,使用 bcrypt 生成密码的散列。为了生成散列密码,我们将使用 python3-bcrypt。

如果你正在运行一个类似于 Debian 的发行版,则可以通过运行apt install python3-bcrypt来安装它。其他替代方案也可以用于生成散列密码,在测试时,你可以使用网络上的 bcrypt 生成器

以下是一个使用 python3-bcrypt 提示输入密码并对其进行散列的 Python 脚本:

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

将此脚本保存为 gen-pass.py 并运行它:

Terminal window
$ python3 gen-pass.py

根据提示输入你的密码:

密码:
$2b$12$hNf2lSsxfm0.i4a.1kVpSOVyBCfIB51VRjgBUyv6kdnyTlgWj81Ay

在这个例子中,我们使用了 “test” 作为密码。现在,将这个散列后的密码保存在某个位置,因为接下来的步骤中也会用到它!

创建 web.yml 文件

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

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

你可以使用 promtool check web-config web.yml 验证该文件的格式。

Terminal window
$ promtool check web-config web.yml
web.yml 成功

你可以向文件中添加多个用户。

启动 Prometheus

可以使用 web 配置文件启动 Prometheus,如下所示:

Terminal window
$ prometheus --web.config.file=web.yml

测试

你可以使用 cURL 与你配置的 Prometheus 进行交互。尝试以下命令:

Terminal window
curl --head http://localhost:9090/graph

这将会返回401 Unauthorized响应,因为你没有提供有效的用户名和密码。

要成功访问使用 basic auth 的 Prometheus 端点,例如/metrics端点,请使用-u标志提供正确的用户名,并在后续提示中提供密码:

Terminal window
curl -u admin http://localhost:9090/metrics
Enter host password for user 'admin':

这应返回 Prometheus 的元数据,看起来类似:

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.0001343
go_gc_duration_seconds{quantile="0.25"} 0.0002032
go_gc_duration_seconds{quantile="0.5"} 0.0004485
...

概述

在这篇指南中,你将用户名和散列后的密码存储在web.yml文件中,并通过参数将这些信息用于访问使用 basic auth 的 Prometheus 的 HTTP 端点。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32