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

Установка и настройка Prometheus и node_exporter на CentOS 8

6 min read Мониторинг. Обновлено 26 Nov 2025
Prometheus и node_exporter на CentOS 8
Prometheus и node_exporter на CentOS 8

Введение

Логотип Prometheus

Prometheus — это система мониторинга с открытым исходным кодом. Она использует мульти‑мерную модель данных, мощный язык запросов и обеспечивает визуализацию и оповещения. Проект первоначально был создан в 2012 году и теперь поддерживается сообществом как независимый проект. Все компоненты доступны под лицензией Apache 2 на GitHub.

В этом руководстве вы поэтапно установите Prometheus и node_exporter на сервер CentOS 8, настроите systemd‑сервисы, откроете необходимые порты и протестируете сбор метрик.

Кратко о терминах (1‑строчные определения):

  • Prometheus — система сбора и хранения временных рядов метрик.
  • node_exporter — экспортёр метрик ОС (CPU, память, диск, сеть).
  • scrape — операция опроса таргета для получения метрик.
  • TSDB — time series database, хранилище временных рядов Prometheus.

Что потребуется

  • Сервер с CentOS 8
  • root или sudo привилегии
  • Доступ к интернету для загрузки релизов с GitHub

Важно: в примерах используются релизы конкретных версий. Если вы планируете развёртывание в проде, проверьте актуальные версии на официальных репозиториях:

Быстрый обзор шагов

  1. Создать пользователя prometheus и скачать Prometheus.
  2. Настроить Prometheus как systemd‑сервис.
  3. Открыть порт 9090 в firewalld.
  4. Установить node_exporter и настроить как сервис.
  5. Добавить node_exporter в prometheus.yml и перезапустить Prometheus.
  6. Проверить сбор метрик через UI и напрямую через /metrics.

Фактбокс ключевые параметры

  • Порт Prometheus по умолчанию: 9090
  • Порт node_exporter по умолчанию: 9100
  • Системный пользователь: prometheus
  • Каталог установки в руководстве: /home/prometheus/prometheus

Шаг 1 — Создание пользователя и загрузка Prometheus

Prometheus не должен работать от root. Создайте отдельного пользователя и загрузите архив релиза.

Выполните от root:

useradd -m -s /bin/bash prometheus

Переключитесь на пользователя prometheus и скачайте релиз (пример для v2.13.1):

su - prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.linux-amd64.tar.gz

Загрузка исходников Prometheus командой wget

Распакуйте и переименуйте каталог:

tar -xf prometheus-2.13.1.linux-amd64.tar.gz
mv prometheus-2.13.1.linux-amd64/ prometheus/

Создайте каталог для TSDB:

mkdir -p ~/prometheus/data

Теперь файлы Prometheus находятся в /home/prometheus/prometheus.

Распаковка архива Prometheus и переименование каталога

Важно: если вы загружаете другую версию, скорректируйте имена файлов и пути в следующих шагах.

Шаг 2 — Настройка Prometheus как systemd‑сервиса

Создайте unit‑файл systemd, чтобы Prometheus запускался как сервис от пользователя prometheus.

От root выполните:

cd /etc/systemd/system/
vim prometheus.service

Вставьте следующий конфиг (корректируйте пути при необходимости):

