Шпаргалка по установке и настройке различных Prometheus exporter на Linux
Экспортеры Prometheus выступают как агенты мониторинга, позволяя собирать метрики с удаленных хостов, которые собирает сам сервер Prometheus. Данная инструкция является шпаргалкой по установке и настройке различных node exporter. По мере необходимости, список будет пополняться.
node_exporter
Экспортер предназначен для получения метрик от операционной системы. По умолчанию, работает на порту 9100.
Загрузка и установка
Заходим на страницу загрузки и смотрим актуальную версию node_exporter. Создаем переменную со значением данной версии:
NE_VER=1.7.0
Теперь используем ее для загрузки node_exporter:
curl -sLO https://github.com/prometheus/node_exporter/releases/download/v${NE_VER}/node_exporter-${NE_VER}.linux-amd64.tar.gz
Распакуем скачанный архив:
tar -zxf node_exporter-*.linux-amd64.tar.gz
Перейдем в каталог с распакованными файлами:
cd node_exporter-*.linux-amd64
Копируем исполняемый файл в bin:
cp node_exporter /usr/local/bin/
Выходим из каталога и удаляем исходник:
cd .. && rm -rf node_exporter-*.linux-amd64/ && rm -f node_exporter-*.linux-amd64.tar.gz
Запуск и проверка
Создаем пользователя nodeusr:
useradd --no-create-home --shell /bin/false nodeusr
Задаем владельца для исполняемого файла:
chown -R nodeusr:nodeusr /usr/local/bin/node_exporter
Создаем файл node_exporter.service в systemd:
vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter Service
After=network.target
[Service]
User=nodeusr
Group=nodeusr
Type=simple
ExecStart=/usr/local/bin/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
Разрешаем автозапуск:
systemctl enable node_exporter
Запускаем службу:
systemctl start node_exporter
Проверим работу с помощью утилиты curl:
curl 127.0.0.1:9100/metrics
На экране мы должны увидеть метрики, на подобие:
...
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler.
# TYPE promhttp_metric_handler_errors_total counter
promhttp_metric_handler_errors_total{cause="encoding"} 0
promhttp_metric_handler_errors_total{cause="gathering"} 0
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
Также можно открыть веб-браузер и перейти по адресу http://<IP-адрес сервера или клиента>:9100/metrics — мы увидим метрики, собранные node_exporter:
Установка завершена.
Настройка Prometeus Server
Чтобы сервер мог собрать с него данные, открываем на нем файл:
vi /etc/prometheus/prometheus.yml
И добавляем таргет в job:
- job_name: 'node_exporter_clients'
scrape_interval: 5s
static_configs:
- targets:
- 192.168.0.11:9100
* если у нас еще нет подходящей job_name, создаем.
И перезапускаем сервис:
systemctl restart prometheus
NGINX exporter
С помощью nginx-prometheus-exporter можно получить данные о работе веб-сервера nginx. По умолчанию, работает на порту 9113.
Загрузка и установка
Для сборки исходника нам нужны пакеты go, git и curl. Устанавливаем их командой:
apt install git golang curl || yum install git golang curl
Скачиваем проект nginx-prometheus-exporter:
git clone https://github.com/nginxinc/nginx-prometheus-exporter.git
Переходим в загруженный каталог:
cd nginx-prometheus-exporter
Выполняем сборку:
go build
В результате будет создан бинарник nginx-prometheus-exporter. Перенесем его в /usr/local/bin:
mv nginx-prometheus-exporter /usr/local/bin/
Выходим из каталога проекта и удаляем загруженную ранее папку:
cd ../ && rm -rf nginx-prometheus-exporter
Настройка NGINX
Для получения статистики и метрик от nginx, необходимо настроить встроенную страницу server-status. Находим незанятый порт на сервере, например:
ss -tunlp | grep :8080
* данной командой мы увидим, занят ли порт 8080.
Если система возвращает пустую строку, значит порт свободен и мы будем использовать его. Если порт занят, пробуем поискать другие незанятые порты. Дальне по инструкции предполагается, что мы настраиваем 8080.
Создаем конфигурационный файл nginx:
vi /etc/nginx/conf.d/stats.conf
server {
listen 8080;
server_name _;
access_log off;
location /server-status {
stub_status on;
}
}
Проверяем конфигурацию и применяем ее:
nginx -t && nginx -s reload
Должна заработает страница статистики. Можно проверить ее работоспособность командой:
curl http://127.0.0.1:8080/server-status
Мы можем увидеть что-то на подобие:
Active connections: 320
server accepts handled requests
498121 498121 15945169
Reading: 0 Writing: 1 Waiting: 319
Переходим к запуску экспортера.
Запуск и проверка
Создаем файл для автозапуска экспортера:
vi /etc/systemd/system/nginx_exporter.service
[Unit]
Description=Node Exporter Service
After=network.target
[Service]
User=nodeusr
Group=nodeusr
Type=simple
ExecStart=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri=http://127.0.0.1:8080/server-status
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
* обратите внимание, что экспортер будет запрашивать статистические данные через поднятую нами страницу /server-status.
Создаем учетную запись nodeusr:
useradd --no-create-home --shell /bin/false nodeusr
Разрешаем и стартуем сервис nginx_exporter:
systemctl enable nginx_exporter
systemctl start nginx_exporter
Можно проверить статус службы и прослушивание порта 9113:
systemctl status nginx_exporter
ss -tunlp | grep :9113
Также можно получить набор метрик:
curl 127.0.0.1:9113/metrics
Экспортер готов к работе.
Настройка Prometeus Server
Чтобы добавить экспортер в мониторинг Prometeus на сервере открываем файл:
vi /etc/prometheus/prometheus.yml
Добавляем секцию:
- job_name: 'nginx'
scrape_interval: 5s
static_configs:
- targets:
- 192.168.0.11:9113
* где 192.168.0.11 — адрес сервера, где мы установили и настроили экспортер. Обратите внимание, что у вас уже может быть секция для мониторинга nginx — тогда можно не создавать новую, а добавить в список новый сервер с экспортером nginx.
Перезапускаем прометеус:
systemctl restart prometheus
PostgreSQL Exporter
Экспортер позволяет получать метрики для СУБД PostgreSQL. Последний должен быть уже установлен в системе.
Загрузка и установка
Клонируем проект экспортера с гитхаба:
git clone https://github.com/prometheus-community/postgres_exporter.git
Переходим в загруженный каталог:
cd postgres_exporter
Собираем файлы пакета из исходников:
make build
Полученный бинарник postgres_exporter переносим в каталог bin:
mv postgres_exporter /usr/local/bin/postgres_exporter
Запуск и проверка
Для автоматического старта экспортера, создадим юнит в systemd:
vi /etc/systemd/system/postgres_exporter.service
[Unit]
Description=Node Exporter Service
After=network.target
[Service]
EnvironmentFile=/etc/sysconfig/postgres_exporter
User=postgres
Group=postgres
Type=simple
ExecStart=/usr/local/bin/postgres_exporter
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
В данном юните мы используем EnvironmentFile. Создадим и его:
vi /etc/sysconfig/postgres_exporter
DATA_SOURCE_NAME='user=postgres host=/run/postgresql/ sslmode=disable'
* где host — путь до каталога, где располагается сокетный файл postgresql.
Обратите внимание, что для разных поставок PostgreSQL характерно разное расположение сокетного файла. Как правило, это пути /var/run/postgresql, /run/postgresql или /tmp.
В крайнем случае, можно попробовать найти сокет с помощью команды find:
find / -name .s.PGSQL.5432
Разрешаем автозапуск для юнита и стартуем его:
systemctl enable postgres_exporter
systemctl start postgres_exporter
Проверить статус, а также прослушиваемый порт можно командами:
systemctl status postgres_exporter
ss -tunlp | grep 9187
Также можем попробовать получить метрики:
curl 127.0.0.1:9187/metrics
Настройка Prometeus Server
Чтобы сервер увидел метрики PostgreSQL, добавим job_name:
vi /etc/prometheus/prometheus.yml
- job_name: 'postgresql'
scrape_interval: 5s
static_configs:
- targets:
- 192.168.0.11:9187
И перезапустим службу прометеуса:
systemctl restart prometheus