Установка Node Exporter и интеграция с Prometheus для мониторинга сервера

Установка Node Exporter и интеграция с Prometheus для мониторинга сервера

Хотите узнать, как ваш VPS расходует ресурсы? Вам поможет связка Node Exporter + Prometheus + Grafana. В этой статье рассказываем, как установить Node Exporter, настроить сбор метрик CPU, памяти и дисков, а также как интегрировать его с Prometheus.

Node Exporter — ключевой компонент в экосистеме Prometheus, которая преобразует показатели работы сервера в наглядные метрики. Без него невозможно получить данные о загрузке процессора, оперативной памяти, состоянии дисков или сетевых интерфейсов. Мы разберём, как развернуть Node Exporter на VPS, подключить его к Prometheus и начать сбор данных для последующего анализа.

Мониторинг ресурсов особенно важен на серверах, где объём доступной оперативной памяти, процессорное время и дисковая нагрузка жёстко ограничены. Даже незначительный всплеск активности одного из сервисов может повлиять на стабильность всей системы. Поэтому своевременный мониторинг VPS — это обязательное условие стабильной работы для любого, кто хочет держать сервер под контролем.

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Установка Node Exporter и подготовка среды

Node Exporter распространяется в виде готового бинарника, что упрощает установку. Начнём с загрузки архива с официального GitHub-репозитория. На момент написания статьи актуальной является версия 1.9.1, но перед началом работы проверьте страницу релизов, чтобы выбрать свежую сборку.

Откройте терминал и скачайте архив с помощью wget <ссылка> или curl -LO <ссылка>, затем распакуйте его:

tar xvf node_exporter-*.tar.gz  

Флаг -x активирует извлечение файлов, -v выводит список всех файлов, которые обрабатываются, -f указывает на архив. После выполнения появится папка node_exporter-* с бинарным файлом приложения внутри (в названии папки будет версия, которую вы скачали).

Перенесите папку с бинарником в /usr/local/bin — стандартный каталог для пользовательских программ. Файлы в этой директории доступны всем пользователям системы, а путь /usr/local/bin присутствует в переменной окружения $PATH по умолчанию, что позволяет запускать Node Exporter из любого места.

Создание системного пользователя и настройка прав 

Запускать Node Exporter от имени root нельзя, это может привести к уязвимостям в системе безопасности. Поэтому создадим изолированного пользователя без права входить в систему:

sudo useradd --no-create-home --shell /bin/false <имя_пользователя>  

Эта команда также отключит создание домашней директории, которая не требуется для фоновой службы, и заблокирует вход под этим пользователем через SSH или консоль.

Назначьте права на бинарный файл:

sudo chown <имя_пользователя>:<группа> /usr/local/bin/node_exporter  

В данном случае группа будет называться так же, как и пользователь (она была создана для него по умолчанию). Теперь только указанный пользователь и root могут запускать исполняемый файл.

Запуск Node Exporter

Создадим юнит в /etc/systemd/system/ для управления службой.

Создайте файл node_exporter.service и откройте его для редактирования. Добавьте в него: 

[Unit] 
Description=Node Exporter 
After=network.target 
[Service] 
User=<имя_пользователя> 
Group=<группа> 
ExecStart=путь к исполняемому файлу 
Restart=always 
RestartSec=30 
[Install] 
WantedBy=multi-user.target  

Разберём параметры:

  • After=network.target — служба запустится только после полной инициализации сети.
  • User и Group — ограничение прав процесса.
  • Restart=always — автоматический перезапуск при любом завершении (включая ручную остановку).
  • RestartSec=30 — пауза в 30 секунд перед перезапуском.

Выполните последовательно daemon-reload, start node_exporter и enable node_exporter. Это перезагрузит конфигурацию systemd (обязательно после создания юнита), запустит и добавит службу в автозагрузку при старте системы.

После этого проверьте статус службы (status node_exporter). В выводе должна быть строка Active: active (running). Если статус failed, изучите логи за предыдущие 5-10 минут:

sudo journalctl -u node_exporter --since "5 minutes ago"  

Проверка работы

Node Exporter по умолчанию слушает порт 9100. Чтобы убедиться, что метрики собираются, выполните запрос через curl:

curl http://localhost:9100/metrics  

В ответе вы увидите список метрик. Вот некоторые из них:

  • node_cpu_seconds_total — время работы CPU в разных режимах (idle, user, system).
  • node_memory_MemAvailable — доступная оперативная память в байтах.
  • node_filesystem_avail — свободное место на смонтированных файловых системах.

Интеграция с Prometheus

Теперь дадим знать Prometheus, откуда брать метрики. Откройте prometheus.yml (файл находится в /opt/prometheus/) и добавьте новое задание:

scrape_configs: 
  - job_name: 'node' 
    static_configs: 
      - targets: ['localhost:9100'] 
    scrape_interval: 15s  

Разберём параметры:

  • job_name: 'node' — произвольное имя задания. Нужно для фильтрации метрик в PromQL.
  • targets: ['localhost:9100'] — адрес и порт Node Exporter. Если нужно мониторить удалённые серверы, укажите их IP через запятую: ['192.168.1.5:9100', '192.168.1.6:9100'].
  • scrape_interval: 15s — переопределение глобального интервала сбора метрик для этого конкретного job.

Примените изменения и перезапустите Prometheus (restart).

Проверьте, получилось ли связать Node Exporter и Prometheus.  Перейдите по адресу http://ваш_сервер:9090 в браузере. Зайдите в Status → Targets: у цели node должен быть статус UP. Если статус DOWN, проверьте, активен ли Node Exporter и открыт ли порт 9100 в файрволе.

Дополнительные настройки

По умолчанию Node Exporter доступен на всех сетевых интерфейсах, что небезопасно для продакшена. Примите меры:

Ограничьте доступ по IP. Разрешите подключение к порту 9100 только для Prometheus:

sudo ufw allow proto tcp from 192.168.1.10 to any port 9100  

Замените 192.168.1.10 на IP-адрес вашего сервера Prometheus.

Используйте обратный прокси, который будет выступать промежуточным звеном между  Node Exporter и Prometheus, скрывая прямой доступ к порту 9100. Это также добавит проверку логина и пароля перед доступом к метрикам. Например,  для проксирования можно использовать Nginx, если он установлен.

Запуск на отдельном интерфейсе. Если оба приложения установлены на одном сервере, ограничьте прослушивание localhost. Для этого в файле node_exporter.service измените строку ExecStart:

ExecStart=/usr/local/bin/node_exporter --web.listen-address=127.0.0.1:9100  

Фильтрация собираемых метрик. Node Exporter собирает все доступные данные, но иногда это избыточно. Используйте флаги для отключения ненужных коллекторов:

ExecStart=/usr/local/bin/node_exporter \
--collector.disable-defaults \
--collector.cpu \
--collector.meminfo \
--collector.filesystem  

Где:

  • --collector.disable-defaults отключает все коллекторы, активные по умолчанию;
  • --collector.cpu включает сбор метрик CPU, остальные два флага включают сбор информации о состоянии памяти и файловой системы.

Заключение

Теперь ваш сервер отправляет метрики в Prometheus, и вы можете отслеживать его состояние в реальном времени. Чтобы визуализировать данные, установите Grafana и импортируйте готовый дашборд Node Exporter Full.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях