Создание системы мониторинга Logstash с использованием Prometheus и Grafana (пошаговое руководство)
Это перевод оригинальной статьи Building a Logstash Monitoring Stack with Prometheus and Grafana (Step-by-Step Guide).
Перевод сделан специально для телеграм-канала Мониторим ИТ. Подписывайтесь! Там еще больше полезных постов о мониторинге.
Когда вы работаете со сложными пайплайнами, управляемыми Logstash, наблюдаемость — это не опция, а необходимость. Без мониторинга небольшое изменение конфигурации или перегруженный input могут привести к тому, что ваши логи и метрики начнут тихо накапливаться, что нанесёт ущерб нижестоящим системам. Эта статья поможет создать стек мониторинга Logstash с использованием Prometheus, Grafana и prometheus-logstash-exporter, чтобы вы всегда знали, как работают ваши конвейеры Logstash.
Постановка проблемы
Logstash — мощный инструмент для сбора, преобразования и передачи данных. Однако по мере роста объемов данных могут возникать такие проблемы, как:
- Внезапные падения пропускной способности
- Увеличение задержки пайплайна
- Утечки памяти в JVM или чрезмерное накопление мусора (GC)
- Высокая загрузка CPU приводит к потере сообщений.
Эти проблемы часто остаются незамеченными до тех пор, пока ваш пайплайн данных не перестанет работать должным образом. Цель этого стека мониторинга — обеспечить видимость показателей производительности Logstash в режиме реального времени, чтобы вы могли быстро обнаруживать, диагностировать и устранять проблемы.
Почему необходим мониторинг?
Мониторинг имеет решающее значение для поддержания работоспособности инфраструктуры данных. Вот почему:
- Оптимизация производительности: выявление медленных пайплайнов или фильтров, влияющих на пропускную способность.
- Планирование ресурсов: анализ тенденций использования памяти и процессора для эффективного распределения ресурсов.
- Устранение неполадок: выявление узких мест до того, как они повлияют на критически важную для бизнеса аналитику.
- Надежность: обеспечение бесперебойной работы и предотвращение потери данных в периоды высокой нагрузки.
Инструменты, используемые в этом стеке
Данная конфигурация использует несколько инструментов с открытым исходным кодом, которые бесперебойно взаимодействуют друг с другом:
Logstash
- Что это: конвейер обработки данных, который получает данные из множества источников, преобразует их и отправляет в такие целевые системы, как Elasticsearch или Kafka.
- Зачем это нужно: это ключевой компонент стека ELK, но его внутренние метрики (такие как скорость обработки событий, размер очереди, показатели JVM) должны быть открыты для внешнего мониторинга.
Prometheus
- Что это: база данных временных рядов, предназначенная для мониторинга и оповещения.
- Почему используется: Prometheus собирает метрики от экспортеров и эффективно их хранит. Он позволяет выполнять гибкие запросы с использованием PromQL и поддерживает оповещения.
Prometheus-logstash-exporter
- Что это: небольшой сервис, который получает метрики из API мониторинга Logstash и предоставляет их в формате Prometheus.
- Почему используется: Prometheus не может напрямую опрашивать Logstash, поэтому этот экспортер устраняет эту проблему.
Grafana
- Что это: платформа для визуализации данных, предназначенная для создания дашбордов и аналитических отчетов.
- Почему используется: Grafana подключается к Prometheus и предоставляет многофункциональные дашборды для визуализации метрик, тенденций и аномалий Logstash.
Docker и Docker Compose
- Что это: инструменты для контейнеризации и оркестрации приложений.
- Почему их используют: они упрощают развёртывание — одной командой запускаются все компоненты (Prometheus, экспортер, Grafana) в изолированных контейнерах.
Настройка проекта
git clone https://github.com/yash22091/logstash-monitoring-stack.git cd logstash-monitoring-stack/ls-monitor
unzip logstash-monitor.zip && cd logstash-monitor/ls-monitor
Конфигурация окружения
Скопируйте пример файла окружения:
cp .env.example .env
LS_HOST=172.17.0.1 # IP of host running Logstash (avoid 127.0.0.1) LS_PORT=9600 EXPORTER_PORT=9304 PROM_PORT=9090 GRAFANA_PORT=3001 GF_ADMIN_USER=admin GF_ADMIN_PASSWORD=admin
Обзор Docker Compose
Файл docker-compose.yml определяет три контейнера:
- prometheus-logstash-exporter — подключается к Logstash и предоставляет доступ к метрикам.
- Prometheus — собирает данные каждые 15 секунд.
- Grafana — предоставляет дашборды для визуализации данных.
docker compose --env-file .env up -d
Получите доступ к пользовательским интерфейсам:
- Prometheus → http://localhost:9090
- Grafana → http://localhost:3001
Логин:admin / admin
Затем система попросит изменить пароль по умолчанию
Импорт дашборда Grafana
- Перейдите в Grafana → Dashboards → Import
- Введите ID дашборда: 17918
- Нажмите Load → выберите Prometheus как источник данных → Import
если это не происходит автоматически
- Частота событий (input, filtered, output)
- Использование JVM Heap
- Статистика сбора мусора (GC)
- Использование CPU и задержка пайплайнов
Как это работает
Logstash (9600) → prometheus-logstash-exporter (9304) → Prometheus (9090) → Grafana (3001)
- Экспортер использует API мониторинга Logstash для сбора данных.
- Prometheus получает метрики от экспортера.
- Grafana визуализирует эти метрики в режиме реального времени.
Устранение неполадок
Экспортер не работает? Проверьте, что LS_HOST — не 127.0.0.1.
curl http://localhost:9304/metrics | head
Конфликты портов? Отредактируйте .env и перезапустите стек.
Варианты использования и сценарии
Этот набор идеально подходит для:
- Мониторинга производительности и пропускной способности пайплайнов Logstash в боевой среде.
- Dev-сред — быстрый тест изменений конфигурации и визуализация эффекта.
- Реагирование на инциденты — устранить неполадки медленной загрузки данных или заблокированных пайплайнов.
- Планирование ресурсов — отслеживайте тренды, прежде чем масштабировать окружение.
Он легковесный, полностью контейнеризированный и может быть расширен другими экспортерами (например, Elasticsearch, Node Exporter или Alertmanager).
Заключение
Этот набор инструментов мониторинга превращает мониторинг Logstash из догадок в получение ценной информации. Сочетание Prometheus, Grafana и Docker дает вам следующие преимущества:
- Полную видимость состояния пайплайнов.
- Раннее выявление проблем с производительностью
- Простая настройка и воспроизводимость.
Независимо от того, используете ли вы кластеры ELK или автономные экземпляры Logstash, эта настройка гарантирует, что ваши конвейеры обработки данных будут работать быстро, стабильно и надежно.
Подписывайтесь на телеграм-канал Мониторим ИТ, там еще больше полезной информации о мониторинге!