Мы уже подготовили фундамент: установили Prometheus и Grafana. Сейчас наш «склад данных» пуст. Чтобы система приносила пользу, нужно научить её собирать показатели с серверов и превращать цифры в наглядные графики.
Экспортеры: как Prometheus получает данные
Prometheus работает по Pull-модели: он сам опрашивает сервисы и забирает данные. Однако операционные системы или базы данных не умеют отдавать метрики по HTTP в нужном формате. Для этого используют экспортеры — небольшие агенты, которые переводят внутренние показатели системы на язык Prometheus.
Основной инструмент DevOps-инженера — Node Exporter. Он собирает данные о состоянии Linux: загрузку процессора, использование памяти, свободное место на дисках и активность сети.
Как показано в Схеме 1, данные проходят путь от системных файлов ядра до интерфейса Grafana.
Настройка сбора данных
Node Exporter обычно работает на порту 9100 и отдает текстовый список. Каждая строка в нем — это метрика (числовой показатель в конкретный момент времени). Чтобы Prometheus начал их сохранять, нужно отредактировать файл prometheus.yml.
Важный параметр — scrape interval (интервал опроса). Он определяет, как часто Prometheus забирает данные. Стандарт для нагруженных систем — 15 секунд. Этого достаточно для точности без лишней нагрузки на сеть.
Пример настройки в prometheus.yml для двух серверов:
scrape_configs:
- job_name: 'node_nodes'
scrape_interval: 15s
static_configs:
- targets: ['192.168.1.10:9100', '192.168.1.11:9100']Язык запросов PromQL
Чтобы извлечь данные и построить график, используют язык PromQL. Он позволяет проводить вычисления «на лету». Например, чтобы узнать процент занятой оперативной памяти, нужно сопоставить общий объем и доступный остаток.
Запрос в Prometheus для вычисления процента занятой памяти:
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100Визуализация в Grafana
Grafana подключается к Prometheus как к источнику данных (Data Source). Главный элемент здесь — панель (panel). Каждая панель визуализирует результат PromQL-запроса.
Типы визуализации:
- Graph (Time series) — классический график в Grafana, показывает изменения во времени (например, нагрузку на CPU).
- Gauge — шкала для отображения текущего состояния (например, температура процессора).
- Stat — крупное число для ключевых показателей (например, время работы сервера).
Не создавайте «стену из графиков» с десятками мелких панелей на одном экране. В случае аварии вы не сможете быстро найти причину сбоя.
Алертинг: автоматические уведомления
Мониторинг бесполезен, если вы не узнаете о проблеме вовремя. Для этого нужен alerting (система оповещений). Вы задаете правило: «если свободное место на диске меньше 10% дольше 5 минут — отправить уведомление».
Обычно настраивают интеграцию с Telegram или корпоративным мессенджером. Это позволяет реагировать на инциденты, не глядя в монитор постоянно.
- В интерфейсе Grafana создайте новую панель.
- Введите запрос
node_load1, чтобы увидеть среднюю нагрузку на систему за 1 минуту. - Выберите тип Graph и назовите панель "System Load".
- Нагрузите процессор в терминале Linux командой
yes > /dev/null &и посмотрите, как изменится график через несколько секунд. Не забудьте потом остановить процесс (Ctrl+C).
Мы научились отслеживать состояние серверов в реальном времени. Метрики показывают, когда и где произошел сбой. Чтобы понять, почему он случился, нужны логи.
В следующем уроке разберем централизованное логирование и научимся собирать сообщения от приложений и системы в одном месте.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram