背景
在日常prometheus的使用中是没有安全加密措施的,可能会导致监控信息,敏感信息遭遇泄漏。在这种情况下需要保护对Prometheus的访问。
方案简介
Prometheus于2.24版本(包括2.24)之后提供Basic Auth功能进行加密访问,在浏览器登录UI的时候需要输入用户密码,访问Prometheus api的时候也需要加上用户密码。
一、Prometheus Server的安全认证配置
1.1、准备认证文件
生成认证文件的方法有多种,如使用python、用htpasswd等,本文使用htpasswd生成
CentOS系统上安装htpasswd工具:
~# yum -y install httpd-tools
Ubuntu系统上安装htpasswd工具:
~# apt -y install apache2-utils
生成认证文件:
~# htpasswd -nbB -C 10 admin admin123
写入如下内容:
1.2、修改prometheus的service文件
~# vim /usr/lib/systemd/system/prometheus.service
在service文件里添加如下选项,为prometheus进程指定认证文件
之后重新加载service文件,并重启prometheus进程
~# systemctl daemon-reload && systemctl restart prometheus
1.3、Web页面验证
通过以上已经完成了Prometheus Server的用户认证设置,现在通过Web访问Prometheus,需要用户名、密码认证:
1.4、Grafana访问认证
因为grafana需要读取Prometheus的数据,此时Grafana上也需要用户名、密码认证了:
这是需要在Grafana的数据源配置Prometheus的安全认证,如下,找到Prometheus的数据源,Authentication配置项中配置用户名密码
先跳过TLS证书验证,配置上Prometheus Server的用户名密码后,Grafana上的仪表板才能正常打开:
二、Node_exporter的安全认证
Node_exporter的安全认证配置与Prometheus Server的安全认证过程类似
2.1、准备安全认证文件
使用的工具与Prometheus Server使用工具一样
~# htpasswd -nbB -C 10 k8s-master01 k8s-master01123
2.2、编辑认证文件
2.3、修改node_exporter的service文件
在service文件里添加如下选项:
2.4、重启node_exporter
~# systemctl daemon-reload && systemctl restart node_exporter
2.5、Web访问node_exporter
现在访问Node_exporter的web压面,需要填写用户名密码
三、Prometheus Server上添加Prometheus和Node_exporter的密码
经过一、二步骤,Prometheus Server和Node_exporter都设置了用户名密码,访问它们的指标数据都需要用户名密码,这种情况下Prometheus Server采集自己的指标和Node_exporter的指标都需要用户名名
没在Prometheus的配置文件里添加用户名密码时,Prometheus的Web页面上会报未认证:
3.1、修改Prometheus Server的配置文件
在prometheus.yml文件中,prometheus自己的采集任务下添加basic_auth,如下
3.2、验证指标采集
重启Prometheus后,再通过Web查看Prometheus,可以看到自己的状态已经能正常采集:
![
]
同样在172.16.1.12这台联邦节点上配置自己Promethes的用户名密码和Node_exporter的用户名密码
重启后,172.16.1.12也能正常采集到自己和k8s-master01的指标数据了
3.3、Prometheus Server采集联邦节点的安全认证
通过以上3.1、3.2配置了核心节点采集自己的指标,172.16.1.12采集自己的指标和k8s-master01的指标
Prometheus核心Server采集联邦节点172.16.1.12上的指标时还未认证,如下:
需要在Prometheus核心节点上配置联邦节点172.16.1.12的用户密码才可以,方法同3.1和3.2
重启Prometheus核心节点的Prometheus后,即可正常采集联邦节点172.16.1.12的指标数据了
3.4、在Grafana上检查验证
以上三级认证已配置完成,最终在Grafana上检查验证能否查看到k8s-master01节点到指标数据
欢迎关注作者的公众号,公众号每天分享运维干货文章