使用nginx的auth_basic实现prometheus 安全认证

贵有恒,何必三更起、五更眠、最无益,只怕一日曝、十日寒。这篇文章主要讲述使用nginx的auth_basic实现prometheus 安全认证相关的知识,希望能为你提供帮助。
prometheus本身是不提供认证服务的,这就带来了一定的安全风险,毕竟有些信息并不是希望任何人都可以看到的。针对这一点可以使用nginx的auth_basic功能来实现认证在本例中
prometheus server 主机ip 192.168.0.191 运行在127.0.0.1:9090nginx监听9000
exporter 主机 192.168.0.251 运行在127.0.0.1:9090 nginx监听9000
结构如图

安装httpd-tools工具?

xxxxxxxxxx

  1
yum -y install httpd-tools

2
cd /opt/

3
htpasswd -c .ht.passwd promauth

?

交互过程中,记住设定的密码,这里设定的密码是promauth
生成的passwd文件需要分发到所有需要使用验证功能的机器上。配置启动 rpometheus
在配置文件加入要监控的exporter配置,targets要指向nginx上开放的端口,basic_auth要写入刚刚设定的用户名密码。

【使用nginx的auth_basic实现prometheus 安全认证】

启动prometheus
./prometheus --config.file=prometheus.yml--web.listen-address=127.0.0.1:9090

exporter在192.168.0.251上执行
./node_exporter --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd--collector.systemd.unit-include="(docker|sshd).service"./node_exporter --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd--collector.systemd.unit-include="(docker|sshd).service --web.listen-address="127.0.0.1:9090"

nginx配置注意:在需要认证的机器上,都要有前几步使用htpasswd生成的文件 /opt/.ht.passwd,没有这个文件nginx会报错。
在nginx配置文件中添加认证配置

cat > /etc/nginx/conf.d/prom.conf < < EOF
server
listen 9000;
location /
auth_basic "promauth";
auth_basic_user_file "/opt/.ht.passwd";
proxy_passhttp://localhost:9090/;


EOF

重载配置文件后,浏览器访问9000端口,ngx会验证用户信息,成功后请求转发到prometheus监听的9090端口上


同时由于prometheus与exporter监听的是127.0.01,所以外部机器无法直接访问。
查看prometheus的web页面上的targets可以看到192.168.0.251的信息。



如果状态为down,需要检查端口nginx代理 认证信息是否正确。






    推荐阅读