Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 多吊舱弹簧应用中的Get请求/秒_Spring Boot_Docker_Openshift_Prometheus - Fatal编程技术网

Spring boot 多吊舱弹簧应用中的Get请求/秒

Spring boot 多吊舱弹簧应用中的Get请求/秒,spring-boot,docker,openshift,prometheus,Spring Boot,Docker,Openshift,Prometheus,我在负载平衡环境(OpenShift)中有多个相同Spring Boot应用程序的docker映像(pod),每个docker映像都公开了Prometheus端点。我在Prometheus中使用了以下查询来获取单个docker映像的请求/秒: 速率(http\u服务器\u请求\u秒数\u计数[1m]) 问题在于,当Prometheus从多个pod收集数据时,查询没有返回正确的答案(实际上,每次Prometheus调用应用程序端点时,由于负载平衡器的存在,一个pod将成为目标) 有没有一种方法可以

我在负载平衡环境(OpenShift)中有多个相同Spring Boot应用程序的docker映像(pod),每个docker映像都公开了Prometheus端点。我在Prometheus中使用了以下查询来获取单个docker映像的请求/秒:

速率(http\u服务器\u请求\u秒数\u计数[1m])

问题在于,当Prometheus从多个pod收集数据时,查询没有返回正确的答案(实际上,每次Prometheus调用应用程序端点时,由于负载平衡器的存在,一个pod将成为目标)

有没有一种方法可以通过普罗米修斯获得所有吊舱每秒的请求数


提前谢谢。

听起来像是你把普罗米修斯指向了你的负载均衡器,而不是你的每个实例。这将为您提供完全不可用的度量,因为它们将从您的一个或另一个实例中随机收集,并且这些度量中没有任何内容可以告诉您它来自哪个实例

您需要做的是将Prometheus指向应用程序的每个实例。然后,普罗米修斯将分别从每个实例中收集度量值,并应用一个
实例
标签,其中包含从中收集的实例的IP地址或DNS名称。也就是说,您将有N个独立的
http\u服务器\u请求\u秒数\u计数
指标:

http_server_requests_seconds_count{job="myapp",instance="1.2.3.4:8080"} 1234
http_server_requests_seconds_count{job="myapp",instance="5.6.7.8:8080"} 5678
...

如果然后查询Prometheus
速率(http\u服务器\u请求\u秒数\u计数[1m])
,您将得到一个向量,每个实例有单独的值:

{job="myapp",instance="1.2.3.4:8080"} 1.234
{job="myapp",instance="5.6.7.8:8080"} 5.678

...


如果您需要跨实例的每个作业的请求总速率,您可以查询
sum by(作业)(速率(http\u server\u requests\u seconds\u count[1m])

谢谢您。每个实例的IP可能在每次重新启动时都会更改,并且我们不能有一个稳定的查询(例如在Grafana中使用)。
实例
标签已填充服务地址(例如),而不是实例地址。普罗米修斯支持在kubernetes环境中自动发现POD等。这是一篇很好的文章,你可以在其中找到更详细的解释:你找到解决方案了吗?我在OpenShift中找到了解决方案。您可以为每个吊舱定义一个刮板。但不幸的是,我记不起解决方案的确切路径,因为我一年前就没有参与过这个项目。