Home » Установка Node Exporter для Prometheus: мониторинг ресурсов Linux-сервера
Установка Node Exporter для Prometheus: мониторинг ресурсов Linux-сервера

Установка Node Exporter для Prometheus: мониторинг ресурсов Linux-сервера

О чём эта статья и зачем вообще нужен Node Exporter

Давайте честно: если вы держите сервер — будь то домашний мини-сервер, VPS, выделенный или облачный инстанс — вы наверняка сталкивались с вопросом: а что вообще происходит у меня на железе? Почему вдруг нагрузка на CPU выросла, куда утекает память, кто жрёт диск и почему всё тормозит?

Вот тут и приходит на помощь Prometheus Node Exporter — маленькая, но очень полезная утилита, которая позволяет собирать метрики с Linux-сервера и отправлять их в Prometheus для красивого мониторинга. Это не только про “посмотреть, что сейчас”, но и про “увидеть тренды”, “поймать затыки” и “не проснуться ночью от алерта, когда сервер уже лежит”.

В этом посте:

  • Разберём, как работает Node Exporter и почему он стал стандартом де-факто для мониторинга Linux.
  • Пошагово установим Node Exporter на сервер (VPS, Docker, bare metal — разницы почти нет).
  • Посмотрим на реальные кейсы, ошибки новичков, сравним с альтернативами и даже придумаем пару нестандартных способов применения.
  • В конце — выводы и советы, где и как лучше всего использовать этот инструмент.

Почему мониторинг — это must-have (и чем поможет Node Exporter)

Представьте ситуацию: вы арендуете VPS по этой ссылке, ставите туда свой проект, всё летает… а через неделю сайт начинает лагать. Логи пустые. Вроде бы всё ок. А может, кто-то запускает тяжёлый процесс, или у вас swap медленно убивает диск, или просто банальный memory leak?

Вот тут и нужна система мониторинга, чтобы:

  • Видеть, как меняются параметры системы во времени (CPU, RAM, диск, сеть, файловые дескрипторы и т.д.).
  • Автоматически получать алерты, если что-то выходит за рамки нормы.
  • Понимать, где узкое место: процессор, память, IO или что-то ещё.
  • Собирать статистику для планирования апгрейдов или оптимизации.

Node Exporter + Prometheus — это как Google Analytics, только для вашего сервера. И всё это бесплатно и с открытым исходным кодом.

Как это работает: архитектура и алгоритмы

В двух словах (но по делу)

  • Node Exporter — маленькая программа, которая запускается на сервере и собирает кучу метрик о состоянии системы.
  • Она слушает порт (по умолчанию 9100) и отдаёт метрики в формате Prometheus.
  • Prometheus (он обычно на отдельном сервере или в облаке) периодически опрашивает Node Exporter и складывает данные в свою базу.
  • Дальше вы можете строить графики, настраивать алерты, смотреть отчёты — всё, что душе угодно.

Что именно мониторит Node Exporter?

  • Загрузка CPU (по ядрам, в процентах, в idle, user, system и т.д.)
  • Память: RAM, swap, буферы, кэш
  • Диски: использование, IO, ошибки
  • Сеть: трафик, ошибки, пакеты
  • Файловые системы, inode, дескрипторы
  • Температура, сенсоры (если поддерживается железом)
  • Процессы, аптайм, загрузка (load average)
  • Многое другое (через расширения и дополнительные коллекторы)

Схема работы

Prometheus Node Exporter схема

Node Exporter → Prometheus → Grafana (или алерты, или API)

Быстрая установка Node Exporter: инструкция для своих

1. Скачиваем и ставим Node Exporter

Официальная страница: https://prometheus.io/docs/guides/node-exporter/

Последний релиз всегда на GitHub Releases.


# Скачиваем последнюю версию (пример для x86_64)
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.8.1.linux-amd64.tar.gz
cd node_exporter-1.8.1.linux-amd64
# Запуск (можно тестово, потом лучше в systemd)
./node_exporter

По умолчанию слушает на 0.0.0.0:9100. Проверьте:


curl http://localhost:9100/metrics

Если видите кучу строк типа node_cpu_seconds_total — значит всё работает.

2. Делаем сервис для systemd

Чтобы Node Exporter стартовал вместе с сервером и не отваливался после релога, создаём сервис:


sudo useradd -rs /bin/false node_exporter

sudo tee /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/opt/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target
EOF

Не забудьте скопировать бинарник в /opt/node_exporter/ или куда вам удобно.


sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
sudo systemctl status node_exporter

3. Настраиваем Prometheus для сбора метрик

На сервере, где крутится Prometheus, добавьте в prometheus.yml:


  - job_name: 'node'
    static_configs:
      - targets: ['ip_вашего_сервера:9100']

Перезапустите Prometheus. Теперь метрики с вашего сервера будут попадать в общую базу.

4. (Опционально) — мониторим через Docker

Если вы живёте в Docker-среде — всё ещё проще:


docker run -d --name node_exporter --restart=always \
  -p 9100:9100 \
  --net="host" \
  --pid="host" \
  prom/node-exporter

