Шпаргалка по установке и настройке различных 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:

Метрики, собранные 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

# Linux # NGINX # Операционные системы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет