Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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
Java 使用Prometheus监视Kubernetes集群中的Spring引导应用程序_Java_Spring_Spring Boot_Kubernetes_Prometheus - Fatal编程技术网

Java 使用Prometheus监视Kubernetes集群中的Spring引导应用程序

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

我在本地kubernetes集群中部署了spring boot支持的微服务。微服务使用千分尺和普罗米修斯注册,但根据我们公司的政策,致动器可在另一个端口上使用:

  • 8080用于“业务”http请求
  • 8081/管理执行器。因此,我可以访问
    http://host:8081/manage/prometheus
    并查看本地运行流程时的指标(无kubernetes)
现在,我是普罗米修斯的初学者,对kubernetes的知识相当有限(我有Java开发背景)

我用我的应用程序创建了一个POD,并在kubernetes中成功运行了它。它可以工作,我可以访问它(对于8080,我创建了一个服务来映射端口),我可以从同一台PC执行“业务”级别的http请求

但是我还没有找到任何在图片中添加普罗米修斯的例子。普罗米修斯应该和另一个吊舱部署在同一个库伯内特斯星系群中。所以我从以下几点开始:


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>