Шпаргалка по установке и настройке различных Prometheus exporter на Linux

Экспортеры Prometheus выступают как агенты мониторинга, позволяя собирать метрики с удаленных хостов, которые собирает сам сервер Prometheus. Данная инструкция является шпаргалкой по установке и настройке различных node exporter. По мере необходимости, список будет пополняться.

node_exporter

Экспортер предназначен для получения метрик от операционной системы. По умолчанию, работает на порту 9100.

Загрузка и установка

Заходим на страницу загрузки и смотрим актуальную версию node_exporter. Создаем переменную со значением данной версии:

NE_VER=1.9.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

Если мы получили ошибку:

go: go.mod requires go >= x.x.x (running go x.x.x; GOTOOLCHAIN=local)

… значит, версия нашего go не достаточно свежая. Чтобы решить проблему переходим на официальную страницу загрузки golang и смотрим последнюю версию. Создаем переменную:

GO_VER=1.24.1

* где 1.24.1 — версия, которая будет устанавливаться на наш компьютер.

Скачиваем исходник:

curl -sLO https://go.dev/dl/go${GO_VER}.linux-amd64.tar.gz

И устанавливаем GO:

tar -xzf go*.linux-amd64.tar.gz -C /usr/local && rm -f go*.linux-amd64.tar.gz

Теперь можно выполнить сборку еще раз:

PATH=/usr/local/go/bin:$PATH 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

Blackbox exporter

Экспортер предназначен для получения метрик с сайтов. По умолчанию, работает на порту 9115.

Загрузка и установка

Заходим на страницу загрузки и смотрим актуальную версию blackbox_exporter. Создаем переменную со значением данной версии:

BE_VER=0.25.0

Теперь используем ее для загрузки node_exporter:

curl -sLO https://github.com/prometheus/blackbox_exporter/releases/download/v${BE_VER}/blackbox_exporter-${BE_VER}.linux-amd64.tar.gz

Распакуем скачанный архив:

tar -zxf blackbox_exporter-*.linux-amd64.tar.gz

Перейдем в каталог с распакованными файлами:

cd blackbox_exporter-*.linux-amd64

Копируем исполняемый файл в bin:

cp blackbox_exporter /usr/local/bin/

Выходим из каталога и удаляем исходник:

cd .. && rm -rf blackbox_exporter-*.linux-amd64/ && rm -f blackbox_exporter-*.linux-amd64.tar.gz

Настройка

Чтобы команда запуска не вернула ошибку, необходимо указать конфигурационный файл для Blackbox exporter. Создем для него каталог:

mkdir -p /etc/blackbox

После сам файл:

vi /etc/blackbox/blackbox.yml

modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_http_versions: [«HTTP/1.1», «HTTP/2.0»]
valid_status_codes: [200]
method: GET
no_follow_redirects: true
fail_if_ssl: false
fail_if_not_ssl: false
fail_if_body_matches_regexp:
— «Could not connect to database»
tls_config:
insecure_skip_verify: false
preferred_ip_protocol: «ip4»
ip_protocol_fallback: false

* во многом, данный пример взят с официальной страницы на Github .

Запуск и проверка

Создаем пользователя blackusr:

useradd —no-create-home —shell /bin/false blackbox

Задаем владельца для исполняемого файла:

chown -R blackbox:blackbox /usr/local/bin/blackbox_exporter

Создаем файл blackbox_exporter.service в systemd:

vi /etc/systemd/system/blackbox_exporter.service

[Unit]
Description=Blackbox Exporter Service
After=network.target

[Service]
User=blackbox
Group=blackbox
Type=simple
ExecStart=/usr/local/bin/blackbox_exporter —config.file=/etc/blackbox/blackbox.yml
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Разрешаем автозапуск:

systemctl enable blackbox_exporter

Запускаем службу:

systemctl start blackbox_exporter

Проверим работу с помощью утилиты curl:

curl 127.0.0.1:9115/metrics

На экране мы должны увидеть метрики, на подобие:

…process_open_fds 9
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 1.27000576e+09
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# 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

Установка завершена.

Настройка Prometeus Server

Чтобы сервер мог собрать данные по сайтам, добавляем в конфигурационный файл:

vi /etc/prometheus/prometheus.yml

scrape_configs:

— job_name: ‘blackbox’
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
— targets:
https://remontka.com
relabel_configs:
— source_labels: [__address__]
target_label: __param_target
— source_labels: [__param_target]
target_label: instance
— target_label: __address__
replacement: localhost:9115

* где в качестве объекта наблюдения был добавлен сайт https://remontka.com .

И перезапускаем сервис:

systemctl restart prometheus

EnglishRussianUkrainian