Централизованный мониторинг и оповещения
Масштабируйте мониторинг за пределы одного сервера: отправляйте показатели и журналы в центральную систему, создавайте панели и настраивайте оповещения, чтобы узнавать о проблемах раньше пользователей.
«Централизованный мониторинг и оповещения» — бесплатный урок Linux Server Deployment & SSH Mastery на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Server Deployment & SSH Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.
Зачем нужна централизация
Вход на каждый сервер с помощью top и journalctl подходит для одной машины. При большом количестве серверов такой подход не масштабируется, а проблемы становятся видны только тогда, когда Вы случайно проверяете систему.
Централизованный мониторинг собирает метрики и журналы со всех серверов в одном месте, предоставляя панели мониторинга и автоматические оповещения.
Метрики и журналы
Наблюдаемость основывается на двух видах данных:
- Метрики — числовые временные ряды, например загрузка CPU в процентах, объём памяти и частота запросов
- Журналы — отдельные текстовые события, например ошибки и записи доступа
Обычно собирают оба вида данных, используя для каждого оптимизированные инструменты.
Модель Prometheus
Prometheus — популярная система сбора метрик. Она получает метрики, обращаясь к HTTP-конечным точкам, которые предоставляет каждый сервер.
На каждом сервере запускается экспортёр — node_exporter для метрик узла, — который публикует данные, считываемые Prometheus.
# On each monitored server:
sudo apt install prometheus-node-exporter
curl http://localhost:9100/metrics | headНастройка цели сбора
Prometheus получает список целей для сбора из своего конфигурационного файла. Каждое задание содержит цели (host:port экспортёра).
Этот фрагмент собирает данные node_exporter с двух серверов.
scrape_configs:
- job_name: 'nodes'
static_configs:
- targets: ['web1:9100', 'web2:9100']Запрос метрик с помощью PromQL
У Prometheus есть собственный язык запросов — PromQL. С его помощью можно вычислять частоту, средние значения и другие показатели для всего парка серверов.
Это выражение оценивает загрузку CPU на каждом сервере.
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode='idle'}[5m])) * 100)Визуализация с помощью Grafana
Grafana подключается к Prometheus и многим другим источникам, чтобы создавать панели мониторинга. Добавьте Prometheus как источник данных, а затем создавайте панели на основе запросов PromQL.
Готовые панели для node_exporter позволяют за несколько минут получить графики загрузки CPU, памяти, диска и сети.
sudo apt install grafana
sudo systemctl enable --now grafana-server
# Open http://server:3000 and add Prometheus as a data sourceЦентрализация журналов
Для работы с журналами отправляйте их с каждого сервера в централизованное хранилище. Распространённый стек — Loki и Promtail, интегрированный с Grafana.
Promtail запускается на каждом сервере и пересылает в Loki файлы журналов и системный журнал.
# promtail tails the journal and ships to Loki
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: journal
journal:
max_age: 12hОпределение правил оповещения
Оповещения превращают метрики в действия. Правила оповещения Prometheus срабатывают, когда выражение остаётся истинным в течение определённого времени.
Это правило отправляет оповещение, если узел недоступен в течение двух минут.
groups:
- name: node
rules:
- alert: NodeDown
expr: up == 0
for: 2m
labels:
severity: critical
annotations:
summary: 'Instance {{ $labels.instance }} is down'Маршрутизация оповещений
Alertmanager получает сработавшие оповещения и направляет их в нужное место: по электронной почте, в Slack, PagerDuty и другие системы. Он также устраняет дубликаты и подавляет оповещения.
Вы сопоставляете оповещения с получателями на основе таких меток, как severity.
route:
receiver: 'team-slack'
receivers:
- name: 'team-slack'
slack_configs:
- channel: '#alerts'Как избежать усталости от оповещений
Слишком большое количество оповещений не лучше, чем их отсутствие: люди начинают их игнорировать. Хорошая система оповещений:
- Сообщает о симптомах, которые ощущают пользователи, а не о каждом кратковременном изменении метрики
- Использует длительность
for, чтобы избежать постоянного включения и выключения оповещений - Назначает уровень важности, чтобы можно было отфильтровать лишний шум
Рекомендации
Создавайте долговечную систему наблюдаемости:
- Централизованно собирайте и метрики, и журналы
- Начинайте с панелей сообщества, а затем адаптируйте их
- Создавайте оповещения только для условий, требующих действий
- Проверяйте, что оповещения действительно доходят до Вас
Быстрая проверка
Проверьте свои знания о централизованном мониторинге.
Итоги
Теперь Вы умеете централизованно отслеживать работу всего парка серверов:
- Метрики собираются Prometheus через node_exporter и запрашиваются с помощью PromQL
- Панели мониторинга создаются в Grafana
- Журналы передаются в Loki через Promtail
- Оповещения создаются по правилам Prometheus и маршрутизируются Alertmanager
Это расширяет навыки работы с журналами одного сервера до проактивной наблюдаемости всего парка.
Часто задаваемые вопросы
Урок «Централизованный мониторинг и оповещения» бесплатный?
Да — полный текст урока «Централизованный мониторинг и оповещения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Server Deployment & SSH Mastery, подпишись на CoddyKit PRO. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.
Чему я научусь в уроке «Централизованный мониторинг и оповещения»?
Масштабируйте мониторинг за пределы одного сервера: отправляйте показатели и журналы в центральную систему, создавайте панели и настраивайте оповещения, чтобы узнавать о проблемах раньше пользователе… Ты практикуешь Linux Server Deployment & SSH Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Linux Server Deployment & SSH Mastery?
Предыдущий опыт не требуется. Linux Server Deployment & SSH Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Централизованный мониторинг и оповещения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Linux Server Deployment & SSH Mastery?
Да. Каждый урок Linux Server Deployment & SSH Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Инструменты мониторинга системы
- Понимание системных журналов
- Ротация и архивирование журналов
- Централизованный мониторинг и оповещения