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

Установка Prometheus и Node Exporter на AlmaLinux 9

• 7 min read • Мониторинг. • Обновлено 19 Nov 2025
Prometheus и Node Exporter на AlmaLinux 9
Prometheus и Node Exporter на AlmaLinux 9

Схема Prometheus и Node Exporter

Кратко о Prometheus и архитектуре мониторинга

Prometheus — это система мониторинга и алертинга с открытым исходным кодом. Она собирает численные метрики через HTTP-эндпоинты, хранит их как временные ряды и позволяет извлекать данные с помощью языка запросов PromQL.

Ключевая идея: каждый временной ряд определяется именем метрики и набором пар ключ/значение (лейблов). Прометей тянет метрики у экспортеров, запущенных на целевых серверах. Node Exporter — стандартный экспортер для Linux: он открывает метрики о ядре, железе, сети, дисках и т. п.

Определение в одну строку:

  • Prometheus — сервер сбора и хранения временных рядов.
  • Node Exporter — агент, который экспортирует системные метрики в формате, понятном Prometheus.

Важно: Prometheus по умолчанию опрашивает (scrape) цели, он не «толкает» конфигурацию на агенты.

Что будет сделано в руководстве

  • Создать системных пользователей для Prometheus и Node Exporter.
  • Установить бинарные пакеты Prometheus и Node Exporter на AlmaLinux 9.
  • Настроить prometheus.yml для сбора собственных метрик и метрик от Node Exporter.
  • Запустить службы через systemd и проверить через интерфейс Prometheus.
  • Обсудить безопасность, масштабирование и отладку.

Требования

  • Две машины AlmaLinux 9 (в примере: 192.168.10.20 — Prometheus, 192.168.10.21 — Node Exporter).
  • Пользователь с sudo.
  • Доступ к интернету для скачивания релизов Prometheus и Node Exporter.

Основные понятия

  • scrape target: конечная точка, которую опрашивает Prometheus.
  • exporter: приложение, которое переводит системные метрики в понятный Prometheus формат.
  • PromQL: язык запросов Prometheus для извлечения и агрегации метрик.

Подготовка: создать пользователя и директории для Prometheus

Выполните команды на сервере Prometheus (192.168.10.20):

sudo adduser -M -r -s /sbin/nologin prometheus
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

Создание пользователя и директорий Prometheus

Пояснение: пользователь prometheus без shell повышает безопасность — служба работает от имени несуперпользователя.


Установка Prometheus из предварительно собранного архива

  1. Установите wget, если он отсутствует:
sudo dnf install wget -y

Установка wget

  1. Скачайте релиз и распакуйте (примеры команд делают это в /usr/src):
cd /usr/src
wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz
tar -xf prometheus-2.44.0.linux-amd64.tar.gz
  1. Скопируйте конфигурацию и консоли в /etc/prometheus и бинарники в /usr/bin:
sudo cp /usr/src/prometheus-*/prometheus.yml /etc/prometheus/
sudo cp -r /usr/src/prometheus-*/consoles /etc/prometheus
sudo cp -r /usr/src/prometheus-*/console_libraries /etc/prometheus
sudo cp /usr/src/prometheus-*/prometheus /usr/bin/
sudo cp /usr/src/prometheus-*/promtool /usr/bin/
sudo chown -R prometheus:prometheus /etc/prometheus

Скачивание и распаковка Prometheus

  1. Проверка:
which prometheus
prometheus --version
which promtool
promtool --version

Проверка установки Prometheus


Базовая конфигурация Prometheus

Откройте файл /etc/prometheus/prometheus.yml и добавьте задачу для самого Prometheus, чтобы он собирал свои метрики:

# конфигурация скрейпа для самого Prometheus
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: [192.168.10.20:9090]

Сохраните файл.

Создайте systemd-сервис для Prometheus в /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/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 start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus

Если всё в порядке, сервис должен быть active (running). Откройте веб-интерфейс http://192.168.10.20:9090 и убедитесь, что отображается граф.

Prometheus граф

Проверить Targets: Status → Targets. Должно быть job prometheus с состоянием UP.

Статус Targets


Установка Node Exporter на целевом сервере

Перейдите на сервер Node Exporter (192.168.10.21) и выполните:

