Стек мониторинга серверов: настройка Prometheus, Grafana и оповещений в 2026 году | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Стек мониторинга серверов: настройка Prometheus, Grafana и оповещений в 2026 году

07 мая 2026 7 мин. чтения

В 2026 году надежный мониторинг серверной инфраструктуры остается критически важным для предотвращения сбоев. Эта инструкция проведет вас через развертывание готового стека на базе Prometheus, Grafana и Alertmanager. Вы получите работающую систему для сбора метрик, визуализации данных и автоматических оповещений о проблемах с CPU, памятью, дисками и сетью.

Гайд основан на актуальных версиях ПО на май 2026 года и содержит проверенные конфигурационные файлы. Мы начнем с установки компонентов, затем настроим алертинг в популярные мессенджеры и создадим информативные дашборды. Весь процесс займет 1-2 часа.

Подготовка инфраструктуры и установка компонентов

Перед началом убедитесь, что у вас есть сервер под управлением Ubuntu 24.04 LTS, Debian 12 или аналогичного дистрибутива Linux. Потребуются права суперпользователя (sudo) и стабильное интернет-соединение. Мы будем устанавливать ПО через официальные репозитории и systemd для управления службами.

Установка и настройка Prometheus для сбора метрик

Prometheus 3.8 (актуальная версия на май 2026) устанавливается через пакетный менеджер. Добавьте официальный репозиторий и выполните установку.

sudo apt update
sudo apt install -y prometheus prometheus-node-exporter

После установки отредактируйте основной конфигурационный файл /etc/prometheus/prometheus.yml. Приведенная ниже конфигурация задает глобальные параметры и добавляет задание для сбора метрик с локального node_exporter.

global:
  scrape_interval: 15s
  evaluation_interval: 15s

rule_files:
  - "/etc/prometheus/alert_rules.yml"

alerting:
  alertmanagers:
    - static_configs:
        - targets: ['localhost:9093']

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

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

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

sudo systemctl start prometheus
sudo systemctl enable prometheus

Проверьте работу Prometheus, открыв в браузере http://ваш_сервер:9090. В разделе Status -> Targets должны отображаться состояния endpoint'ов prometheus и node со статусом UP.

Развертывание node_exporter для мониторинга состояния сервера

node_exporter 2.0 уже установился вместе с Prometheus. Эта служба собирает ключевые метрики операционной системы:

  • CPU: загрузка ядер, время в режиме user/system/idle.
  • Память: общий объем, использование, кэш, своп.
  • Диски: свободное пространство, I/O операции, latency.
  • Сеть: трафик, ошибки, состояние интерфейсов.

Запустите и включите службу:

sudo systemctl start prometheus-node-exporter
sudo systemctl enable prometheus-node-exporter

Убедитесь, что метрики доступны по адресу http://ваш_сервер:9100/metrics. Prometheus автоматически начнет их сбор, так как target указан в конфигурации. Если вам нужен мониторинг специфичных служб, таких как Nginx, рассмотрите установку соответствующих экспортеров. Подробный гайд по настройке мониторинга веб-сервера доступен в нашей статье: Nginx: практический мониторинг, анализ логов и отладка ошибок.

Настройка Alertmanager для автоматических оповещений

Alertmanager 0.28 обрабатывает алерты, сгенерированные Prometheus, и отправляет уведомления в заданные каналы. Его основная функция - группировка, подавление дублей и маршрутизация сообщений.

Конфигурация Alertmanager для Telegram, Slack и Email

Установите Alertmanager из репозитория:

sudo apt install -y alertmanager

Основной файл конфигурации - /etc/alertmanager/alertmanager.yml. Ниже приведен пример с настройкой получателей для Telegram, Slack и Email. Для Telegram потребуется создать бота через @BotFather и получить chat_id.

global:
  smtp_smarthost: 'smtp.gmail.com:587'
  smtp_from: 'alertmanager@yourdomain.com'
  smtp_auth_username: 'your-email@gmail.com'
  smtp_auth_password: 'your-app-password'

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'telegram-notifications'

receivers:
  - name: 'telegram-notifications'
    telegram_configs:
      - api_url: 'https://api.telegram.org'
        bot_token: 'YOUR_BOT_TOKEN'
        chat_id: YOUR_CHAT_ID
        parse_mode: 'HTML'

  - name: 'slack-notifications'
    slack_configs:
      - api_url: 'https://hooks.slack.com/services/YOUR/WEBHOOK/URL'
        channel: '#alerts'
        title: '{{ .GroupLabels.alertname }}'
        text: '{{ .CommonAnnotations.description }}'

  - name: 'email-notifications'
    email_configs:
      - to: 'admin@yourdomain.com'
        subject: '[Alert] {{ .GroupLabels.alertname }}'
        html: '{{ .CommonAnnotations.description }}'

Важно: стандартные чаты Telegram по умолчанию не имеют сквозного шифрования. Для отправки конфиденциальных алертов используйте секретные чаты (Secret Chats). Если безопасность - абсолютный приоритет, рассмотрите альтернативы вроде Signal, где шифрование включено всегда. Запустите Alertmanager: sudo systemctl start alertmanager.

Создание и тестирование правил алертов в Prometheus

Правила алертов определяют условия, при которых Prometheus генерирует событие. Создайте файл /etc/prometheus/alert_rules.yml со следующим содержимым:

