51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Prometheus通过Nginx加密node_exporter(三)

上一篇文章介绍了Prometheus通过Nginx反向代理进行登陆认证,那么如果换成node_exporter呢?当然也是可以的。

node_exporter是Prometheus的一个扩展程序,也是通过go语言编写,同样是开箱即食,主要用来采集服务器上的数据(CPU、内存等等)。

我这里介绍一下需求,node_exporter部署在了线上远程服务器上,Prometheus部署在了公司内网中(无公网IP),这样就产生了一个问题,node_exporter如果在远程服务器上运行,势必会打开防火墙,这样node_exporter就暴露在了公网环境下,这么做势必是不安全的,相信没有人愿意把数据暴露出去。

有了上一篇文章的经验,部署起来就容易的多,为了更加容易理解,我这里画了一张图,线上远程服务器node_exporter启动默认端口9100,Nginx暴露端口19100。


远程服务器配置

下载node_exporter
cd /usr/local/src wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz tar xf node_exporter-0.17.0.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/node_exporter-0.17.0.linux-amd64/ /usr/local/node_exporter

|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 | cd /usr/local/src wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz tar xf node_exporter-0.17.0.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/node_exporter-0.17.0.linux-amd64/ /usr/local/node_exporter |

启动node_exporter
cd /usr/local/node_exporter ./node_exporter &

|-----|------------------------------------------------| | 1 2 | cd /usr/local/node_exporter ./node_exporter & |

Nginx配置如下:
server { listen 19100; server_name 你的远程主机IP; location / { proxy_pass http://localhost:9100/; auth_basic "Prometheus"; auth_basic_user_file /usr/local/nginx/conf/401htpasswd; } }

|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 | server { listen 19100; server_name 你的远程主机IP; location / { proxy_pass http://localhost:9100/; auth_basic "Prometheus"; auth_basic_user_file /usr/local/nginx/conf/401htpasswd; } } |

401密钥的生成参考上一篇文章:https://blog.whsir.com/post-4241.html

至此远程服务器配置完成,此时暴露在外的端口为19100,访问http://IP:19100出现401登陆认证!

公司内网Prometheus配置
vi /usr/local/prometheus/prometheus.yml

|---|-----------------------------------------| | 1 | vi /usr/local/prometheus/prometheus.yml |

在Prometheus配置文件下面添加以下内容,username是远程服务器认证账号,password为加密密码,此处IP为远程服务器的IP地址,不需要加http。

  • job_name: server static_configs: - targets: ['IP:19100'] labels: instance: name basic_auth: username: whsir password: blog.whsir.com

|-----------------|------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 | - job_name: server static_configs: - targets: ['IP:19100'] labels: instance: name basic_auth: username: whsir password: blog.whsir.com |

配置完成后记得重启Prometheus,访问内网Prometheus地址,在Targets中可以看到State显示UP成功,如果你账号密码配置错误,则Error会显示401认证失败(server returned HTTP status 401 Unauthorized)。


赞(0)
未经允许不得转载:工具盒子 » Prometheus通过Nginx加密node_exporter(三)