Prometheus通过Nginx防盗链加密node_exporter

发布时间 2023-03-24 10:55:20作者: 不积硅步,无以至千里

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

主机Prometheus可以通过部署在客户端的node_exporter拉取到数据,只需要在Prometheus.yml里面添加一个job就可以了。

当线上服务器的客户端端口的node_exporter暴露在外面,所以加上nginx的auth认证可以增加安全性。

 

 远程服务器配置

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 &

配置node_exporter启停

vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
ExecStart=/promethus/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

保存完记得systemctl daemon-reload

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;
    }
}

注意:这里的监听19100是反向代理出去的,所以要会有两个端口,一个是内部访问的9100, 然后跳转出去19100出去。

如何添加htpasswd生成密码功能可以参考:https://www.cnblogs.com/zpzp/p/16276888.html

公司内网Prometheus配置

vim /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

 参考:https://blog.whsir.com/post-4328.html