Тут важно: --net="host" и --pid="host" нужны, чтобы контейнер видел все метрики хоста.

Кейсы и примеры: как реально помогает Node Exporter

Положительные сценарии

Кейс Результат Что делать
Неожиданный рост нагрузки на CPU Быстро видно, какой процесс грузит систему, по графикам видно время и продолжительность Добавить алерт на высокий load, посмотреть в Grafana, кто виноват
Утечка памяти (memory leak) Плавный рост used memory, видно, когда началось и как быстро заканчивается RAM Настроить алерт на % использования памяти, искать подозрительный сервис
Диск внезапно забит Видно, какая файловая система забилась, сколько inode осталось Добавить алерт на свободное место и inode, автоматизировать очистку

Отрицательные сценарии (и как не наступить на грабли)

Ошибка Что происходит Рекомендация
Открыли порт 9100 для всех Любой может посмотреть ваши метрики (а иногда и чувствительные данные) Ограничьте доступ через firewall или проксируйте через nginx с auth
Забыли добавить Node Exporter в автозагрузку После ребута сервера мониторинг не работает, алерты не приходят Обязательно делайте systemd-сервис
Слишком часто опрашиваете метрики Лишняя нагрузка на сервер и Prometheus, быстро растёт база Обычно хватает scrape_interval: 15-30s

Ошибки новичков и популярные мифы

  • “Node Exporter — это только для больших кластеров” — на самом деле, он отлично работает и на одном сервере, даже на домашнем Raspberry Pi.
  • “Метрики доступны только локально” — по дефолту слушает все интерфейсы, не забудьте закрыть порт!
  • “Prometheus сам всё собирает” — Prometheus ничего не мониторит без экспортеров, он только опрашивает их.
  • “Достаточно поставить Node Exporter и всё будет красиво” — для графиков нужна ещё Grafana или другой визуализатор.

Альтернативы и сравнение

Инструмент Плюсы Минусы
Node Exporter Простота, надёжность, поддержка Prometheus, минимум зависимостей Нет сбора логов, не умеет мониторить приложения
Telegraf Гибкая настройка, поддержка многих источников, может писать в InfluxDB Чуть сложнее в настройке, требует больше ресурсов
collectd Старый, проверенный временем, много плагинов Менее дружелюбен для Prometheus, сложная конфигурация
Datadog/Cloud Monitoring Много фишек, SaaS, красивые дашборды “из коробки” Платно, метрики уходят в облако

Для большинства задач мониторинга ресурсов Linux-сервера Node Exporter + Prometheus — золотой стандарт. Всё open-source, никаких скрытых ограничений, работает на любом железе.

Интересные факты и лайфхаки

  • Node Exporter можно запускать на ARM, x86, даже на старых серверах — он почти ничего не жрёт.
  • Есть экспериментальные коллекторы, которые позволяют мониторить RAID, SMART, температуру CPU и даже UPS (через nut).
  • Node Exporter можно запускать в chroot или контейнере только с нужными правами — не обязательно давать полный root.
  • Можно писать свои плагины-коллекторы на Go — если вдруг нужно что-то экзотическое.
  • В связке с Grafana можно делать шикарные дашборды, например, визуализировать аптайм всех серверов на одной панели.

Как автоматизировать и использовать в скриптах

  • Node Exporter идеально ложится в Ansible/Puppet/Chef — можно разворачивать мониторинг на 100 серверов одной командой.
  • Можно делать свои алерты через Prometheus Alertmanager — например, если диск забивается на 90%, сразу слать уведомление в Telegram или Slack.
  • Метрики можно использовать для автоскейлинга — если нагрузка растёт, автоматически поднимать новые инстансы.
  • Node Exporter умеет отдавать метрики в текстовом формате — легко парсить bash-скриптами для своих нужд (например, для самописных healthcheck-скриптов).
  • Через API Prometheus можно вытаскивать данные в сторонние системы или отчёты.

Заключение и рекомендации

Node Exporter — это тот самый инструмент, который ставится за 5 минут, но может спасти сервер (и нервы) в самый неожиданный момент. Он бесплатен, не требует гигантских ресурсов и работает практически везде. Если вы берёте VPS или выделенный сервер, первым делом ставьте Node Exporter и подключайте к Prometheus — и вы всегда будете знать, что происходит на вашем железе, даже если всё внезапно пойдёт не так.

Рекомендую использовать Node Exporter:

  • На всех продакшен-серверах (и даже на тестовых — для тренировки и понимания трендов).
  • В связке с Grafana — для красивых дашбордов и быстрого анализа.
  • В автоматизации (через Ansible, Docker, systemd) — чтобы не забывать про мониторинг при каждом деплое.
  • Для алертов — чтобы не прозевать критические ситуации.

Не забывайте про безопасность (ограничивайте доступ к порту 9100), следите за обновлениями (выходят новые коллекторы и фиксы багов), и экспериментируйте с настройками — Node Exporter действительно гибкий и мощный инструмент для любого Linux-сервера.

Официальные ссылки для дальнейшего чтения:

Пусть ваши серверы всегда будут под контролем, а мониторинг — не повод для головной боли!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked