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

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
Важно: в примерах используются релизы конкретных версий. Если вы планируете развёртывание в проде, проверьте актуальные версии на официальных репозиториях:
Быстрый обзор шагов
- Создать пользователя prometheus и скачать Prometheus.
- Настроить Prometheus как systemd‑сервис.
- Открыть порт 9090 в firewalld.
- Установить node_exporter и настроить как сервис.
- Добавить node_exporter в prometheus.yml и перезапустить Prometheus.
- Проверить сбор метрик через 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
Распакуйте и переименуйте каталог:
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.

Важно: если вы загружаете другую версию, скорректируйте имена файлов и пути в следующих шагах.
Шаг 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
Проверка статуса:
systemctl status prometheusПроверка сетевых портов (если установлен net-tools):
netstat -plntuPrometheus по умолчанию слушает 9090.

Важное замечание
- Убедитесь, что каталог 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 в списке разрешённых.

Затем в браузере перейдите по адресу:
http://
В поле запроса введите, например:
prometheus_http_requests_total
и нажмите Execute.

Шаг 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
Создайте 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
Проверка статуса и портов:
systemctl status node_exporter
netstat -plntunode_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
Проверьте, что в Targets (http://
Шаг 6 — Тестирование сборки метрик
В веб UI Prometheus выполните запрос для проверки памяти:
node_memory_MemAvailable_bytes
Вы должны увидеть метрику для job node_exporter и таргета localhost:9100.

Если нужно получить сырой вывод node_exporter напрямую, откройте порт 9100 в firewalld:
firewall-cmd --add-port=9100/tcp --permanent
firewall-cmd --reloadОткройте в браузере:
http://
и увидите текстовый список метрик.

Поздравляем — базовая установка и конфигурация завершены.
Проверка безопасности и рекомендации
- Запускайте сервисы от непривилегированного пользователя (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.
Короткий план тестирования
- Проверить статусы systemd: systemctl status prometheus, node_exporter.
- Выполнить netstat или ss для проверки портов 9090 и 9100.
- В UI Prometheus убедиться, что Targets UP.
- Выполнить несколько запросов (CPU, память, диск) и проверить графики.
Глоссарий (одна строка определения)
- Prometheus — система мониторинга для сбора и обработки метрик во временных рядах.
- node_exporter — агент для экспорта метрик ОС в Prometheus.
- scrape — процесс опроса таргета Prometheus для получения метрик.
- TSDB — база данных временных рядов Prometheus.
Заключение
В статье описаны шаги установки Prometheus и node_exporter на CentOS 8, включая создание пользователя, настройку systemd, работу с firewalld и добавление node_exporter в конфигурацию Prometheus. Для продакшена дополнительно рекомендуются ограничения доступа, настройка хранения и планирование резервирования/масштабирования.
Если у вас есть требования к масштабированию, аутентификации или долгосрочному хранению — напишите, и я предложу подходящую архитектуру и шаги миграции.
Похожие материалы
Настройка Always On Display в One UI 7.0
Как алфавитно сортировать в Microsoft Excel
Как связаться с Microsoft — всё о поддержке
Как настроить руль для Assetto Corsa на ПК
Удалённый рабочий стол: Windows → Ubuntu