Перейти к основному содержанию

Мониторинг VPS: Grafana + Prometheus на своём сервере в 2026 году

Пошаговое руководство по настройке мониторинга VPS с помощью Grafana и Prometheus в 2026 году: установка, конфигурация, алерты и безопасность на российских серверах.

Мониторинг VPS 2026: Grafana + Prometheus на своём сервере — архитектура, метрики, алерты, безопасность

Зачем нужен мониторинг VPS

Настроить мониторинг VPS с помощью Grafana и Prometheus можно самому: достаточно установить Prometheus для сбора метрик, Node Exporter для их экспорта с сервера и Grafana для визуализации. Стек разворачивается на одном VPS через Docker Compose или вручную, не требует проприетарного ПО и предоставляет полноценную наблюдаемость за CPU, RAM, дисковой подсистемой и сетью в режиме реального времени.

Владельцы VPS нередко узнают о проблемах с сервером последними — из жалоб пользователей или после того, как сайт уже недоступен несколько часов. Без мониторинга администратор работает вслепую.

Типичные проблемы без мониторинга

  • Непредвиденные отказы. Переполненный диск роняет сервисы без предупреждения.
  • Деградация производительности. Утечки памяти приводят к постепенному росту потребления RAM.
  • Отсутствие исторических данных. При инциденте невозможно восстановить картину произошедшего.
  • Невозможность планирования ресурсов. Без метрик невозможно обосновать апгрейд тарифа.
Архитектура Prometheus + Grafana на VPS 2026: VPS → Node Exporter → Prometheus → Grafana с алертами в Telegram и Slack
Стек мониторинга VPS: Node Exporter собирает метрики, Prometheus хранит, Grafana визуализирует — алерты в Telegram/Slack

Что такое 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.

Смотреть тариф Micro →

Установка 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.target
sudo 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.target
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
curl http://localhost:9100/metrics | head -20

Node 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 как источника данных

  1. Перейдите в Connections - Data Sources
  2. Нажмите Add data source, выберите Prometheus
  3. В поле URL укажите http://localhost:9090
  4. Нажмите Save & Test

Импорт дашборда Node Exporter Full

  1. Dashboards - Import
  2. Введите ID 1860, нажмите Load
  3. Если Grafana спросит источник данных — выберите Prometheus; ревизия 101 (20.10) источника при импорте не требует и берёт источник по умолчанию
  4. Нажмите 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
Умные оповещения Grafana 2026: дашборды CPU, RAM, Disk I/O с алертами — пороги CPU>80%, Disk>90%, Uptime<99%, HTTP 5xx
Сценарии алертинга в Grafana: пороги по CPU, RAM и Disk I/O с уведомлениями в Telegram, Slack и почту

Безопасность стека мониторинга

Порты 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 сразу после первого входа
Что видно из интернета: Prometheus 9090, Node Exporter 9100 и Grafana 3000 открыты при настройках по умолчанию и закрыты после шагов статьи
Проверка 20.10.2026 на сервере Timeweb Cloud с двух внешних адресов: по прежним шагам статьи три порта отвечали из интернета, после привязки к 127.0.0.1 — ни один

Проверка на сервере 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 месяцев; списание почасовое.

Попробовать Timeweb Cloud

Реклама · ООО «Админвпс»

AdminVPS — NVMe под хранение метрик

NVMe на всех тарифах и площадки в России. Под базу метрик Prometheus берите Micro: 2 vCPU, 4 ГБ RAM, 60 ГБ NVMe — 899 ₽/мес при помесячной оплате.

Промокод EASYLINK — скидка 60 % на первый месяц при оплате за 1 месяц, кроме тарифов Lite.

Выбрать тариф AdminVPS

Реклама · ООО «Админвпс»

AdminVPS — сервер под Grafana и Prometheus

Под стек Grafana, Prometheus и Node Exporter берите Micro: 2 vCPU, 4 ГБ RAM, 60 ГБ NVMe — 899 ₽/мес при помесячной оплате. Grafana, Prometheus и Zabbix есть в каталоге приложений.

Промокод EASYLINK — скидка 60 % на первый месяц при оплате за 1 месяц, кроме тарифов Lite.

Выбрать тариф AdminVPS

Частые вопросы

Сколько ресурсов 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 для мониторинга

Некоторые ссылки в этой статье являются партнёрскими. Мы можем получить комиссию при переходе и покупке. На стоимость для вас это не влияет. Подробнее

Об авторе

Логотип EasyLinkLife

Редакция EasyLinkLife

Редакция EasyLinkLife сверяет цены, состав тарифов и условия оплаты российских хостинг-провайдеров по их первоисточникам.

Проверено: Редакция EasyLinkLife | Обновлено: 23 октября 2026 г.

Полезные материалы