gpt4 book ai didi

java - 使用Prometheus监控Kubernetes集群中的Spring Boot应用程序

转载 作者:行者123 更新时间:2023-12-02 00:59:24 30 4
gpt4 key购买 nike

我在本地 kubernetes 集群中部署了由 Spring Boot 支持的微服务。微服务使用 micrometer 和 prometheus 注册表,但由于我们公司的政策,执行器可在另一个端口上使用:

  • 8080 用于“业务”http 请求
  • 8081/管理执行器。因此,我可以访问 http://host:8081/manage/prometheus 并在本地运行进程时查看指标(无需 kubernetes)。

现在,我是 Prometheus 的初学者,对 kubernetes 的了解相当有限(我有 Java 开发人员背景)。

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

但是我还没有找到任何在图片中添加普罗米修斯的例子。 Prometheus 应该与另一个 pod 一样部署在同一个 kubernetes 集群中。所以我开始了:


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) 开始:

global:
scrape_interval: 10s
evaluation_interval: 10s

scrape_configs:

- job_name: 'prometheus'
metrics_path: /manage/prometheus
kubernetes_sd_configs:
- role: pod
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
action: keep
regex: sample-pod-app(.*)|another-pod-app(.*)

但显然它不起作用,所以我寻求建议:

  • 如果有人有一个可行的示例那就最好了:)
  • 直觉上我知道我需要为我的 8081 端口指定端口映射,但我不知道如何指定
  • 由于 prometheus 应该在另一个端口上运行,我是否应该在 kubernetes 级别公开端口 8081 的 kubernetes 服务?
  • 我需要在 kubernetes 中定义任何与安全相关的资源吗?

作为旁注。此时我不关心可扩展性问题,我相信一台普罗米修斯服务器就可以完成这项工作,但我必须将 Grafana 添加到其中。

最佳答案

您需要在 pod 上使用注释来告诉 prometheus 哪些 pod、什么路径和哪个端口 Prometheus 应该抓取,而不是在 prometheus 配置中对其进行硬编码。

prometheus.io/scrape: "true"
prometheus.io/path=/manage/prometheus
prometheus.io/port=8081
prometheus.io/scheme=http

Spring Boot 千分尺example与 kubernetes 上的 Prometheus 一起使用。普罗米修斯部署guide .

关于java - 使用Prometheus监控Kubernetes集群中的Spring Boot应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59819316/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com