Гид по технологиям

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

• 5 min read • Мониторинг. • Обновлено 22 Nov 2025
Prometheus на Debian 11: установка и node_exporter
Prometheus на Debian 11: установка и node_exporter

Prometheus логотип и панель мониторинга

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

Откройте в браузере:

http://prometheus.example.com

Интерфейс 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.

Список Targets Prometheus

На главной странице попробуйте выполнить простой PromQL‑запрос, например:

node_memory_MemAvailable_bytes

Нажмите Execute — внизу появится график/таблица метрики.

Результат запроса node_memory_MemAvailable_bytes

Также метрики node_exporter доступны напрямую по URL:

http://your-server-ip:9100/metrics

Сырые метрики node_exporter

Критерии приёмки

  • 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 или рекомендации по нагрузочному тестированию — напишите, и я добавлю соответствующие разделы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро