Prometheus
Установка и troubleshoot
Можно установить бинарник последней версии, но придется самому писать systemd unit-ы и конфиги.
Ставить буду из apt:
prometheus-node-exporter нужен для экспорта метрик самого сервера (железо)
prometheus-nginx-exporter - для экспорта метрик nginx-сервер
Проверяем, все ли сервисы запустились:
prometheus-nginx-exporter не смог запуститься:
Он искал адрес http://127.0.0.1:8080/stub_status на порту 8080 и, естественно, никакой страницы stub_status, слушающего на порту 8080 не нашел. Проверим вручную, есть ли доступ по такому адресу и порт 8080:
Получается, nginx не готов пока что отдавать метрики, ибо модуль with-http_stub_status_module не включен. Нужно проверить поддерживается ли он вообще в данной версии nginx:
Нужно добавить строки в /etc/nginx/sites-available/default:
Т.к. prometheus у тебя стоит на localhost, а другим метрики не хочется давать - разрешаешь метрики только на localhost (allow 127.0.0.1;
) и запрещаешь остальным (deny all;
). Подтягиваем конфиги:
Конфигурация
Дефолтного конфига /etc/prometheus/prometheus.yml вполне достаточно, а при надобности доп настроек можно вносить их туда же.
Explaining некоторых настроек в /etc/prometheus/prometheus.yml:
В секции global есть:
-
scrape_interval
Параметр, указывающий интервал сбора метрик (scraping). То есть, каждые 15 секунд prometheus будет запрашивать данные от целей мониторинга. -
evaluation_interval
Параметр указывает интервал вычисления значений метрик на основе собранных данных (интервал которой определяет scrape_interval).
В секции rule_files находятся пути к файлам правил (для доп. метрик, например).
В секции scrape_configs находится список конфигураций для сбора метрик.
- job_name: ‘prometheus’
Это название конфигурации сбора метрик
+scrape_timeout: 5s
Задает таймаут для каждого запроса на сбор метрик, то есть, если запрос не будет выполнен в течение 5 секунд - будет прерван
- static_configs
Указывает на использование статической конфигурации, то есть список целей для мониторинга задается вручную.- targets: [‘localhost:9090’]
Список целей мониторинга
- targets: [‘localhost:9090’]
Нужно добавить конфиг для prometheus-nginx-exporter:
Можно теперь проверить targets в браузере: http://localhost:9090/classic/targets
Там должны быть node и prometheus:
Теперь можно подтянуть конфиги:
И в targets появится nginx:
Можно здесь же перейти по ссылке на метрики nginx, например: http://localhost:9113/metrics
Графики
В веб-интерфейсе prometheus возможностей не особо, хоть есть и алерты (предупреждения) на странице alerts, правила которых можно задать и отслеживать там же, и страница graph, где можно создать графики на основе собираемых метрик. Создай ради примера одну:
В поле вводишь запрос (я ввел node_memory_Active_bytes) и нажать Execute, чтобы появился график с кол-вом потребления байтов ОЗУ:
Мониторинг
Prometheus basic auth
PromQL
Экспортеры: mysql_exporter, php-fpm-exporter