sudo adduser -M -r -s /sbin/nologin node_exporter
sudo dnf install wget -y
cd /usr/src
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz
tar -xf node_exporter-1.6.0.linux-amd64.tar.gz
sudo mv node_exporter-*/node_exporter /usr/bin
which node_exporter
node_exporter --version

Установка Node Exporter

Создайте systemd-сервис /etc/systemd/system/node_exporter.service:

[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/bin/node_exporter

[Install]
WantedBy=multi-user.target

Запустите сервис и включите автозапуск:

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
sudo systemctl status node_exporter

По умолчанию Node Exporter слушает порт 9100. Проверьте:

ss -tulpn | grep node

Откройте http://192.168.10.21:9100/ — вы должны увидеть экспортированные метрики.

Node Exporter метрики


Добавление Node Exporter в Prometheus

На сервере Prometheus откройте /etc/prometheus/prometheus.yml и добавьте задачу:

  - job_name: node_exporter_metrics
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.10.21:9100']

Сохраните и перезапустите Prometheus:

sudo systemctl restart prometheus

В веб-интерфейсе Prometheus проверьте Status → Targets: должна появиться задача node_exporter_metrics со статусом UP.

Добавление Node Exporter в Prometheus

Используйте Graph и ищите метрики, начинающиеся с node_. Например:

  • node_network_iface_id
  • node_os_info
  • node_load15

Запросы Node Exporter


Примеры полезных PromQL-запросов

# Список сетевых интерфейсов
node_network_iface_id

# Информация об ОС
node_os_info

# Средняя нагрузка за 15 минут
node_load15

# Процент использования CPU по квантили
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode='idle'}[5m])) * 100)

Совет: в PromQL фигурные скобки используют лейблы. Пробуйте запросы в поле Expression и переключайтесь между табами Graph и Console.


Проверка и приёмка установки

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

  • Prometheus запущен и отвечает на 9090.
  • Node Exporter запущен на целевом узле и отвечает на 9100.
  • В Prometheus в Status → Targets оба задания имеют статус UP.
  • Примеры PromQL возвращают ожидаемые метрики.

Тесты/критерии


Рольовые чеклисты

Для SRE/DevOps:

  • Проверить автозапуск systemd.
  • Добавить мониторинг дискового пространства, CPU, сетевых интерфейсов.
  • Настроить правила алертов (Alertmanager) при увеличении нагрузки.

Для администратора безопасности:

  • Ограничить доступ к портам 9090 и 9100 через firewall.
  • Запустить Prometheus и Node Exporter под непривилегированными пользователями.

Для разработчика приложения:

  • Подумать о добавлении экспортеров для приложений (например, экспортеры для JVM, PostgreSQL и т. д.).

Базовые рекомендации по безопасности

  1. Firewall
  • Ограничьте доступ к Prometheus (9090) только из сети доверенного сервера или через VPN.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port protocol="tcp" port="9090" accept'
sudo firewall-cmd --reload
  1. Разграничение прав
  • Службы должны работать под системными пользователями без shell.
  1. TLS и аутентификация
  • В продакшне рассмотрите проксирование Prometheus через nginx/Traefik с TLS и базовой аутентификацией или OAuth.
  1. Ограничение доступа к консоли и файлам с конфигурацией
  • /etc/prometheus должен быть доступен только для root и пользователя prometheus.

Масштабирование и устойчивость

  • Prometheus хорош для single-node хранения. Для крупных установок используйте federation, remote_write или проекты типа Thanos/Cortex.
  • Для горизонтального масштабирования: собирать метрики локально на каждом шардированном сервере и аггрегировать через прокси/федерацию.
  • Хранение: по умолчанию Prometheus хранит данные локально; убедитесь, что /var/lib/prometheus располагается на разделе с достаточным пространством.

Отладка: частые проблемы и решения

Проблема: target в Status → Targets в состоянии DOWN.

  • Проверьте, слушает ли node_exporter на 9100: curl -v http://192.168.10.21:9100/
  • Проверьте правила firewall.
  • Убедитесь, что в prometheus.yml правильно указан порт и IP.

Проблема: Prometheus не запускается после редактирования prometheus.yml.

  • Запустите promtool check config /etc/prometheus/prometheus.yml
  • Проверьте journalctl -u prometheus –no-pager –since “5 minutes ago”

