你是对的,你需要反向代理。我也遇到了同样的问题,所以你的 prometheus/pushgateway 前面需要 nginx。
首先,使用本文安装 nginx (如果您已经配置了 prometheus,则可以从第 8 步 - 保护 Prometheus 开始):
我的 nginx 配置:
events { }
http {
upstream prometheus {
server 127.0.0.1:9090;
keepalive 64;
}
upstream pushgateway {
server 127.0.0.1:9091;
keepalive 64;
}
server {
root /var/www/example;
listen 0.0.0.0:80;
server_name __;
location / {
auth_basic "Prometheus server authentication2";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://prometheus;
}
}
server {
root /var/www/example;
listen 0.0.0.0:3001;
server_name __;
location / {
auth_basic "Pushgateway server authentication";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://pushgateway;
}
}
}
我的 pushgateway.service 文件:
[Unit]
Description=Pushgateway
Wants=network-online.target
After=network-online.target
[Service]
User=pushgateway
Group=pushgateway
Type=simple
ExecStart=/usr/local/bin/pushgateway --web.listen-address="127.0.0.1:9091" --web.telemetry-path="/metrics" --persistence.file="/tmp/metric.store" --persistence.interval=5m --log.level="info" --log.format="logger:stdout?json=true"
[Install]
WantedBy=multi-user.target
重要的是设置:--web.listen-address="127.0.0.1:9091",而不是 ":9091" - 所以它只会暴露给 localhost。
通过 nginx pushgateway 可以在 3001 端口访问,9091 端口将不公开。需要基本身份验证才能访问或推送指标。
关于如何使用 Postman 进行测试,您可以在此处找到