在 Kubernetes 上使用 Prometheus 监控 Spring Boot 应用程序,而不是设置端点
Posted
技术标签:
【中文标题】在 Kubernetes 上使用 Prometheus 监控 Spring Boot 应用程序,而不是设置端点【英文标题】:Monitor Spring Boot Apps using Prometheus on Kubernetes , not setting end Points 【发布时间】:2019-10-13 19:49:49 【问题描述】:我正在尝试在 Kubernetes 上使用 Prometheus 监控 Spring Boot 应用程序。 Promethus 使用 Helm 安装,而我使用 Spring Boot Actuator 进行健康检查、审计、指标收集和监控。
执行器提供有关应用程序的详细信息。例如
http://**IP:Port**/actuator/health
在输出下方返回
"status":"UP".
我使用下面的配置文件在promethus中添加应用程序端点。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: scp-service-creator
namespace: sc678
labels:
app: scp-service-creator
release: prometheus-operator
spec:
selector:
matchLabels:
app: scp-service-creator
endpoints:
- port: api
path: "/actuator/prometheus"
scheme: http
interval: 10s
honorLabels: true
所以我的问题是即使将服务添加到 prometheus ,也没有分配端点。 那么这里有什么问题。非常感谢您的帮助。
谢谢。
【问题讨论】:
可以提供prometheus.yaml
吗?
没有使用这样的文件。 Prometheus 是通过 Helm 安装的。
【参考方案1】:
从Spring Boot Actuator documentation,更具体地说是Endpoints 部分。可以读到端点是默认启用的,除了Shutdown
被禁用,但只有health
和info
被公开。
这个可以查here。
您需要手动公开所需的 Endpoint。
您要使用的端点 Prometheus
不适用于 JMX,并且对 Web 禁用。
要更改公开的端点,请使用以下特定于技术的
include
和exclude
属性:房产 |默认
management.endpoints.jmx.exposure.exclude
|
management.endpoints.jmx.exposure.include
| *
management.endpoints.web.exposure.exclude
|
management.endpoints.web.exposure.include
|info, health
include
属性列出了公开的端点的 ID。exclude
属性列出不应公开的端点的 ID。exclude
property 优先于include
属性。include
和exclude
属性都可以配置端点 ID 列表。例如,要停止通过 JMX 公开所有端点并仅公开
health
和info
端点,请使用以下属性:
management.endpoints.jmx.exposure.include=health,info
*
可用于选择所有端点。例如,要通过 HTTP 公开除env
和beans
端点之外的所有内容,请使用以下属性:
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans
【讨论】:
以上是关于在 Kubernetes 上使用 Prometheus 监控 Spring Boot 应用程序,而不是设置端点的主要内容,如果未能解决你的问题,请参考以下文章
使用 terraform 在 kubernetes 上计划重启
使用 zeppelin 在 kubernetes 上运行 Spark