Проблема: высокая загрузка диска из-за хранения данных.

  • Настройте retention в опциях запуска: –storage.tsdb.retention.time=15d
  • Рассмотрите remote_write для длительного хранения.

Шаблон minimal prometheus.yml для примера

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: [192.168.10.20:9090]

  - job_name: node_exporter_metrics
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.10.21:9100']

Интеграция с Grafana (кратко)

  • Добавьте Prometheus как источник данных в Grafana (URL: http://192.168.10.20:9090).
  • Импортируйте готовые дашборды для Node Exporter из Grafana.com или создайте свои.

Безопасность данных и приватность

Prometheus хранит метрики в виде временных рядов. Если метрики содержат чувствительные данные (например, идентификаторы пользователей), избегайте их экспонирования. В продакшне применяйте:

  • фильтрацию лейблов на источнике;
  • прокси с TLS и аутентификацией;
  • аудит доступа к интерфейсу Prometheus.

Процедура отката (rollback)

  1. Если после изменения prometheus.yml появились ошибки, восстановите резервную копию /etc/prometheus/prometheus.yml.bak.
  2. sudo systemctl restart prometheus
  3. Если проблема связана с новой версией Prometheus, верните старый бинарник и перезапустите службу.

Чеклист перед переходом в продакшн

  • Prometheus и Node Exporter работают под непривилегированными пользователями.
  • Доступ к 9090/9100 ограничен сетевыми правилами.
  • Настроены retention и резервное копирование данных.
  • Настроены алерты и процесс их обработки (Alertmanager).
  • Документирована процедура отката.

Примерные сценарии тестов / критерии приёмки

  1. Проверка доступности метрик: curl -s http://192.168.10.21:9100/metrics | grep node_cpu_seconds_total
  2. Проверка Target в Prometheus: Статус UP в Status → Targets.
  3. Проверка Grafana: данные из Prometheus отображаются на дашборде.

Часто встречающиеся расширения и альтернативы

  • Для долгосрочного хранения: Cortex, Thanos, Mimir.
  • Для управления конфигурацией: Ansible или Terraform.
  • Для визуализации: Grafana.

Руководство по обновлению версий

  1. Сделайте бэкап /etc/prometheus и /var/lib/prometheus (если нужно).
  2. Скачать новую версию, остановить службу, заменить бинарники, запустить службу и проверить совместимость конфигурации с promtool.

Полезные команды для администрирования

sudo journalctl -u prometheus -f
sudo journalctl -u node_exporter -f
sudo systemctl restart prometheus
sudo systemctl restart node_exporter
promtool check config /etc/prometheus/prometheus.yml

Решение по принятию: быстрое дерево решения

flowchart TD
  A[Нужно мониторить сервер?] -->|Да| B[Установить node_exporter]
  A -->|Нет| Z[Не ставить]
  B --> C[Добавить в prometheus.yml]
  C --> D{Target UP?}
  D -->|Да| E[Настроить дашборды и алерты]
  D -->|Нет| F[Проверить firewall и service status]
  F --> D

Частые вопросы (FAQ)

Как проверить конфигурацию Prometheus перед перезапуском?

Выполните promtool check config /etc/prometheus/prometheus.yml. Это покажет синтаксические ошибки.

Можно ли запускать Node Exporter в контейнере?

Да. Node Exporter может запускаться как бинарник на хосте или в контейнере, важно предоставить доступ к необходимым системным данным.

Как долго Prometheus хранит данные по умолчанию?

По умолчанию хранение ограничено настройками TSDB; для продакшна желательно задать явный параметр retention или использовать remote_write.


Заключение

Вы установили Prometheus на AlmaLinux 9 и подключили к нему Node Exporter на удалённом сервере. Дальше можно расширять метрики, подключать дополнительные экспортеры, настраивать Alertmanager и интегрировать Grafana для визуализации. Следуйте чеклистам по безопасности и резервному копированию перед переводом в продакшн.

Проверка Node Exporter в Prometheus


Важное: эта инструкция ориентирована на базовую установку. Для крупномасштабных или чувствительных окружений добавьте TLS, аутентификацию и долгосрочное хранилище метрик.

Поделиться: 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 быстро