Введение
Prometheus — это набор инструментов с открытым исходным кодом, написанный на языке Go и представляющий собой полноценную систему мониторинга и оповещения.
Изначально продукт был создан SoundCloud, однако сейчас поддерживается сообществом разработчиков независимо от какой-либо компании.
Из чего состоит Prometheus
- Главный сервер
- Библиотеки для управления кодом приложения
- Система выполнения заданий
- Менеджер оповещений
- Экспортеры данных для внешних инструментов (HAProxy, StatsD, Graphite)
Все компоненты обеспечивают три ключевые операции:
- Сбор — опрос внешних служб и получение метрик
- Обработка — выполнение правил для анализа данных
- Вывод — сохранение результатов в базу для последующей визуализации
В этом руководстве мы установим Prometheus, настроим правила обработки данных и подключим Grafana для визуализации.
1. Загрузка, распаковка и установка Prometheus
Для развертывания системы мониторинга удобно использовать VPS или выделенный сервер Simple-Server, с которого Prometheus будет опрашивать ваши приложения и собирать метрики.
В этом примере используется Ubuntu 22.04 на VPS с 2 vCPU и 4 ГБ RAM.
Загрузка архива
Prometheus распространяется в виде одного исполняемого файла на Go. Скачать его можно со страницы релизов на GitHub или с официального сайта.
Используем wget:
sudo wget https://github.com/prometheus/prometheus/releases/download/v2.45.3/prometheus-2.45.3.linux-amd64.tar.gzРаспаковка архива
sudo tar -xzf prometheus*.tar.gz
sudo rm prometheus*.tar.gzВ получившейся директории prometheus* находятся:
prometheus— исполняемый файл сервераpromtool— утилита для проверки конфиговconsolesиconsole_libraries— папки с шаблонамиprometheus.yml— главный конфигурационный файл
Перейдём в распакованный каталог:
cd prometheus*/Создание отдельного пользователя
Для безопасности создадим системного пользователя с ограниченными правами:
sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheusКопирование файлов
Перемещаем исполняемые файлы:
sudo mv prometheus /usr/local/bin
sudo mv promtool /usr/local/bin
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtoolСоздаём системные директории и переносим конфиги:
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo mv consoles /etc/prometheus
sudo mv console_libraries /etc/prometheus
sudo mv prometheus.yml /etc/prometheusНазначаем права:
sudo chown prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
sudo chown -R prometheus:prometheus /var/lib/prometheus2. Конфигурация Prometheus
Главный файл — prometheus.yml. В нём задаются объекты мониторинга, периодичность сбора, правила обработки и хранения данных.
Принцип работы
Prometheus решает две задачи:
- HTTP-запросы к целям (targets) для получения свежих данных
- Обработка собранных данных по описанным правилам (rules)
Конфигурационный файл
Откроем конфиг:
sudo nano /etc/prometheus/prometheus.ymlИ запишем минимальный пример с одной целью — самим сервером Prometheus:
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first.rules"
# - "second.rules"
scrape_configs:
- job_name: prometheus
```bash
static_configs:
- targets: ['localhost:9090']
Проверить корректность конфига можно через `promtool`:
```bash
promtool check config /etc/prometheus/prometheus.ymlОсновные блоки:
- global — глобальные настройки (
scrape_interval,evaluation_interval) - rule_files — список файлов с правилами оценки данных
- scrape_configs — описание целей мониторинга, разбитых по заданиям (jobs)
Prometheus умеет отдавать метрики о самом себе, поэтому мы добавили его как первую цель.
3. Служба Prometheus в systemd
Чтобы Prometheus запускался автоматически и перезапускался при сбоях, создадим systemd-юнит:
sudo nano /etc/systemd/system/prometheus.serviceСодержимое:
[Unit]
Description=Background service of Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
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
[Install]
WantedBy=multi-user.targetПрименяем:
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheusЕсли всё хорошо, в выводе будет Active: active (running).
4. Веб-интерфейс Prometheus
Веб-интерфейс доступен по адресу:
http://IP-адрес-сервера:9090Не забудьте открыть порт в брандмауэре:
sudo ufw allow 9090/tcp5. Установка Grafana
Стандартный интерфейс Prometheus подходит только для базовой проверки. Для удобной визуализации используют Grafana — open source платформу с гибкими дашбордами.
Установка из официального репозитория:
sudo apt install -y apt-transport-https software-properties-common wget
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install -y grafanaЗапускаем и добавляем в автозагрузку:
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-serverЕсли с российского IP репозиторий недоступен, используйте зеркало или скачайте
.debпакет вручную с официального сайта Grafana.
6. Интеграция Grafana с Prometheus
Подключение к Prometheus
Grafana работает на порту 3000:
http://IP-адрес-сервера:3000Логин/пароль по умолчанию — admin / admin (смените при первом входе).
Далее:
- Откройте Connections → Data Sources
- Нажмите Add Data Source
- Выберите Prometheus
- Укажите URL:
http://localhost:9090 - Нажмите Save and Test
Импорт дашборда через ID
- Откройте Dashboards → New → Import dashboard
- Введите ID дашборда — например,
3662(стандартная доска Prometheus 2.0) - Нажмите Load
- Дайте имя, выберите источник данных Prometheus и нажмите Import
Импорт дашборда через JSON
Если ID не загружается, скачайте JSON дашборда с сайта Grafana, вставьте содержимое в поле импорта и нажмите Load.
7. Настройка экспортеров
Экспортеры — модули, которые собирают метрики из внешних служб (MySQL, Nginx, Apache и др.) и отдают их Prometheus.
Установка Node Exporter
Node Exporter собирает базовые метрики о состоянии сервера. Установка через APT:
sudo apt install prometheus-node-exporterЛибо вручную из релизов GitHub:
sudo tar -xvf node_exporter*amd64.tar.gz
sudo cp node_exporter-*amd64/node_exporter /usr/local/binСлужба для Node Exporter
Если устанавливали из архива, создаём systemd-юнит:
sudo systemctl edit --full --force node_exporter.serviceСодержимое:
[Unit]
Description=Service of Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.targetЗапускаем:
sudo systemctl daemon-reload
sudo systemctl start node_exporterПроверить можно по адресу http://IP-адрес-сервера:9100/metrics.
Подключение Prometheus к Node Exporter
Откройте конфиг:
sudo nano /etc/prometheus/prometheus.ymlДобавьте новое задание в scrape_configs:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
```bash
static_configs:
- targets: ['localhost:9090']
```bash
- job_name: 'prometheus_node_exporter'
```bash
scrape_interval: 5s
static_configs:
- targets: ['localhost:9100']
Перезапустите сервис:
```bash
sudo systemctl restart prometheusДашборд для Node Exporter
В Grafana импортируйте дашборд с ID 1860 — это популярная доска Node Exporter Full с подробной визуализацией CPU, RAM, диска и сети.
Заключение
Развертывание мониторинга на Prometheus включает несколько этапов:
- Загрузка и установка Prometheus с GitHub
- Создание базового конфигурационного файла
- Настройка systemd-сервиса для автозапуска
- Установка Grafana и подключение Prometheus как источника данных
- Импорт готовых дашбордов
- Подключение экспортеров (Node Exporter и др.)
Размещайте Prometheus и Grafana на надёжных VPS Simple-Server с NVMe-дисками — это обеспечит стабильную работу системы мониторинга 24/7 с круглосуточной техподдержкой.