Что такое Logstash?

Logstash — это open-source инструмент для сбора, обработки и трансформации данных в реальном времени. Он является частью Elastic Stack и служит центральным компонентом для создания data pipeline между различными источниками данных и системами хранения.

Основные возможности Logstash

  • Сбор данных — подключение к множеству источников (файлы, базы данных, API)
  • Парсинг и фильтрация — разбор неструктурированных данных
  • Трансформация — изменение формата и структуры данных
  • Обогащение данных — добавление дополнительной информации
  • Маршрутизация — отправка данных в различные системы
  • Масштабируемость — горизонтальное масштабирование pipeline

Установка Logstash

Установка через Docker:

1docker run -d --name logstash \
2  -p 5044:5044 -p 9600:9600 \
3  -v logstash_data:/usr/share/logstash/data \
4  logstash:8.11.0

Установка на Ubuntu/Debian:

1wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
2echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
3sudo apt-get update && sudo apt-get install logstash

Конфигурация 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

Установка дополнительных плагинов:

1bin/logstash-plugin install logstash-output-mongodb
2bin/logstash-plugin list
3bin/logstash-plugin update

Преимущества использования

  • Гибкость — поддержка множества форматов данных
  • Производительность — эффективная обработка больших объемов
  • Надежность — механизмы повторных попыток и обработки ошибок
  • Мониторинг — встроенные метрики и API для мониторинга
  • Сообщество — большое количество готовых плагинов

Мониторинг Logstash

Проверка состояния через API:

1curl -X GET "localhost:9600/_node/stats/pipeline"
2curl -X GET "localhost:9600/_node/hot_threads"

FAQ

Чем Logstash отличается от Beats?

Beats — легковесные агенты для сбора данных, а Logstash — мощный инструмент трансформации. Часто используются вместе: Beats собирают данные, Logstash их обрабатывает.

Можно ли использовать Logstash без Elasticsearch?

Да, Logstash может отправлять данные в различные системы: Kafka, MongoDB, файлы, базы данных и другие output плагины.

Как масштабировать Logstash?

Можно запускать несколько экземпляров Logstash, использовать очереди (Redis, Kafka) для буферизации и балансировать нагрузку между инстансами.