Java 使用Prometheus监视Kubernetes集群中的Spring引导应用程序
我在本地kubernetes集群中部署了spring boot支持的微服务。微服务使用千分尺和普罗米修斯注册,但根据我们公司的政策,致动器可在另一个端口上使用:Java 使用Prometheus监视Kubernetes集群中的Spring引导应用程序,java,spring,spring-boot,kubernetes,prometheus,Java,Spring,Spring Boot,Kubernetes,Prometheus,我在本地kubernetes集群中部署了spring boot支持的微服务。微服务使用千分尺和普罗米修斯注册,但根据我们公司的政策,致动器可在另一个端口上使用: 8080用于“业务”http请求 8081/管理执行器。因此,我可以访问http://host:8081/manage/prometheus并查看本地运行流程时的指标(无kubernetes) 现在,我是普罗米修斯的初学者,对kubernetes的知识相当有限(我有Java开发背景) 我用我的应用程序创建了一个POD,并在kuber
- 8080用于“业务”http请求
- 8081/管理执行器。因此,我可以访问
并查看本地运行流程时的指标(无kubernetes)http://host:8081/manage/prometheus
FROM @docker.registry.address@/prom/prometheus:v2.15.2
COPY entrypoint.sh /
USER root
RUN chmod 755 /entrypoint.sh
ADD ./prometheus.yml /etc/prometheus/
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh看起来像:
#!/bin/sh
echo "About to run prometheus"
/bin/prometheus --config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus \
--storage.tsdb.retention.time=3d \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.console.templates=/etc/prometheus/consoles
我的问题是,我应该如何准确地定义prometheus.yml,以便它能够从我的spring boot pod(以及我拥有的其他微服务,所有spring boot都是用相同的执行器设置驱动的)中获取度量
我从(prometheus.yml
)开始:
但显然这不起作用,所以我一直在征求建议:
- 如果有人有一个有效的例子,那将是最好的:)
- 直觉上,我知道我需要为我的
端口指定端口映射,但我不知道如何指定8081
- 既然普罗米修斯应该在另一个端口上运行,我是否应该在kubernetes级别为端口8081公开kubernetes服务
- 我是否需要在kubernetes中定义任何与安全相关的资源
作为旁注。在这一点上,我不关心可伸缩性问题,我相信一台普罗米修斯服务器可以完成这项工作,但我必须将Grafana添加到图片中。而不是在普罗米修斯配置中硬编码它,您需要利用POD上的注释来告诉普罗米修斯哪些POD、哪些路径以及普罗米修斯应该刮哪个端口
prometheus.io/scrape: "true"
prometheus.io/path=/manage/prometheus
prometheus.io/port=8081
prometheus.io/scheme=http
库伯内特斯上带普罗米修斯的弹簧靴测微计。
Prometheus部署。为了让Prometheus从您的Spring Boot应用程序收集指标,您需要向它添加特定的依赖项。在这里,您可以找到一个指南,说明如何完成此操作:。以下是一个例子:
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_spring_boot</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_hotspot</artifactId>
<version>0.1.0</version>
</dependency>
伊奥·普罗米修斯
:
为了比较不同JDK的性能,对反应式
SpringBootServices,我做了一个设置,其中一个SpringBoot
应用程序包装在Docker容器中。这使我们很容易
使用相同的Spring为不同的JDK创建不同的容器
启动在其中运行的应用程序。Spring启动应用程序公开了
普罗米修斯。Grafana可以读取这些指标并允许
从中进行很好的可视化。这篇博文描述了一个安装程序
几分钟后让你起床跑步
如果有帮助,请告诉我 也许devops SE是一个问这个问题的好地方是的,也许,我没有在那里注册,也许是时候加入我们的武装兄弟社区了:)非常感谢你的回答,但是问题是关于kubernetes配置的。Java相关的部分在测微计上为我工作。话虽如此,我还没有普罗米修斯客户端库的经验,选择了测微计,因为它是一个与spring boot 2集成的计量框架,在spring boot文档中被描述为一个解决方案。如果您有使用此库的实际经验,可以详细说明为什么此解决方案优于测微计,这将是一件非常棒的事情。。。如果我无法设置基于测微计的解决方案,我将尝试此解决方案。到那时为止,我得10分:)非常感谢你的回答,我明天会试试看,更新这个方法对我有效。投了赞成票并接受了答案。多谢了,你是在别的地方定义普罗米修斯的吗?我在您提供的deployment.yaml示例中没有看到它
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_spring_boot</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_hotspot</artifactId>
<version>0.1.0</version>
</dependency>