этой статье мы рассмотрим, как настроить мониторинг VPS или выделенного сервера сервера через Grafana, Prometheus, Node Exporter и Grafana на операционных системах Debian, Ubuntu и AlmaLinux.
Зачем нужен этот стек
Три инструмента — Prometheus, Node Exporter и Grafana — вместе закрывают практически всю базовую потребность в мониторинге сервера, и каждый из них отвечает за свою часть работы:
- Node Exporter собирает сырые метрики непосредственно из ядра Linux (CPU, память, диски, сеть) и отдаёт их в формате, понятном Prometheus.
- Prometheus периодически опрашивает (scrape) Node Exporter, хранит историю значений в собственной базе временных рядов и умеет сам поднимать тревогу, если что-то вышло за пределы нормы.
- Grafana превращает все эти цифры в графики и дашборды, с которыми действительно удобно работать каждый день, а не вручную просматривать консольный вывод.
Устанавливать их стоит именно в таком порядке — сначала источник данных (Node Exporter), затем сборщик (Prometheus), и только в конце визуализацию (Grafana), потому что без первых двух показывать в Grafana будет просто нечего.
Из чего состоит стек мониторинга
| Компонент | Порт по умолчанию | Роль |
|---|---|---|
| Node Exporter | 9100 | Отдаёт метрики ОС конкретного сервера |
| Prometheus | 9090 | Собирает, хранит и опрашивает метрики |
| Grafana | 3000 | Визуализирует данные, строит дашборды и алерты |
Что должно быть готово заранее
- VPS с Debian 10/11/12, Ubuntu 20.04/22.04/24.04 или AlmaLinux 8/9
- Доступ sudo или root
- Минимум 1 ГБ оперативной памяти (для Prometheus с большим количеством метрик и длительной историей потребуется больше)
Prometheus и Node Exporter официально распространяются в виде самодостаточного бинарного файла с GitHub Releases — без зависимости от пакетных менеджеров дистрибутива. Благодаря этому шаги установки этих двух компонентов одинаковы для Debian, Ubuntu и AlmaLinux, отличаются только команды установки базовых утилит (wget, tar).
Установка Prometheus
Шаг 1. Установка базовых утилит
Debian / Ubuntu:
sudo apt update
sudo apt install -y wget tar nano
AlmaLinux:
sudo dnf install -y wget tar nano
Шаг 2. Создание отдельного системного пользователя
Запускать Prometheus от root — плохая практика. Создайте отдельного пользователя без прав входа в систему:
sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus
Шаг 3. Загрузка и установка бинарника
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v3.13.1/prometheus-3.13.1.linux-amd64.tar.gz
tar -xzf prometheus-3.13.1.linux-amd64.tar.gz
cd prometheus-3.13.1.linux-amd64
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
Шаг 4. Каталоги для конфигурации и данных
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
Шаг 5. Базовый конфигурационный файл
sudo nano /etc/prometheus/prometheus.yml
Минимальный рабочий конфиг (цель для Node Exporter добавим немного позже, когда он уже будет установлен):
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Шаг 6. Служба systemd
sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
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/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
Запустите и добавьте в автозагрузку:
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
sudo systemctl status prometheus
Шаг 7. Ограничение доступа к порту 9090
localhost и этот шаг можно пропуститьsudo ufw allow from IP_АДРЕС_ДОВЕРЕННОГО_СЕРВЕРА to any port 9090
AlmaLinux (firewalld):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_АДРЕС_ДОВЕРЕННОГО_СЕРВЕРА" port protocol="tcp" port="9090" accept'
sudo firewall-cmd --reload
Установка Node Exporter
Node Exporter устанавливается на каждый сервер, метрики которого вы хотите видеть в Prometheus. Если у вас несколько VPS — этот раздел повторяется на каждом из них, тогда как Prometheus и Grafana обычно достаточно иметь в одном экземпляре.
Шаг 1. Создание пользователя
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter
Шаг 2. Загрузка бинарника
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.12.1/node_exporter-1.12.1.linux-amd64.tar.gz
tar -xzf node_exporter-1.12.1.linux-amd64.tar.gz
sudo mv node_exporter-1.12.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Шаг 3. Служба systemd
sudo nano /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
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
sudo systemctl status node_exporter
Проверьте, что метрики отдаются корректно:
curl http://localhost:9100/metrics
Если в ответе видите поток строк формата node_cpu_seconds_total{...} — Node Exporter работает правильно.
Шаг 4. Ограничение доступа к порту 9100
localhost и этот шаг можно пропуститьsudo ufw allow from IP_АДРЕС_СЕРВЕРА_С_PROMETHEUS to any port 9100
AlmaLinux (firewalld):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_АДРЕС_СЕРВЕРА_С_PROMETHEUS" port protocol="tcp" port="9100" accept'
sudo firewall-cmd --reload
Подключение Node Exporter к Prometheus
Вернитесь на сервер с Prometheus и отредактируйте конфигурацию, добавив цель для опроса:
sudo nano /etc/prometheus/prometheus.ymlscrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['IP_АДРЕС_СЕРВЕРА_С_NODE_EXPORTER:9100']
Если Node Exporter установлен на том же сервере, что и Prometheus, укажите localhost:9100.
Перезапустите Prometheus:
sudo systemctl restart prometheus
Проверить, что цель подключена и опрашивается без ошибок, можно в веб-интерфейсе самого Prometheus: откройте http://IP_СЕРВЕРА:9090/targets — статус node_exporter должен быть UP.
Установка Grafana на Debian и Ubuntu
Официальный APT-репозиторий Grafana Labs единый для обоих дистрибутивов — команды ниже будут работать без изменений как на Debian 10/11/12, так и на Ubuntu 20.04/22.04/24.04.
Шаг 1. Подключение официального репозитория
sudo apt update
sudo apt install -y apt-transport-https software-properties-common wget
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg.key
sudo chmod 644 /etc/apt/keyrings/grafana.asc
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
Шаг 2. Установка пакета
sudo apt update
sudo apt install -y grafana
Установка Grafana на AlmaLinux
Шаг 1. Импорт GPG-ключа и подключение репозитория
sudo dnf install -y wget
wget -q -O gpg.key https://rpm.grafana.com/gpg.key
sudo rpm --import gpg.key
sudo tee /etc/yum.repos.d/grafana.repo > /dev/null <
Шаг 2. Установка пакета
sudo dnf install -y grafana
sudo setsebool -P httpd_can_network_connect 1. Запуск службы Grafana
Независимо от дистрибутива, служба запускается одинаково:
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
Открываем порт 3000 для доступа извне:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload
Вход в веб-интерфейс Grafana
По умолчанию Grafana слушает порт 3000. Откройте в браузере:
http://IP_ВАШЕГО_СЕРВЕРА:3000
Стандартные данные для первого входа:
- Логин:
admin - Пароль:
admin
Сразу после первого входа система попросит установить новый пароль.
Подключение Prometheus как источника данных
- В левом меню откройте раздел Connections → Data sources.
- Нажмите Add data source.
- Выберите Prometheus.
- В поле URL укажите адрес вашего Prometheus, например:
http://localhost:9090Если Prometheus работает на другом сервере — замените
localhostна его реальный адрес. - Нажмите Save & test и убедитесь, что появилось сообщение об успешном подключении.
Готовый дашборд для Node Exporter
Необязательно собирать дашборд с нуля — сообщество Grafana уже подготовило готовый шаблон именно для Node Exporter.
- В левом меню нажмите «+» → Import.
- В поле ID дашборда введите 1860 — это официальный ID популярного шаблона «Node Exporter Full».
- Нажмите Load.
- Выберите только что подключённый источник Prometheus.
- Нажмите Import.
Через несколько секунд получите готовый дашборд с загрузкой CPU, памяти, дисков, сетевого трафика и десятками других метрик сервера — без ручной настройки ни одной панели.
Далее имеет смысл добавить правила алертов на критические значения (заполнение диска более 90%, скачок нагрузки CPU, нехватка свободной памяти) и, если серверов несколько, повторить установку Node Exporter на каждом из них, просто добавляя новые цели в prometheus.yml. Если планируете держать такой стек на постоянной основе — стоит сразу закладываться на VPS с достаточным запасом ресурсов, поскольку Prometheus со временем накапливает немало исторических данных, и диск под них лучше брать с запасом.
