Logstash. Как обработать логи и не только
Коваль Антон
Что такое logstash
Инструмент для потоковой обработки событий в реальном времени.Написан на JRuby.
Почему logstash?
● большое количество плагинов● простота● не cloud● бесплатный
Альтернативы
★ loggly★ graylog★ splunk★ logscale
Простейшее приложение
★ установленный logstash★ конфиг файл
Чуть посложнее приложение
★ установленный logstash★ конфиг файл★ свой плагин
Пишем свой плагин
Легко писать расширения, но …..
Пишем свой плагин
Легко писать расширения, но …..
JRUBY
Пишем свой плагин
Пишем свой плагин
Input: register, run, teardown
Filter: register, filter
Output: register, receive, teardown
Сложное приложение
★ установленный logstash★ конфиг файл★ свой плагин★ java бибилиотеки
Java dependencies
Включение jar зависимостей:
● environment.rb (ручная загрузка jar файлов)
Java dependencies
Включение jar зависимостей:
★ environment.rb (ручная загрузка jar файлов)★ classpath (пришлось править logstash.sh)
Используем Java классы
java_import net.thumbtack.MyClass
Отказоустойчивость
20 20
Отказоустойчивость
40 событий может быть потеряно
20 20
Масштабируемость
Input: каждый источник работает в отдельном потоке.
Filter: модель worker-ов.
Output: модель worker-ов.
Best practice (error handling)
Все ошибки складывать в одно поле.
Best practice (logging)
★ в модулях у каждого свой логгинг
★ нельзя поменять формат
★ в сложных конфигах сложно следить за
процессом
Best practice (logging)
Свой custom logging
Мониторинг
Output:
★ ganglia★ graphite★ zabbix★ nagios
Healthcheck
★ активные★ пассивные
Healthcheck
★ активные (input и output не связаны)★ пассивные (метрики)
Тестирование (ручное)
Тестирование (автоматическое)
★ Руби-тест:
bin/logstash rspec
spec/core/timestamp_spec.rb
★ blackbox тестирование
Визуализация логов
★ elasticsearch ★ kibana
Визуализация логов
Визуализация логов
Что еще мы делали?
● ротация логов● сжатие логов● чтение писем (IMAP)● сделали свой плагин для JMS
Вопрос 1
Есть конфигурация с 2-мя output плагинами.Что будет, если один из них начнет медленно посылать события?
Вопрос 2
Есть файл с логами. Как можно сделать сжатие файла при помощи Logstash?