Мониторинг с Prometheus

Вы можете экспортировать метрики в формате Prometheus из вашего экземпляра Glarus BI.

Локальный запуск Glarus BI и Prometheus

Чтобы дать вам представление о том, как Glarus BI и Prometheus будут работать в промышленной эксплуатации, сначала рассмотрим, как настроить Glarus BI и Prometheus локально.

Запустите Glarus BI с MB_PROMETHEUS_SERVER_PORT

Загрузите последнюю версию JAR-файла и запустите Glarus BI, используя переменную среды, для указания порта сервера Prometheus:

MB_PROMETHEUS_SERVER_PORT=9191 java -jar glarusBI.jar

MB_PROMETHEUS_SERVER_PORT=9191 указывает, какой порт Glarus BI будет использовать для отправки данных в Prometheus. Используются следующие порты:

  • Порт 3000 — это порт, который Glarus BI использует для работы приложения Glarus BI. Вы можете установить другой порт с помощью MB_JETTY_PORT (например, MB_JETTY_PORT=3001).

  • Порт 9191 (или любой другой порт, который вы указали в переменной окружения MB_PROMETHEUS_SERVER_PORT) — это порт, который Prometheus использует для извлечения метрик из Glarus BI.

  • Порт 9090 — это порт, который Prometheus использует для обслуживания приложения Prometheus.

Когда вы запустите Glarus BI, то в журнале событий увидите информацию о том, что Glarus BI запускает сборщик метрик prometheus и веб-сервер метрик prometheus.

(truncated logs)
2022-09-01 17:47:38,808 INFO metabase.util :: Database setup took 3.4 s
2022-09-01 17:47:38,826 INFO metabase.core :: Setting up prometheus metrics
2022-09-01 17:47:38,827 INFO metabase.prometheus :: Starting prometheus metrics collector
2022-09-01 17:47:38,839 INFO metabase.prometheus :: Starting prometheus metrics web-server on port 9,191
(truncated logs)

Ваш локально запущенный экземпляр Glarus BI доступен по адресу http://localhost:3000.

Загрузка и конфигурация Prometheus

Загрузите Prometheus и распакуйте файлы.

Перейдите в каталог Prometheus, добавьте следующий файл YAML, в нём хранится конфигурация настройки:

Пример файла конфигурации Prometheus

global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'codelab-monitor'

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s
    # use whatever port here that you set for MB_PROMETHEUS_SERVER_PORT
    static_configs:
      - targets: ['localhost:9191']

Запуск Prometheus локально

Откройте новое окно терминала в каталоге Prometheus и запустите следующую команду:

./prometheus --config.file=prometheus.yml

Затем проверьте http://localhost:9090. Вы должны увидеть приложение Prometheus и различные метрики, которые выдаёт Glarus BI.

Prometheus page showing  graph

Пример вывода метрик

Вот пример вывода метрик из Glarus BI:

'# HELP jvm_threads_current Current thread count of a JVM
'# TYPE jvm_threads_current gauge
jvm_threads_current 81.0
'# HELP jvm_threads_daemon Daemon thread count of a JVM
'# TYPE jvm_threads_daemon gauge
jvm_threads_daemon 36.0
'# HELP jvm_threads_peak Peak thread count of a JVM
'# TYPE jvm_threads_peak gauge
jvm_threads_peak 81.0
'# HELP jvm_threads_started_total Started thread count of a JVM
'# TYPE jvm_threads_started_total counter
jvm_threads_started_total 104.0
'# HELP jvm_threads_deadlocked Cycles of JVM-threads that are in deadlock waiting to acquire object monitors or ownable synchronizers
'# TYPE jvm_threads_deadlocked gauge
jvm_threads_deadlocked 0.0

Экспортируемые метрики

Метрики, экспортируемые Glarus BI, включают:

  • c3p0_max_pool_size

  • c3p0_min_pool_size

  • c3p0_num_busy_connections

  • c3p0_num_connections

  • c3p0_num_idle_connections

  • c3p0_num_threads_awaiting_checkout_default_user

  • jetty_async_dispatches_total

  • jetty_async_requests_total

  • jetty_async_requests_waiting

  • jetty_async_requests_waiting_max

  • jetty_dispatched_active

  • jetty_dispatched_active_max

  • jetty_dispatched_time_max

  • jetty_dispatched_time_seconds_total

  • jetty_dispatched_total

  • jetty_expires_total

  • jetty_request_time_max_seconds

  • jetty_request_time_seconds_total

  • jetty_requests_active

  • jetty_requests_active_max

  • jetty_requests_total

  • jetty_responses_bytes_total

  • jetty_responses_total

  • jetty_stats_seconds

  • jvm_gc_collection_seconds_count

  • jvm_gc_collection_seconds_sum

  • jvm_memory_bytes_committed

  • jvm_memory_bytes_init

  • jvm_memory_bytes_max

  • jvm_memory_bytes_used

  • jvm_memory_objects_pending_finalization

  • jvm_memory_pool_bytes_committed

  • jvm_memory_pool_bytes_init

  • jvm_memory_pool_bytes_max

  • jvm_memory_pool_bytes_used

  • jvm_memory_pool_collection_committed_bytes

  • jvm_memory_pool_collection_init_bytes

  • jvm_memory_pool_collection_max_bytes

  • jvm_memory_pool_collection_used_bytes

  • jvm_threads_current

  • jvm_threads_daemon

  • jvm_threads_deadlocked

  • jvm_threads_deadlocked_monitor

  • jvm_threads_peak

  • jvm_threads_started_total

  • jvm_threads_state

  • process_cpu_seconds_total

  • process_max_fds

  • process_open_fds

  • process_start_time_seconds

Дополнительная информация