Что такое Logstash?
Logstash — это open-source инструмент для сбора, обработки и трансформации данных в реальном времени. Он является частью Elastic Stack и служит центральным компонентом для создания data pipeline между различными источниками данных и системами хранения.
Основные возможности Logstash
- Сбор данных — подключение к множеству источников (файлы, базы данных, API)
- Парсинг и фильтрация — разбор неструктурированных данных
- Трансформация — изменение формата и структуры данных
- Обогащение данных — добавление дополнительной информации
- Маршрутизация — отправка данных в различные системы
- Масштабируемость — горизонтальное масштабирование pipeline
Установка Logstash
Установка через Docker:
Установка на Ubuntu/Debian:
Конфигурация pipeline
Пример базовой конфигурации Logstash:
1input {
2 file {
3 path => "/var/log/nginx/access.log"
4 start_position => "beginning"
5 }
6 beats {
7 port => 5044
8 }
9}
10
11filter {
12 if [fileset][module] == "nginx" {
13 grok {
14 match => { "message" => "%{NGINXACCESS}" }
15 }
16 }
17
18 date {
19 match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
20 }
21
22 mutate {
23 convert => { "response" => "integer" }
24 convert => { "bytes" => "integer" }
25 }
26}
27
28output {
29 elasticsearch {
30 hosts => ["http://elasticsearch:9200"]
31 index => "nginx-logs-%{+YYYY.MM.dd}"
32 }
33
34 stdout {
35 codec => rubydebug
36 }
37}
Применение Logstash
- Централизация логов — сбор логов с различных серверов
- ETL процессы — извлечение, трансформация и загрузка данных
- Мониторинг систем — обработка метрик и событий
- Интеграция данных — объединение данных из разных источников
- Реальное время — потоковая обработка данных
Плагины и расширения
Logstash поддерживает множество плагинов:
- Input плагины — file, beats, jdbc, kafka, http
- Filter плагины — grok, mutate, date, geoip, json
- Output плагины — elasticsearch, kafka, email, slack
- Codec плагины — json, multiline, csv, avro
Установка дополнительных плагинов:
Преимущества использования
- Гибкость — поддержка множества форматов данных
- Производительность — эффективная обработка больших объемов
- Надежность — механизмы повторных попыток и обработки ошибок
- Мониторинг — встроенные метрики и API для мониторинга
- Сообщество — большое количество готовых плагинов
Мониторинг Logstash
Проверка состояния через API:
FAQ
Чем Logstash отличается от Beats?
Beats — легковесные агенты для сбора данных, а Logstash — мощный инструмент трансформации. Часто используются вместе: Beats собирают данные, Logstash их обрабатывает.
Можно ли использовать Logstash без Elasticsearch?
Да, Logstash может отправлять данные в различные системы: Kafka, MongoDB, файлы, базы данных и другие output плагины.
Как масштабировать Logstash?
Можно запускать несколько экземпляров Logstash, использовать очереди (Redis, Kafka) для буферизации и балансировать нагрузку между инстансами.