groups:
  - name: node_alerts
    rules:
      - alert: HighCpuUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80
        for: 2m
        labels:
          severity: warning
        annotations:
          description: 'CPU usage on {{ $labels.instance }} is {{ $value }}%'

      - alert: HighMemoryUsage
        expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85
        for: 2m
        labels:
          severity: warning
        annotations:
          description: 'Memory usage on {{ $labels.instance }} is {{ $value }}%'

      - alert: LowDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 15
        for: 5m
        labels:
          severity: critical
        annotations:
          description: 'Root filesystem on {{ $labels.instance }} has only {{ $value }}% free space'

Перезагрузите конфигурацию Prometheus: sudo systemctl reload prometheus. Проверьте, что правила загружены, на странице http://ваш_сервер:9090/rules. Для тестирования искусственно создайте нагрузку, например, командой stress-ng --cpu 2 --timeout 300s. Через 2 минуты в Alertmanager должен появиться алерт HighCpuUsage, а затем прийти уведомление в выбранный канал. Более глубокое погружение в тему алертинга, включая борьбу с шумом уведомлений, вы найдете в нашем руководстве: Alerting в IT-мониторинге: настройка умных уведомлений и борьба с шумом.

Визуализация данных: создание дашбордов в Grafana

Grafana 12.0 предоставляет мощный интерфейс для визуализации метрик из Prometheus. Установите ее, добавив официальный репозиторий.

sudo apt install -y grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Откройте веб-интерфейс по адресу http://ваш_сервер:3000 (логин/пароль по умолчанию: admin/admin). Первым делом добавьте источник данных (Data Source). Выберите тип Prometheus, укажите URL http://localhost:9090 и нажмите Save & Test.

Импорт готового дашборда для мониторинга сервера

Самый быстрый способ получить информативную панель - импорт готового дашборда из официальной библиотеки. В Grafana перейдите в раздел Dashboards -> Import и введите ID: 1860 (Node Exporter Full). В качестве источника данных выберите только что созданный Prometheus.

Импортированный дашборд содержит несколько панелей:

  • CPU: график загрузки по ядрам, режимам работы.
  • Memory: использование RAM, свопа, кэша.
  • Disk I/O: операции чтения/записи, latency.
  • Network: входящий/исходящий трафик по интерфейсам.

Дашборд автоматически отобразит метрики с вашего сервера. Вы можете адаптировать его, изменив названия панелей или добавив новые графики.

Основы создания собственных графиков в Grafana

Чтобы создать простой график вручную, нажмите "Add panel" в любом дашборде. В редакторе запросов (Query) выберите источник данных Prometheus и введите выражение на PromQL. Например, для отображения доступной памяти:

node_memory_MemAvailable_bytes

Используйте функцию rate() для вычисления скорости изменения метрики за интервал, что полезно для сетевого трафика или операций диска:

rate(node_network_receive_bytes_total[2m])

Сохраните панель, задав понятное название. Этот базовый навык позволит вам в будущем расширять мониторинг под свои нужды. Для комплексного понимания всех этапов настройки, от CLI-утилит до продвинутых дашбордов, обратитесь к нашему исчерпывающему руководству: Системы мониторинга производительности 2026: от CLI-утилит до Prometheus и Grafana.

Финальная проверка и оптимизация системы

После настройки всех компонентов выполните комплексную проверку. Это гарантирует, что система будет реагировать на реальные инциденты.

Тестирование полного цикла мониторинга и оповещений

Смоделируйте критическую ситуацию для проверки всей цепочки. Например, заполните дисковое пространство:

dd if=/dev/zero of=/tmp/test_fill bs=1M count=1024

Подождите 5 минут (интервал, заданный в правиле LowDiskSpace). Затем последовательно проверьте:

  1. Prometheus Alerts: на странице http://ваш_сервер:9090/alerts должен появиться алерт LowDiskSpace в состоянии Firing.
  2. Alertmanager: на странице http://ваш_сервер:9093 во вкладке Alerts отобразится тот же алерт.
  3. Канал уведомлений: в Telegram, Slack или на почту должно прийти сообщение с описанием проблемы.

Если уведомление не пришло, проверьте логи служб: sudo journalctl -u alertmanager -f. Частые ошибки - неверный bot_token в Telegram, заблокированный порт для SMTP или отсутствие интернет-соединения у сервера.

Дальнейшие шаги и рекомендации по развитию системы

Базовая система готова. Для повышения ее эффективности выполните следующие шаги:

  • Расширение мониторинга: установите экспортеры для Docker (cadvisor), веб-серверов (nginx_exporter), баз данных. Добавьте их в prometheus.yml как новые job.
  • Оптимизация алертов: настройте разные получатели для алертов разной критичности (warning -> Slack, critical -> Telegram + Email). Используйте аннотации для добавления ссылок на runbook или инструкции по устранению.
  • Резервный канал: добавьте второй канал оповещений (например, Email как резерв для Telegram) для повышения надежности.
  • Документирование: сохраните все конфигурационные файлы (prometheus.yml, alertmanager.yml, alert_rules.yml) в систему контроля версий (Git). Это упростит восстановление и аудит изменений.

Помните принцип, актуальный для любых автоматизированных систем: четко прописанные правила (конфигурации) определяют поведение, но их реализация требует регулярной проверки. Обновляйте версии ПО и тестируйте правила при изменении инфраструктуры. Для взвешенного выбора между встроенным алертингом Grafana и Alertmanager изучите наше практическое сравнение: Grafana Alerting vs Prometheus Alertmanager 2026: практическое руководство по выбору системы алертинга.

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

Поделиться:
Сохранить гайд? В закладки браузера