- Home »

Установка 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)
- Многое другое (через расширения и дополнительные коллекторы)
Схема работы
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-сервера.
Официальные ссылки для дальнейшего чтения:
- Node Exporter Guide
- Node Exporter GitHub
- Prometheus Overview
- Готовые Grafana dashboards для Node Exporter
Пусть ваши серверы всегда будут под контролем, а мониторинг — не повод для головной боли!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.