Установка Prometheus и node_exporter на Debian 11

Prometheus — свободная, открытая и веб‑ориентированная система мониторинга, которая собирает метрики из сервисов и хранит их в time‑series базе. По умолчанию Prometheus экспортирует метрики только о себе; расширение осуществляется за счёт экспортеров и внешних программ. Prometheus поддерживает многомерную модель данных, различные способы построения графиков и дашбордов.
В этой статье показано, как установить и запустить Prometheus и node_exporter на Debian 11, а также как настроить Nginx в роли обратного прокси.
Что нужно заранее
- Сервер с Debian 11.
- Настроенный root‑доступ или пользователь с sudo.
Создание пользователя и групп для Prometheus
Рекомендуется выделить отдельного системного пользователя и группу для Prometheus:
groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheusЭто улучшает безопасность: служба запускается не от root.
Загрузка и распаковка Prometheus
Скачайте последнюю релизную сборку для linux/amd64 (команда скачает релиз, найденный через GitHub API):
curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -Проверьте список загруженных файлов:
ls -lПример вывода (имя файла может отличаться по версии):
-rw-r--r-- 1 root root 72638078 Oct 5 16:46 prometheus-2.30.3.linux-amd64.tar.gzРаспакуйте архив:
tar -xvf prometheus*.tar.gzПерейдите в извлечённую директорию (имя папки зависит от версии):
cd prometheus-2.30.3.linux-amd64Создайте служебные директории:
mkdir /etc/prometheus
mkdir /var/lib/prometheusСкопируйте конфигурацию и бинарники в системные пути:
mv prometheus.yml /etc/prometheus/prometheus.yml
mv consoles/ console_libraries/ /etc/prometheus/
mv prometheus promtool /usr/local/bin/Теперь можно переходить к созданию systemd‑сервиса.
Создание systemd‑сервиса для Prometheus
Создайте файл сервиса:
nano /etc/systemd/system/prometheus.serviceВставьте следующие строки (сохраните файл):
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
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 \
--web.listen-address=0.0.0.0:9090 \
--web.external-url=
SyslogIdentifier=prometheus
Restart=always
[Install]
WantedBy=multi-user.targetУстановите владельца и права на конфигурацию и директорию хранения:
chown -R prometheus:prometheus /etc/prometheus/
chmod -R 775 /etc/prometheus/
chown -R prometheus:prometheus /var/lib/prometheus/Перезагрузите демон systemd, запустите и включите сервис в автозагрузку:
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheusПроверка статуса:
systemctl status prometheusПример логов при успешном старте показывает, что TSDB запущен и сервер готов принимать запросы.
По умолчанию Prometheus слушает 0.0.0.0:9090 — проверьте прослушиваемые порты:
ss -antpl | grep 9090Ожидаемый вывод:
LISTEN 0 4096 *:9090 *:* users:(("prometheus",pid=18415,fd=7))Настройка Nginx как обратного прокси для Prometheus
Рекомендуется поставить Nginx перед Prometheus для управления TLS, хостнеймом и возможной балансировки.
Установка Nginx:
apt-get install nginx -yСоздайте виртуальный хост:
nano /etc/nginx/conf.d/prometheus.confВставьте конфигурацию (замените server_name на реальный домен):
server {
listen 80;
server_name prometheus.example.com;
location / {
proxy_pass http://localhost:9090;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}Проверьте синтаксис Nginx и перезапустите сервис:
nginx -t
systemctl restart nginx
systemctl status nginxПосле этого Prometheus будет доступен по указанному домену (или IP) — при желании настройте TLS через Certbot/Let’s Encrypt.
Доступ к веб‑интерфейсу Prometheus
Откройте в браузере:

Установка и настройка node_exporter
node_exporter собирает метрики самого хоста (CPU, память, файловые системы и т. д.). Скачайте релиз (версия в примере — v1.2.2):
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gzРаспакуйте:
tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gzПереместите в /etc/prometheus и задайте владельца:
mv node_exporter-1.2.2.linux-amd64 /etc/prometheus/node_exporter
chown -R prometheus:prometheus /etc/prometheus/node_exporterСоздайте systemd‑сервис для node_exporter:
nano /etc/systemd/system/node_exporter.serviceСодержимое:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
ExecStart=/etc/prometheus/node_exporter/node_exporter
[Install]
WantedBy=default.targetПерезагрузите демона и запустите сервис:
systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporterПроверка статуса и прослушиваемого порта (по умолчанию 9100):
systemctl status node_exporter
ss -antpl | grep 9100Ожидаемый вывод для порта:
LISTEN 0 4096 *:9100 *:* users:(("node_exporter",pid=513,fd=3))Добавление node_exporter в конфигурацию Prometheus
Откройте файл конфигурации Prometheus:
nano /etc/prometheus/prometheus.ymlДобавьте job для node_exporter (под секцией scrape_configs):
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']Сохраните файл и перезапустите Prometheus:
systemctl restart prometheusВерификация Prometheus и node_exporter
В веб‑интерфейсе перейдите: Status → Targets — вы должны увидеть рабочий endpoint node_exporter со статусом UP.

На главной странице попробуйте выполнить простой PromQL‑запрос, например:
node_memory_MemAvailable_bytesНажмите Execute — внизу появится график/таблица метрики.

Также метрики node_exporter доступны напрямую по URL:
http://your-server-ip:9100/metrics

Критерии приёмки
- Prometheus и node_exporter запущены как systemd‑сервисы и включены в автозапуск.
- Prometheus отвечает на порту 9090 и доступен через Nginx по настроенному домену.
- В разделе Status → Targets метки node_exporter имеют статус UP.
- Выполнение простого PromQL‑запроса возвращает данные.
Шпаргалка команд (быстрая)
- Создать пользователя и группу:
- groupadd –system prometheus
- useradd -s /sbin/nologin –system -g prometheus prometheus
- Перезапуск systemd:
- systemctl daemon-reload
- systemctl restart prometheus
- systemctl status prometheus
- Проверка портов:
- ss -antpl | grep 9090
- ss -antpl | grep 9100
- Nginx:
- nginx -t
- systemctl restart nginx
Альтернативы и когда это не подходит
- Если у вас кластер Kubernetes, рассмотрите использование Prometheus Operator / kube‑prometheus, они упрощают развёртывание и управление в K8s.
- Для небольших проектов с минимальными требованиями к хранению метрик может быть достаточно простых агентов или SaaS‑решений (Datadog, New Relic) — если вы не хотите управлять инфраструктурой мониторинга.
- Если нужна длительная архивация метрик и масштабирование хранения, используйте Thanos или Cortex поверх Prometheus.
Рекомендации по безопасности
- Не открывайте порт Prometheus напрямую в интернет. Делайте доступ через обратный прокси с TLS и аутентификацией (например, OAuth, basic auth для внутреннего использования).
- Ограничьте доступ к интерфейсу через firewall / Nginx.
- Регулярно обновляйте бинарники Prometheus и node_exporter.
Чек‑лист ролей (операции и DevOps)
- Оператор:
- Установить systemd‑сервисы и проверить автозагрузку.
- Настроить ротацию логов и мониторить использование диска (TSDB).
- Инженер безопасности:
- Настроить TLS и контроль доступа.
- Провести аудит прав на файлы и каталоги.
- Разработчик:
- Проверить доступность метрик приложения и настроить экспортёр (если нужно).
Короткие эвристики / mental models
- Prometheus = сбор и краткосрочное хранение метрик + мощные запросы (PromQL).
- node_exporter = «датчик» хоста (CPU, память, FS) — ставится на каждый хост.
- Nginx = точка входа, где удобно включать TLS и фильтрацию.
Резюме
Вы установили Prometheus и node_exporter на Debian 11, настроили systemd‑сервисы и Nginx как обратный прокси. После этого Prometheus начал собирать метрики хоста и отображать их в веб‑интерфейсе. Варианты дальнейшего улучшения: включить TLS через Certbot, добавить экспортёры для баз данных и приложений, или интегрировать Thanos/Cortex для хранения и шкалирования метрик.
Если нужны примеры конфигов для дополнительных экспортёров, шаблоны alertmanager или рекомендации по нагрузочному тестированию — напишите, и я добавлю соответствующие разделы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента