Зачем нужен мониторинг VPS
Настроить мониторинг VPS с помощью Grafana и Prometheus можно самому: достаточно установить Prometheus для сбора метрик, Node Exporter для их экспорта с сервера и Grafana для визуализации. Стек разворачивается на одном VPS через Docker Compose или вручную, не требует проприетарного ПО и предоставляет полноценную наблюдаемость за CPU, RAM, дисковой подсистемой и сетью в режиме реального времени.
Владельцы VPS нередко узнают о проблемах с сервером последними — из жалоб пользователей или после того, как сайт уже недоступен несколько часов. Без мониторинга администратор работает вслепую.
Типичные проблемы без мониторинга
- Непредвиденные отказы. Переполненный диск роняет сервисы без предупреждения.
- Деградация производительности. Утечки памяти приводят к постепенному росту потребления RAM.
- Отсутствие исторических данных. При инциденте невозможно восстановить картину произошедшего.
- Невозможность планирования ресурсов. Без метрик невозможно обосновать апгрейд тарифа.
Что такое Grafana и Prometheus: архитектура стека
Grafana и Prometheus — две независимые open-source системы, которые в связке образуют один из наиболее популярных стеков наблюдаемости для инфраструктуры.
Prometheus: сбор и хранение метрик
Prometheus — система мониторинга и база данных временных рядов (TSDB), разработанная в SoundCloud и переданная в CNCF. Ключевая особенность — pull-модель сбора данных: сервер сам периодически опрашивает (scrape) HTTP-эндпоинты и забирает метрики. Для запросов используется язык PromQL — мощный инструмент для агрегации и алертов.
Node Exporter: экспорт системных метрик
Node Exporter — официальный экспортер Prometheus для Linux. Запускается как демон и предоставляет на порту 9100 метрики ОС: загрузку CPU по ядрам, использование RAM и swap, статистику файловых систем, IOPS дисков, сетевой трафик.
Grafana: визуализация
Grafana — платформа для визуализации данных. В роли data source подключается Prometheus, после чего строятся дашборды с графиками, heatmap, gauge-панелями. Для Node Exporter существуют готовые дашборды — например, Node Exporter Full (Grafana Dashboard ID 1860), покрывающий все основные метрики сервера.
[Сервер] -> Node Exporter (:9100)
^ scrape
Prometheus (:9090) -> [хранение TSDB]
v query (PromQL)
Grafana (:3000) -> [дашборды]Минимальные требования к серверу
Dev / Test: одиночный сервер
- CPU: 2 vCPU
- RAM: 4 ГБ
- Диск: 20-50 ГБ NVMe SSD
- ОС: Ubuntu 22.04 LTS / Debian 12
Российские провайдеры из каталога EasyLinkLife: AdminVPS — 899 ₽/мес за Micro: 2 vCPU 3,6 ГГц, 4 ГБ RAM, 60 ГБ NVMe; Timeweb Cloud — MSK 50 с 2 vCPU и 4 ГБ RAM — 1 200 ₽/мес при оплате за месяц или 1 080 ₽/мес при оплате за 12 месяцев. Цены AdminVPS — при оплате за месяц; сверено 10.09.2026.
Production: мониторинг нескольких хостов
- CPU: 4 vCPU
- RAM: 8 ГБ и более
- Диск: от 100 ГБ NVMe SSD
AdminVPS закрывает процессор и память тарифом Start: 4 vCPU 3,6 ГГц и 8 ГБ RAM за 1 289 руб./мес при помесячной оплате, ЦОД в России. Диска в нём 80 ГБ — меньше ста из списка: под долгое хранение метрик берите Standart со 100 ГБ за 2 149 ₽/мес при оплате за месяц.
Реклама · ООО «Админвпс»
AdminVPS Micro — 899 ₽ при оплате за месяц
2 ядра 3,6 ГГц, 4 ГБ RAM, 60 ГБ NVMe, канал 1 Гбит/с и 5 ТБ включённого трафика с расширением до 37 ТБ. Это ровно требования Dev/Test выше, а шестьдесят гигабайт диска дают Prometheus запас по сроку хранения метрик. Панель ispmanager бесплатна первый месяц по промокоду провайдера, резервные копии еженедельные и входят в тариф. Под десяток хостов берите Start за 1 289 ₽ при оплате за месяц.
Год −15 %
Промокод EASYLINK — скидка 60 % на первый месяц при оплате за 1 месяц, кроме тарифов Lite.
Установка Prometheus на VPS: пошаговая инструкция
20.10.2026 мы прошли команды этой статьи на чистом сервере с Ubuntu 24.04 — что пришлось исправить, сказано на своих местах и в разделе «Проверка на сервере 20.10.2026». На Ubuntu 22.04 команды не прогоняли.
Обновление системы и создание пользователя
sudo apt update && sudo apt upgrade -y
sudo useradd --no-create-home --shell /bin/false prometheusСкачивание и установка Prometheus
cd /tmp
VER=3.15.0 # актуальная версия — на github.com/prometheus/prometheus/releases
wget https://github.com/prometheus/prometheus/releases/download/v$VER/prometheus-$VER.linux-amd64.tar.gz
tar xvf prometheus-$VER.linux-amd64.tar.gz
cd prometheus-$VER.linux-amd64
sudo cp prometheus promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
sudo mkdir /etc/prometheus /var/lib/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheusКонфигурация prometheus.yml
# /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']Создание systemd unit-файла
# /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus/ \
--storage.tsdb.retention.time=30d \
--web.listen-address=127.0.0.1:9090
Restart=on-failure
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheusКлюч --web.listen-address=127.0.0.1:9090 оставляет Prometheus только самому серверу. Без него он слушает порт 9090 на всех адресах, и на чистой Ubuntu 24.04 метрики отдавались в интернет: ufw там выключен (подробно — в разделе о безопасности). Страницу целей смотрите через SSH-туннель: ssh -L 9090:127.0.0.1:9090 user@сервер, затем http://localhost:9090/targets — job prometheus должен быть в статусе UP.
Установка Node Exporter для сбора метрик
cd /tmp
VER=1.12.1 # актуальная версия — на github.com/prometheus/node_exporter/releases
wget https://github.com/prometheus/node_exporter/releases/download/v$VER/node_exporter-$VER.linux-amd64.tar.gz
tar xvf node_exporter-$VER.linux-amd64.tar.gz
sudo cp node_exporter-$VER.linux-amd64/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter# /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.listen-address=127.0.0.1:9100
Restart=on-failure
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
curl http://localhost:9100/metrics | head -20Node Exporter отдаёт метрики на порту 9100, а с ключом --web.listen-address=127.0.0.1:9100 — только самому серверу. Prometheus обращается к нему локально, поэтому цели остаются в статусе UP: на проверке 20.10 так и было.
Установка и настройка Grafana
cd /tmp
VER=13.2.4 # актуальная версия — на github.com/grafana/grafana/releases
wget https://dl.grafana.com/oss/release/grafana_${VER}_amd64.deb
sudo apt install -y ./grafana_${VER}_amd64.debС нашего стенда в Москве официальный репозиторий apt.grafana.com не открылся: 20.10.2026 он ответил «403 Access Denied», а из-за рубежа тот же адрес в тот же час отвечал обычно. Такой отказ бывает и по адресу подсети, а не по стране, поэтому пакет надёжнее ставить напрямую, как в блоке выше. Если и этот адрес откажет — 20.10 новый путь dl.grafana.com/grafana/release/ из Москвы отвечал «451 Unavailable For Legal Reasons», — тот же пакет лежит на странице выпусков Grafana на GitHub, файл grafana_ВЕРСИЯ_НОМЕР-СБОРКИ_linux_amd64.deb. Обновляется Grafana тогда не через apt upgrade, а так же — новым пакетом. На сервере за рубежом годится и репозиторий.
sudo sed -i 's#^;http_addr =.*#http_addr = 127.0.0.1#' /etc/grafana/grafana.ini
sudo systemctl daemon-reload && sudo systemctl enable grafana-server && sudo systemctl start grafana-serverПервая строка привязывает Grafana к самому серверу. Без неё она слушает порт 3000 на всех адресах, и на проверке 20.10 вход admin / admin проходил из интернета сразу после установки. Открывайте её через SSH-туннель: ssh -L 3000:127.0.0.1:3000 user@сервер, затем http://localhost:3000. Логин: admin / admin, новый пароль Grafana спросит сама. Смените пароль при первом входе.
Добавление Prometheus как источника данных
- Перейдите в Connections - Data Sources
- Нажмите Add data source, выберите Prometheus
- В поле URL укажите http://localhost:9090
- Нажмите Save & Test
Импорт дашборда Node Exporter Full
- Dashboards - Import
- Введите ID 1860, нажмите Load
- Если Grafana спросит источник данных — выберите Prometheus; ревизия 101 (20.10) источника при импорте не требует и берёт источник по умолчанию
- Нажмите Import
Дашборд откроется немедленно и начнёт отображать метрики вашего сервера: загрузку CPU, использование RAM, I/O дисков, сетевой трафик.
Импорт дашборда: по ID или загрузкой JSON
Node Exporter Full ставится двумя способами, и выбор зависит от того, есть ли у сервера выход в интернет.
По ID — быстрее. Dashboards → New → Import, в поле «Import via grafana.com» ввести 1860 и нажать Load. Grafana сама скачает описание панели. Требует доступа к grafana.com с самого сервера.
Загрузкой JSON — когда интернета нет. На странице панели нажать Download JSON, перенести файл на машину с Grafana и выбрать «Upload dashboard JSON file» в том же окне импорта.
Второй способ нужен чаще, чем кажется:
- закрытый контур без исходящего трафика — типовая ситуация для инфраструктуры, работающей с персональными данными по 152-ФЗ;
- панель правили под себя, и версия в git должна совпадать с той, что развёрнута;
- разворачиваете одинаковый стек на десятке серверов и не хотите зависеть от доступности внешнего сервиса.
JSON кладётся в подготовку Grafana, и панель появляется сразу после запуска, без ручного импорта:
# /etc/grafana/provisioning/dashboards/node-exporter.yaml
apiVersion: 1
providers:
- name: 'node-exporter'
orgId: 1
folder: 'Infrastructure'
type: file
disableDeletion: false
updateIntervalSeconds: 30
options:
path: /var/lib/grafana/dashboardsВ файл — только YAML: на проверке 20.10 файл, скопированный вместе со строкой sudo systemctl restart grafana-server, ронял Grafana при запуске («could not find expected ':'»). Каталог и перезапуск — отдельными командами: sudo mkdir -p /var/lib/grafana/dashboards, файл 1860.json — туда, затем sudo systemctl restart grafana-server. Панель появится в папке Infrastructure и возьмёт источник данных по умолчанию — добавленный выше Prometheus. Если графики пустые, проверьте, что Node Exporter отвечает: curl -s localhost:9100/metrics | head.
Настройка алертов в Grafana
Алерты позволяют получать уведомления о проблемах на сервере до того, как они приведут к отказу.
Настройка точки контакта (Contact point)
Перейдите в Alerting - Contact points - Add contact point. Grafana поддерживает Telegram, Email, Slack, PagerDuty. Для Telegram укажите Bot Token и Chat ID. Доставку в Telegram на проверке 20.10 мы не настраивали, а выражение ниже проверили: под полной нагрузкой на оба ядра оно за две с половиной минуты дошло до 100 %, и условие > 85 сработало.
Создание правила оповещения
# PromQL для CPU > 85%:
100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 85
# Условие: IS ABOVE 85
# Период оценки: каждые 1m, в течение 2m
Безопасность стека мониторинга
Порты Prometheus (9090) и Node Exporter (9100) не должны быть доступны из интернета — по умолчанию они отдают метрики без пароля. Главная защита — привязка к 127.0.0.1 из шагов выше: на проверке 20.10 после неё порты 9090, 9100 и 3000 не ответили ни с одного внешнего адреса даже при выключенном файрволе. Одних правил ufw мало: на чистой Ubuntu 24.04 ufw выключен, и ufw deny без ufw enable не закрывают ничего — метрики при этом отдавались в интернет. Файрвол — второй слой, и SSH разрешается до включения:
sudo ufw allow 22/tcp # SSH — до включения
sudo ufw deny 9090
sudo ufw deny 9100
sudo ufw enableЕсли Grafana нужна не только вам через туннель, поставьте перед ней Nginx с сертификатом Let's Encrypt: он проксирует на 127.0.0.1:3000, наружу открыт только 443. Эту часть на проверке мы не повторяли — для сертификата нужен домен.
Дополнительные меры безопасности
- Запускайте Prometheus и Node Exporter от непривилегированного пользователя
- Включите ротацию логов через logrotate
- Регулярно обновляйте компоненты стека
- Измените стандартные учётные данные Grafana сразу после первого входа
Проверка на сервере 20.10.2026: что работает по шагам
Наш замер 20.10.2026. На чистом сервере Timeweb Cloud в Москве (2 vCPU, 4 ГБ памяти, Ubuntu 24.04) мы прошли шаги статьи дословно, а что открыто наружу, проверяли с двух внешних адресов в разных сетях.
- Prometheus 3.15.0 и Node Exporter 1.12.1 — последние версии на 20.10. Архивы с GitHub из Москвы скачались за секунды, promtool признал конфиг верным, обе цели — в статусе UP.
- Grafana из репозитория apt.grafana.com не встала: с нашего московского стенда он ответил «403 Access Denied». Пакетом напрямую — встала за 33 секунды, версия 13.2.4.
- Источник данных Prometheus проверку проходит. Панель 1860 по ID с grafana.com из России загружается и сразу рисует процессор, память, сеть и диск.
- Блок подготовки, скопированный целиком вместе со строкой команды перезапуска, ронял Grafana при запуске — systemd перезапускал её по кругу. YAML отдельно и команды отдельно — панель появилась в папке Infrastructure сама.
- Выражение оповещения под полной нагрузкой на оба ядра за две с половиной минуты дошло до 100 %, условие > 85 срабатывает.
- Сделанное по прежней редакции статьи оставляло наружу всё: Prometheus, Node Exporter и Grafana со входом admin / admin отвечали из интернета, а правила ufw deny без ufw enable не закрывали ничего. После привязки к 127.0.0.1 ни один из трёх портов снаружи не ответил, цели остались в статусе UP.
- Память через 13 минут работы с одним хостом и опросом раз в 15 секунд: Grafana — 363 МБ, Prometheus — 102 МБ, Node Exporter — 21 МБ; система целиком — 722 МБ из 4 ГБ. На диске установленное занимает около 2,2 ГБ, из них Grafana — 1,9 ГБ; база Prometheus за эти минуты — 448 КБ.
Чего проверка не показывает: рост базы за месяц и нагрузку десятка хостов, доставку оповещений в Telegram и работу через Nginx с сертификатом — для него нужен домен. Прямую ссылку на пакет Grafana мы проверили один раз, 20.10: такие адреса меняются.
Какой VPS выбрать для мониторинга
Требования из раздела выше сводятся к двум тарифам. Сразу оговорка: важен не столько объём памяти, сколько срок хранения метрик — Prometheus держит их на диске, и месяц по десяти хостам занимает несоизмеримо больше, чем неделя по одному. Сколько именно, зависит от того, что вы собираете; рост базы за месяц мы не мерили, а сколько памяти и диска стек занял на одном сервере — в разделе «Проверка на сервере 20.10.2026» выше.
Один сервер, который следит за собой и парой соседей — 2 ядра и 4 ГБ. У AdminVPS это Micro: 899 ₽ при оплате за месяц, 2 vCPU 3,6 ГГц, 4 ГБ RAM, 60 ГБ NVMe. Начальный Lite за 349 ₽ сюда не подходит — там одно ядро и один гигабайт, то есть ни одно из трёх требований не закрыто.
Десяток хостов и хранение дольше месяца — 4 ядра и 8 ГБ. Это тариф Start: 1 289 ₽ при оплате за месяц, 4 vCPU 3,6 ГГц, 8 ГБ RAM, 80 ГБ NVMe.
Заключение
Если парк разнородный — физические серверы, сетевое оборудование, источники бесперебойного питания, — стоит посмотреть в сторону Zabbix: он опрашивает по SNMP и IPMI, а не только метрики приложений. Какой VPS под него нужен и с какого сервера своя установка окупается — разобрано отдельно.
Настройка связки Grafana + Prometheus + Node Exporter — один из наиболее эффективных способов получить полный контроль над состоянием VPS. Вы получаете детализированные графики, гибкие дашборды и систему алертов, не завися от сторонних SaaS-сервисов.
Если вы ещё не определились с площадкой для развёртывания мониторинга, сравните актуальные предложения российских провайдеров на EasyLinkLife — тарифы, характеристики и отзывы в одном месте.
Плюсы и минусы
Преимущества
- Полностью бесплатный open-source стек
- Детализированные метрики CPU, RAM, диска и сети
- Гибкая система алертов через Telegram, Email, Slack
- Готовые дашборды сообщества (ID 1860)
- Работает на минимальных ресурсах (2 vCPU, 2 ГБ RAM)
- Мониторинг нескольких серверов с одной Grafana
Недостатки
- Требует базовых знаний Linux и командной строки
- Нет встроенной аутентификации в Prometheus
- Хранение данных растёт при длительном retention
- Только pull-модель (scrape)
Реклама · АО «ТаймВэб»
Timeweb Cloud — VPS с почасовой оплатой
Под стек подойдёт MSK 50: 2 vCPU и 4 ГБ RAM за 1 200 ₽/мес при оплате за месяц или 1 080 ₽/мес при оплате за 12 месяцев; списание почасовое.
Реклама · ООО «Админвпс»
AdminVPS — NVMe под хранение метрик
NVMe на всех тарифах и площадки в России. Под базу метрик Prometheus берите Micro: 2 vCPU, 4 ГБ RAM, 60 ГБ NVMe — 899 ₽/мес при помесячной оплате.
Промокод EASYLINK — скидка 60 % на первый месяц при оплате за 1 месяц, кроме тарифов Lite.
Реклама · ООО «Админвпс»
AdminVPS — сервер под Grafana и Prometheus
Под стек Grafana, Prometheus и Node Exporter берите Micro: 2 vCPU, 4 ГБ RAM, 60 ГБ NVMe — 899 ₽/мес при помесячной оплате. Grafana, Prometheus и Zabbix есть в каталоге приложений.
Промокод EASYLINK — скидка 60 % на первый месяц при оплате за 1 месяц, кроме тарифов Lite.
Частые вопросы
Сколько ресурсов VPS нужно для Grafana и Prometheus?
Для сервера, который следит за собой и парой соседей, — 2 ядра и 4 ГБ RAM; для десятка хостов и хранения дольше месяца — 4 ядра и 8 ГБ. Самой Grafana по её документации для пробы хватает 512 МБ и одного ядра, для небольших установок она советует 2–4 ГБ и 2 ядра. На проверке 20.10 три службы с одним хостом заняли вместе 486 МБ памяти — подробности в статье.
Сколько времени занимает настройка мониторинга?
Время настройки мы не засекали. По шагам этой статьи — три программы, один конфиг и импорт готовой панели 1860; через Docker Compose стек поднимается одной командой.
Grafana и Prometheus бесплатны?
Да, полностью бесплатные open-source инструменты. Платите только за VPS: под стек подходит Micro за 899 ₽/мес при оплате за месяц.
Как защитить Grafana от несанкционированного доступа?
Привяжите Prometheus, Node Exporter и Grafana к 127.0.0.1 (ключ --web.listen-address и http_addr в grafana.ini) и заходите через SSH-туннель; ufw включите вторым слоем, разрешив SSH до ufw enable; пароль admin смените при первом входе. Одни правила ufw deny не помогают: на чистой Ubuntu 24.04 ufw выключен.
Можно ли мониторить несколько VPS с одной Grafana?
Да, установите Node Exporter на каждый сервер и добавьте IP в targets prometheus.yml.
Куда Grafana отправляет уведомления об алертах?
Telegram, Email, Slack, PagerDuty. Для Telegram нужен бот через @BotFather.
Docker Compose или ручная установка?
Docker Compose быстрее и удобнее. Ручная — больше контроля для production без Docker.
Запустите Grafana + Prometheus уже сегодня
Выбрать VPS для мониторингаНекоторые ссылки в этой статье являются партнёрскими. Мы можем получить комиссию при переходе и покупке. На стоимость для вас это не влияет. Подробнее