[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=prometheus
Restart=on-failure

# Change this line if you download the
# Prometheus on different path user
ExecStart=/home/prometheus/prometheus/prometheus \
  --config.file=/home/prometheus/prometheus/prometheus.yml \
  --storage.tsdb.path=/home/prometheus/prometheus/data

[Install]
WantedBy=multi-user.target

Сохраните, затем:

systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus

Конфигурация systemd-сервиса prometheus.service

Проверка статуса:

systemctl status prometheus

Проверка сетевых портов (если установлен net-tools):

netstat -plntu

Prometheus по умолчанию слушает 9090.

Проверка статуса сервиса Prometheus и сетевых портов

Важное замечание

  • Убедитесь, что каталог storage.tsdb.path доступен пользователю prometheus и имеет достаточно места.
  • Если планируется долгосрочное хранение, подумайте о выделенном диске для TSDB и настройке retention.

Шаг 3 — Настройка Firewalld

Если на системе используется firewalld, откройте порт 9090:

firewall-cmd --add-port=9090/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

Вы увидите порт 9090 в списке разрешённых.

Открытие порта 9090 в firewalld

Затем в браузере перейдите по адресу:

http://:9090/graph

В поле запроса введите, например:

prometheus_http_requests_total

и нажмите Execute.

Интерфейс Prometheus — графический редактор запросов

Шаг 4 — Установка и настройка node_exporter

node_exporter собирает метрики машины (CPU, память, файловая система, сеть).

Переключитесь на пользователя prometheus и скачайте node_exporter (пример v0.18.1):

su - prometheus
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

Распакуйте и переименуйте каталог:

tar -xf node_exporter-0.18.1.linux-amd64.tar.gz
mv node_exporter-0.18.1.linux-amd64 node_exporter

Загрузка и распаковка node_exporter

Создайте unit‑файл для node_exporter:

cd /etc/systemd/system/
vim node_exporter.service

Вставьте:

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/home/prometheus/node_exporter/node_exporter

[Install]
WantedBy=default.target

Перезапустите systemd и включите сервис:

systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporter

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

Проверка статуса и портов:

systemctl status node_exporter
netstat -plntu

node_exporter слушает порт 9100 по умолчанию.

Проверка статуса node_exporter и порта 9100

Шаг 5 — Добавление node_exporter в конфигурацию Prometheus

От пользователя prometheus откройте prometheus.yml:

su - prometheus
cd ~/prometheus/
vim prometheus.yml

В разделе scrape_configs добавьте job для node_exporter:

  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9100']

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

systemctl restart prometheus

Перезапуск сервиса Prometheus после изменения конфигурации

Проверьте, что в Targets (http://:9090/targets) появился ваш job и статус “UP”.

Шаг 6 — Тестирование сборки метрик

В веб UI Prometheus выполните запрос для проверки памяти:

node_memory_MemAvailable_bytes

Вы должны увидеть метрику для job node_exporter и таргета localhost:9100.

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

Если нужно получить сырой вывод node_exporter напрямую, откройте порт 9100 в firewalld:

firewall-cmd --add-port=9100/tcp --permanent
firewall-cmd --reload

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

http://:9100/metrics

и увидите текстовый список метрик.

Страница с сырой метрикой node_exporter /metrics

Поздравляем — базовая установка и конфигурация завершены.


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

  • Запускайте сервисы от непривилегированного пользователя (prometheus) — сделано.
  • Ограничьте доступ к портам 9090 и 9100 с помощью firewall или сетевых ACL. По возможности разрешайте доступ только с IP серверов‑сборщиков и консоли администраторов.
  • Для публичного доступа используйте обратный прокси с аутентификацией или VPN.
  • Планируйте retention (например, –storage.tsdb.retention.time) и мониторьте место на диске.

Важно: Prometheus не предназначен для хранения больших объёмов метрик бесконечно. Настройте политику хранения.

Типичные проблемы и способы устранения

  • Prometheus не стартует — проверьте journalctl -u prometheus и права на каталоги (особенно storage).
  • node_exporter не появляется в Targets — проверьте, запущен ли node_exporter и слушает ли 9100, а также правильность targets в prometheus.yml.
  • 403/401 при доступе к UI — на уровне Prometheus нет встроенной аутентификации; используйте прокси с аутентификацией.
  • Недостаточно диска — уменьшите retention или добавьте диск, не удаляйте вручную файлы TSDB.

Когда этот подход не подходит (контрпримеры)

  • Если вам нужна автоматическая регистрация таргетов в облаке или через сервис‑дискавери, ручное добавление targets в prometheus.yml неудобно — используйте сервис‑дискавери (Consul, Kubernetes, EC2).
  • Для масштабируемых кластеров и долгосрочного хранения рассмотрите Cortex или Thanos.

Альтернативные способы установки

  • Установка из RPM/репозитория (если доступны пакеты для вашей дистрибуции).
  • Запуск Prometheus и node_exporter в Docker/Podman-контейнерах.
  • Использование готовых образов на облачных маркетплейсах.

Модель принятия решений (коротко)

  • Нужна простая самодельная мониторинговая система на одном сервере → текущий подход.
  • Много агентов/машин → использовать менеджер конфигурации (Ansible/Chef) или систему оркестрации для автоматической регистрации.
  • Долгосрочное хранение, агрегация → интегрировать Thanos/Cortex.

Роль‑ориентированные чек-листы

  • Системный администратор:
    • Создал пользователя prometheus
    • Проверил права на каталоги
    • Настроил systemd‑unit и автозапуск
    • Открыл порты в Firewall
  • DevOps инженер:
    • Добавил node_exporter в prometheus.yml
    • Проверил Targets и коллекцию метрик
    • Настроил retention и мониторинг места на диске
  • Инженер безопасности:
    • Ограничил доступ к 9090/9100 по IP
    • Настроил прокси/аутентификацию при необходимости

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

  • Prometheus сервис в статусе Running.
  • node_exporter сервис в статусе Running.
  • В разделе Targets веб UI Prometheus job node_exporter имеет статус UP.
  • Запрос node_memory_MemAvailable_bytes возвращает значения для localhost:9100.

Короткий план тестирования

  1. Проверить статусы systemd: systemctl status prometheus, node_exporter.
  2. Выполнить netstat или ss для проверки портов 9090 и 9100.
  3. В UI Prometheus убедиться, что Targets UP.
  4. Выполнить несколько запросов (CPU, память, диск) и проверить графики.

Глоссарий (одна строка определения)

  • Prometheus — система мониторинга для сбора и обработки метрик во временных рядах.
  • node_exporter — агент для экспорта метрик ОС в Prometheus.
  • scrape — процесс опроса таргета Prometheus для получения метрик.
  • TSDB — база данных временных рядов Prometheus.

Заключение

В статье описаны шаги установки Prometheus и node_exporter на CentOS 8, включая создание пользователя, настройку systemd, работу с firewalld и добавление node_exporter в конфигурацию Prometheus. Для продакшена дополнительно рекомендуются ограничения доступа, настройка хранения и планирование резервирования/масштабирования.

Если у вас есть требования к масштабированию, аутентификации или долгосрочному хранению — напишите, и я предложу подходящую архитектуру и шаги миграции.

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

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

Настройка Always On Display в One UI 7.0
Android.

Настройка Always On Display в One UI 7.0

Как алфавитно сортировать в Microsoft Excel
Excel

Как алфавитно сортировать в Microsoft Excel

Как связаться с Microsoft — всё о поддержке
Поддержка

Как связаться с Microsoft — всё о поддержке

Как настроить руль для Assetto Corsa на ПК
Симрейсинг

Как настроить руль для Assetto Corsa на ПК

Удалённый рабочий стол: Windows → Ubuntu
Удалённый доступ

Удалённый рабочий стол: Windows → Ubuntu

Заметки докладчика в PowerPoint — добавить и использовать
Презентации

Заметки докладчика в PowerPoint — добавить и использовать