使用nginx的auth_basic实现prometheus 安全认证
Posted quietguoguo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用nginx的auth_basic实现prometheus 安全认证相关的知识,希望对你有一定的参考价值。
prometheus本身是不提供认证服务的,这就带来了一定的安全风险,毕竟有些信息并不是希望任何人都可以看到的。针对这一点可以使用nginx的auth_basic功能来实现认证在本例中
prometheus server 主机ip 192.168.0.191 运行在127.0.0.1:9090 nginx监听9000
exporter 主机 192.168.0.251 运行在127.0.0.1:9090 nginx监听9000
结构如图
安装httpd-tools工具
xxxxxxxxxx
1yum -y install httpd-tools
2cd /opt/
3htpasswd -c .ht.passwd promauth
交互过程中,记住设定的密码,这里设定的密码是promauth
生成的passwd文件需要分发到所有需要使用验证功能的机器上。配置启动 rpometheus
在配置文件加入要监控的exporter配置,targets要指向nginx上开放的端口,basic_auth要写入刚刚设定的用户名密码。
启动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_pass http://localhost:9090/;
EOF
重载配置文件后,浏览器访问9000端口,ngx会验证用户信息,成功后请求转发到prometheus监听的9090端口上
同时由于prometheus与exporter监听的是127.0.01,所以外部机器无法直接访问。
查看prometheus的web页面上的targets可以看到192.168.0.251的信息。
如果状态为down,需要检查端口nginx代理 认证信息是否正确。
以上是关于使用nginx的auth_basic实现prometheus 安全认证的主要内容,如果未能解决你的问题,请参考以下文章
Nginx环境使用auth_basic密码保护wordpress后台登录界面