Конфигурирование Docker-контейнера jmx-prometheus-exporter для чтения метрик локального приложения jmx - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь визуализировать показатели моего приложения Spring (все еще на локальном хосте до сих пор) с помощью графаны.Для этого сначала я настроил пул соединений с HikariCP и добавил функции мониторинга с помощью Jmx (MBean).До этого шага все работает нормально.

Затем я запустил докер-контейнеры Grafana, Prometheus и jmx-prometheus-exporter.

Вот мой составной файл докера

версия: '3'

services:

  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

А вот файл конфигурации Prometheus

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']

в Прометее: "http://localhost:9090/targets" Я мог видеть jmx-prometheus-exporter и сам Прометей как полезные услуги.

При посещении 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-агента экспортера может работать, но я хочу что-нибудь докеризировать)

1 Ответ

0 голосов
/ 22 июня 2019

Я работал над чем-то похожим. Ваш файл конфигурации Prometheus кажется правильным.

Единственный способ, который я нашел, - это использовать javaagent. Вы можете скачать javaagent jar с https://github.com/prometheus/jmx_exporter.

Затем добавьте эту строку в ваше Java-приложение:

javaagent:/YOUR_PATH/jmx_prometheus_javaagent-0.3.0.jar=PORT:/ANOTHER_PATH/config-jmx-tomcat.yaml"

Я думаю, что если вы не видите свои данные, конфигурация для вашего jmx-экспортера не настроена правильно Проверьте этот github на синтаксис: https://github.com/pentachore/jmx_exporter_hikaricp

...