我正在尝试使用 grafana 可视化我的 Spring 应用程序(直到现在仍在本地主机上)指标。为此,我首先使用 HikariCP 配置了一个连接池,并使用 Jmx (MBean) 添加了监控功能。直到这一步,一切正常。
然后我启动了 Grafana,一个 Prometheus 和一个 jmx-prometheus-exporter docker 容器。
这是我的码头工人撰写文件
版本:'3'
服务:
grafana:
image: grafana/grafana:latest
ports:
- 3000:3000
prometheus:
image: prom/prometheus:latest
ports:
- 9090:9090
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
jmx-exporter:
image: sscaling/jmx-prometheus-exporter
ports:
- 5556:5556
这是普罗米修斯配置文件
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
labels:
group: 'prometheus'
- job_name: 'app-server'
static_configs:
- targets: ['localhost:8080']
- job_name: 'jmx-exporter'
static_configs:
- targets: ['jmx-exporter:5556']
在 prometheus 中:"http://localhost:9090/targets"
我可以将 jmx-prometheus-exporter 和 prometheus 本身视为健康服务。
访问时,http://localhost:5556/
我看到了一些值,但没有任何东西表明它们是特定于我的应用程序的(我没有看到我设置的池名称......),这似乎是合乎逻辑的,因为我看不到 jmx 的位置容器配置为从我的应用程序(本地 jmx)读取指标
# TYPE java_lang_MemoryPool_UsageThresholdSupported untyped
java_lang_MemoryPool_UsageThresholdSupported{name="Metaspace",} 1.0
java_lang_MemoryPool_UsageThresholdSupported{name="PS Old Gen",} 1.0
java_lang_MemoryPool_UsageThresholdSupported{name="PS Eden Space",} 0.0
java_lang_MemoryPool_UsageThresholdSupported{name="Code Cache",} 1.0
java_lang_MemoryPool_UsageThresholdSupported{name="Compressed Class Space",} 1.0
java_lang_MemoryPool_UsageThresholdSupported{name="PS Survivor Space",} 0.0
# HELP java_lang_Threading_ThreadContentionMonitoringEnabled ThreadContentionMonitoringEnabled (java.lang<type=Threading><>ThreadContentionMonitoringEnabled)
# TYPE java_lang_Threading_ThreadContentionMonitoringEnabled untyped
java_lang_Threading_ThreadContentionMonitoringEnabled 0.0
# HELP java_lang_OperatingSystem_CommittedVirtualMemorySize CommittedVirtualMemorySize (java.lang<type=OperatingSystem><>CommittedVirtualMemorySize)
我的问题是,我想公开我的应用程序指标以便在 jmx-prometheus-exporter 容器 (https://github.com/sscaling/docker-jmx-prometheus-exporter)中读取,但我没有看到如何配置它,(出口商 java 代理解决方案可能有效,但我想要一些 dockerized)