作者:PushProx 2022-03-14 08:25:49
云计算
云原生 PushProx 主要由 proxy 和 client 两部分组成,proxy 负责接收来自 prometheus server 的 metric 请求,然后 proxy 将请求信息 proxy 给 client,client 找本地设备获取到 metric 后,将结果返回给 proxy。
成都创新互联专注于酉阳土家族苗族网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供酉阳土家族苗族营销型网站建设,酉阳土家族苗族网站制作、酉阳土家族苗族网页设计、酉阳土家族苗族网站官网定制、微信小程序服务,打造酉阳土家族苗族网络公司原创品牌,更为您提供酉阳土家族苗族网站排名全网营销落地服务。
我们知道 Prometheus 是 Pull 模式去拉取监控指标的,但是在有些场景下面并不能直接访问到的时候,就需要使用一些附加的方式,PushProx 就是应用于这种场景的。PushProx 是一个客户端和代理,它允许 Prometheus 穿透 NAT 和其他类似的网络拓扑,同时仍然遵循 Pull 模式拉取指标。
PushProx 主要由 proxy 和 client 两部分组成,proxy 负责接收来自 prometheus server 的 metric 请求,然后 proxy 将请求信息 proxy 给 client,client 找本地设备获取到 metric 后,将结果返回给 proxy。要求 proxy 部署在 prometheus 能够访问到的地方,client 则部署在需要采集的 node 所在的网络。
它适用于以下网络环境:
每个客户端有其 fqdn 标识,Prometheus 通过 PushProx 抓取目标 fqdn-x时,执行以下的操作过程:
PushProx 透明地传递所有 HTTP 标头,压缩和接受编码等功能取决于抓取 Prometheus 服务器。
这里测试我们需要用到以下组件进行测试:
由于目前 proxy 和 client 之间没有做认证,client 所在 ip 不确定,proxy 无法针对 client 配置防火墙策略,需要增加 proxy 和 client 之间的认证。
使用 tls 来对 client 进行校验。pushprox-proxy 不支持 tls,需要 nginx 作为反向代理到 pushprox-proxy,然后 nginx 上配置 tls,并且在 nginx 上开启 ssl_verify_client 。pushprox-client 支持 tls 客户端连接到 nginx 。pushprox-client 要求 tls 要支持 SAN(Subject Alternative Name) 是SSL 标准x509 中定义的一个扩展)。所以生成自签名证书的时候需要支持 SAN 。这里我们可以参考 https://github.com/ljq/gen-tlsv3-san-ca 来生成自签名证书。
pushprox-proxy 需要部署在公网的服务器上,而且 pushprox-proxy 要跟每个 client 保持一个长连接,如果 client 比较多, proxy 要考虑负载均衡。
./pushprox-proxy
nginx 反向代理到 pushprox-proxy, nginx 上配置 tls(pushprox.conf):
upstream prox-backend {
server 127.0.0.1:8080;
}
server {
listen 443 ssl;
server_name promprox.k8s.local;
ssl on;
ssl_certificate /opt/xk-self-cert/server.crt; #配置证书位置
ssl_certificate_key /opt/xk-self-cert/server.key; #配置秘钥位置
ssl_client_certificate /opt/xk-self-cert/ca.crt; #双向认证
ssl_verify_client on; #双向认证
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://prox-backend/;
}
}
pushprox-client 要配置自签名证书中的 ca 和 client crt。
./pushprox-client --proxy-url=https://promprox.k8s.local --tls.cacert=/opt/xk-self-cert/ca.crt --tls.cert=/opt/xk-self-cert/client.crt --tls.key=/opt/xk-self-cert/client.key
./prometheus --config.file=prometheus-prox.yml
配置文件如下所示:
# prometheus-prox.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: node
proxy_url: http://xx.xx.xx.xx:8080/ # 配置为 proxy 的地址
static_configs:
- targets: ['ceph-local:9100'] # Presuming the FQDN of the client is "client".
正常就可以抓取到指标数据了。
网站栏目:允许Prometheus通过NAT抓取指标的工具-PushProx
当前URL:http://www.mswzjz.cn/qtweb/news43/398843.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能