带有Istio Proxy的Prometheus并未从所有Pod中抓取指标

时间:2020-07-21 18:08:50

标签: kubernetes openshift prometheus istio

我们在一个命名空间中的 OpenShift 中有 Prometheus (例如: “ TestNamespace ”),它是从 两个 POD 中的 Application 抓取的指标em>(例如,命名为 TestApp )在同一命名空间中。 Prometheus会以以下方式抓取指标:“ 服务 ”(“ 角色:服务”-文件中的“ prometheus.yaml < / strong>”),因此它被轮循 POD 中抓取了,但是我们需要从所有POD中抓取。

注意 Prometheus TestApp 使用了 Istio代理-这就是为什么我们立即选择 Prometheus 中的“ 角色:服务”,因为如果我们打开“ 端点”模式(即 prometheus)。 yaml :“ 角色:端点”),我们收到错误消息: Prometheus 中的“ 502错误的网关”,指标未清除。 / p>

我们尝试了以下解决方案:无头服务https://dev.to/kaoskater08/building-a-headless-service-in-kubernetes-3bk8

该解决方案的结果:

ip address by service/test-app-service: 172.30.81.196

和IP地址通过 headless-service

test-app-1-7d6hv  2/2  Running 10.128.38.24    some-host-0027.vm.com
test-app-1-jhcdm  2/2  Running 10.128.36.240   some-host-0025.vm.com

然后,如果这样做:

##    requests to 172.30.81.196 (created by regular service.yaml)

#http-request from the Prometheus POD: 
wget -qO- http://172.30.81.196:8080  -> result success
#http-request from the side-car "istio-proxy" in Prometheus POD: 
curl http://172.30.81.196:8080  -> result success

没有问题。 但是,如果

##    reqeusts to 10.128.38.24 (headless-service)

#http-request from the side-car istio-proxy in Prometheus POD: 
curl http://10.128.38.24:8080  -> result success
#http-request from the Prometheus POD: 
wget -qO- http://10.128.38.24:8080  -> 502 Bad Gateway

或下一个IP:

##   reqeusts to 10.128.36.240 (headless-service)   

#http-request from the side-car istio-proxy in prometheus POD: 
curl http://10.128.36.240:8080  -> result success

#http-request from the Prometheus POD: 
wget -qO- http://10.128.36.240:8080  -> 502 Bad Gateway

因此,在POD的Prometheus中已经出现了问题: 502错误的网关。 Prometheus并未刮除度量标准,它具有此错误,我们也可以在Prometheus UI的“目标”部分中看到。

但是没问题,如果通过POD的Prometheus 带标头的终端自定义http请求来完成:

wget -qO- http://10.128.38.24:8080 --header="Host: {service_name_in_openshift}:{service_port}" -> resulted success.

那么,我们如何解决Prometheus来从应用程序的所有 POD中抓取指标吗?最好的解决方法是什么?

0 个答案:

没有答案