一、Prometheus Basic Auth 使用背景
TiDB 集群在默认情况下,对 Prometheus监控数据是没有加密的,通过浏览器可以直接访问 Prometheus,可能会导致监控数据信息遭遇泄漏。如果需要对 Prometheus 监控数据进行安全加密,则需要使用 Prometheus Basic Auth 。
二、方案简介
Prometheus于2.24版本(包括2.24)之后提供Basic Auth功能进行加密访问,在浏览器登录UI的时候需要输入用户密码,访问Prometheus api的时候也需要加上用户密码。
配置 Prometheus 加密步骤:
- 预制用户密码,其中密码可使用python3工具包加密
- 创建对应用户加密密码配置文件
- 升级 TiUP 到 1.15.0 版本及以上(TiDB 8.0 以上)
- TiUP 配置 Prometheus 登录安全验证参数
- Grafana 监控配置 Prometheus 登录验证
三、升级 TiUP & TiUP Cluster 到 1.15.0 以上
- 以离线集群为TiDB v6.5.5版本为例,从TiDB 官网下载 V8.1.0 LTS 及以上 TiDB-community-server 软件包 https://cn.pingcap.com/product-community/
- 上传并解压安装包
- 升级 TiUP &TiUP Cluster
查看当前镜像路径
tiup mirror show
将当前离线镜像中的 keys 目录复制到 $HOME/.tiup 目录中:
cp -r /opt/tidb-community-server-v6.5.5-linux-amd64/keys /root/.tiup/
合并8.1镜像到当前镜像中
tiup mirror merge /opt/tidb-community-server-v8.1.0-linux-amd64
升级
tiup update --self && tiup update cluster
检查版本
tiup cluster -v
tiup version 1.15.0 tiup
Go Version: go1.21.9
Git Ref: v1.15.1
GitHash: 7f0e0fa8b7d5521075a9be2015eff442769fad47
tiup -v
1.15.0 tiup
Go Version: go1.21.9
Git Ref: v1.15.1
GitHash: 7f0e0fa8b7d5521075a9be2015eff442769fad47
四、配置 Prometheus 安全认证
1、编写验证配置文件
使用python生成的密码:$2b$12$kXxrZP74Fmjh6Wih0Ignu.uWSiojl5aKj4UnMvHN9s2h/Lc/ui0.S
vi webconfig.yml
basic_auth_users:
admin: $2b$12$kXxrZP74Fmjh6Wih0Ignu.uWSiojl5aKj4UnMvHN9s2h/Lc/ui0.S
2、检测是否可用
cd /tidb-data1/tidb-deploy/prometheus-8249/bin/prometheus
./promtool check web-config webconfig.yml
3、TiUP 配置 Prometheus 启动参数
tiup cluster edit-config tidb-test
末尾处增加 additional_args 启动命令
monitoring_servers:
- host: 192.168.1.11
ssh_port: 22
port: 9090
ng_port: 12020
deploy_dir: /tidb-data1/tidb-deploy/prometheus-8249
data_dir: /tidb-data1/tidb-data/prometheus-8249
log_dir: /tidb-data1/tidb-deploy/prometheus-8249/log
external_alertmanagers: []
arch: amd64
os: linux
additional_args:
- --web.config.file=/tidb-data1/tidb-deploy/prometheus-8249/bin/prometheus/webconfig.yml
4、重启加载 Prometheus 配置
tiup cluster reload tidb-test -R prometheus
5、访问 Prometheus UI
192.168.1.11:9090
6、直接访问 Prometheus http API接口
curl localhost:9090/api/v1/query?query=up
7、带用户信息访问 Prometheus http API接口
curl -u "admin:test" localhost:9090/api/v1/query?query=up