使用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

结构如图

使用nginx的auth_basic实现prometheus

安装httpd-tools工具

xxxxxxxxxx
 123

使用nginx的auth_basic实现prometheus

交互过程中,记住设定的密码,这里设定的密码是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_pass http://localhost:9090/;


EOF

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


使用nginx的auth_basic实现prometheus

同时由于prometheus与exporter监听的是127.0.01,所以外部机器无法直接访问。

查看prometheus的web页面上的targets可以看到192.168.0.251的信息。

使用nginx的auth_basic实现prometheus


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



以上是关于使用nginx的auth_basic实现prometheus 安全认证的主要内容,如果未能解决你的问题,请参考以下文章

Nginx环境使用auth_basic密码保护wordpress后台登录界面

nginx配置指令auth_basic、auth_basic_user_file及相关知识

nginx配置auth_basic登录认证的方法

nginx返回错误状态码401

nginx 实现基于basic用户认证机制

nginx 添加basic auth