Prometheus и Grafana#
CedrusData Catalog автоматически экспортирует метрики в формате OpenMetrics по адресу /metrics
.
Источником метрик являются объекты JMX.
Вы можете настроить Prometheus на чтение данных метрик. После этого вы можете подключить к Prometheus систему мониторинга и визуализации, например, Grafana.
Настройка#
Экспорт метрик включен по умолчанию, дополнительная конфигурация не требуется. Метрики доступны по адресу /metrics
.
По умолчанию каталог экспортирует метрики только собственных JMX объектов, и не экспортирует метрики системных JMX объектов Java-машины.
Вы можете включить экспорт систем JMX объектов JVM с помощью параметра конфигурации openmetrics.jmx-object-names
.
Например, следующая конфигурации включает экспорт метрик системных JMX объектов java.lang:type=Memory
и java.lang:type=Threading
,
которые могут быть использованы для мониторинга потребления памяти и системных потоков:
openmetrics.jmx-object-names=java.lang:type=Memory|java.lang:type=Threading
Для отключения экспорта метрик задайте следующий параметр конфигурации:
openmetrics.enabled=false
Безопасность#
Экспорт метрик в формате OpenMetrics включен по умолчанию, дополнительная конфигурация не требуется. Метрики доступны по адресу /metrics
.
Для получения метрик необходимо в HTTP запросе указать заголовок Authorization
, содержащий одно из следующих значений:
Basic
авторизацию с именем пользователя и паролем, разделенными двоеточием, в кодировке Base64Bearer
авторизацию с постоянным или временным.
Для получения метрик необходима привилегия management.read
.
Пример экспорта метрик в Prometheus и Grafana#
Данный пример показывает, как настроить экспорт метрик каталога в Prometheus, и далее визуализировать их в Grafana.
Убедитесь, что у вас установлен Docker Server, и команда
docker
не требуетsudo
Создайте сеть Docker, в которой будут работать контейнеры:
docker network create example-network
Запустите контейнер CedrusData Catalog. Обратите внимание, что мы задаем явный пароль администратора, чтобы в дальнейшем использовать его при подключении к каталогу из Prometheus:
docker run -d \ --name example-catalog \ --network=example-network \ -p 9080:9080 \ -e CATALOG_ADMIN_PASSWORD=password \ cr.yandex/crpjtvqf29mpabhmrf1s/cedrusdata-catalog:458-1
Убедитесь, что метрики каталога доступны:
curl localhost:9080/metrics -H "Authorization: Basic cm9vdDpwYXNzd29yZA=="
Создайте файл конфигурации Prometheus
prometheus.yml
, в котором задан сетевой адрес каталога:global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: "catalog" static_configs: - targets: ["example-catalog:9080"] basic_auth: username: 'root' password: 'password'
Запустите контейнер Prometheus:
docker run -d \ --name example-prometheus \ --network=example-network \ -p 9090:9090 \ -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus
Откройте страницу статуса Prometheus http://localhost:9090/targets, и периодически обновляйте ее, пока не появится запись
http://example-catalog:9080/metrics
со статусом «Up».Запустите Grafana:
docker run -d \ --name=example-grafana \ --network example-network \ -p 3000:3000 \ grafana/grafana
Зайдите в web-интерфейс Grafana по адресу http://localhost:3000. Используйте имя пользователя
admin
и парольadmin
для аутентификации в Grafana.В web-интерфейсе Grafana пройдите «Connection» -> «Data Sources» и создайте новый Data Source типа Prometheus. Укажите адрес
http://example-prometheus:9090
. Нажмите «Save & test». Выберите «Dashboards» и создайте новый Dashboard на основе ранее созданного Data Source «prometheus». Продолжите работу с различными метриками каталога.(при необходимости) Остановите контейнеры и удалите ненужные ресурсы:
docker rm -f example-grafana docker rm -f example-prometheus docker rm -f example-catalog docker network rm example-network rm prometheus.yml