如何用Nginx代理添加自定义HTTP头采集Prometheus指标?
问题描述
需要从要求携带自定义HTTP头x-service-token的端点采集Prometheus指标,但Prometheus仅支持Authorization头,没有提供自定义HTTP头采集的选项。
已有Nginx正向代理方案
有用户分享了通过Nginx搭建正向代理的解决思路:
为方便其他用户参考,我提供一个可用的Nginx配置(我并非Nginx专家,还请见谅!;)
我通过Docker运行该代理,以下是监听9191端口的Nginx正向代理配置文件:http { map $request $targetport { ~^GET\ http://.*:([^/]*)/ "$1"; } server { listen 0.0.0.0:9191; location / { proxy_redirect off; proxy_set_header NEW-HEADER-HERE "VALUE"; proxy_pass $scheme://$host:$targetport$request_uri; } } } events { }运行透明正向代理的命令:
docker run -d --name=nginx --net=host -v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro nginx
在Prometheus任务(或全局配置)中添加proxy_url字段:- job_name: 'somejob' metrics_path: '/something/here' proxy_url: 'http://proxyip:9191' scheme: 'http' static_configs: - targets: - '10.1.3.31:2004' - '10.1.3.31:2005'原作者:@sra
实际配置遇到的问题
- 未使用host网络,改用
host.docker.internal替代localhost时,Nginx无法连接目标端点,报错信息如下:nginx | 172.26.0.4 - - [31/Oct/2022:16:07:38 +0000] "GET http://host.docker.internal:8080/actuator/prometheus HTTP/1.1" 502 157 "-" "Prometheus/2.39.1" - 该方案要求将API密钥硬编码在Nginx配置文件中,存在意外提交到代码仓库的安全风险。
此外,相关的GitHub问题已被锁定无法跟进提问,StackOverflow上的两个同类问题也未给出有效解决方案。
内容的提问来源于stack exchange,提问作者aSemy
相关产品推荐
相关产品推荐

