Logstash предоставляет несколько плагинов для поддержки различных хранилищ данных или поисковых систем. Выходные события журналов могут быть отправлены в выходной файл, стандартный вывод или в поисковую систему, такую как Elasticsearch. В Logstash есть три типа поддерживаемых выходов:
- Стандартный вывод
- Выходной файл
- Нулевой выход
Давайте теперь обсудим каждый из них в деталях.
Стандартный вывод (стандартный вывод)
Он используется для генерации отфильтрованных событий журнала как потока данных для интерфейса командной строки. Вот пример генерации общей продолжительности транзакции базы данных для stdout.
logstash.conf
Этот файл конфигурации содержит плагин вывода stdout для записи общего sql_duration в стандартный вывод.
input { file { path => "C:/tpwork/logstash/bin/log/input.log" } } filter { grok { match => [ "message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} - %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?" ] } if [logger] == "TRANSACTION_START" { aggregate { task_id => "%{taskid}" code => "map['sql_duration'] = 0" map_action => "create" } } if [logger] == "SQL" { aggregate { task_id => "%{taskid}" code => "map['sql_duration'] ||= 0 ; map['sql_duration'] += event.get('duration')" } } if [logger] == "TRANSACTION_END" { aggregate { task_id => "%{taskid}" code => "event.set('sql_duration', map['sql_duration'])" end_of_task => true timeout => 120 } } } output { if [logger] == "TRANSACTION_END" { stdout { codec => line{format => "%{sql_duration}"} } } }
Примечание. Установите агрегатный фильтр, если он еще не установлен.
>logstash-plugin install Logstash-filter-aggregate
Запустите Logstash
Мы можем запустить Logstash с помощью следующей команды.
>logstash –f logsatsh.conf
Input.log
Следующий блок кода показывает входные данные журнала.
INFO - 48566 - TRANSACTION_START - start INFO - 48566 - SQL - transaction1 - 320 INFO - 48566 - SQL - transaction1 - 200 INFO - 48566 - TRANSACTION_END – end
стандартный вывод (это будет командная строка в windows или терминал в UNIX)
Это общая sql_duration 320 + 200 = 520.
520
Выходной файл
Logstash также может сохранять события журнала фильтра в выходной файл. Мы будем использовать вышеупомянутый пример и сохраним вывод в файле вместо STDOUT.
logstash.conf
Этот файл конфигурации Logstash указывает Logstash на сохранение общей sql_duration в выходной файл журнала.
input { file { path => "C:/tpwork/logstash/bin/log/input1.log" } } filter { grok { match => [ "message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} - %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?" ] } if [logger] == "TRANSACTION_START" { aggregate { task_id => "%{taskid}" code => "map['sql_duration'] = 0" map_action => "create" } } if [logger] == "SQL" { aggregate { task_id => "%{taskid}" code => "map['sql_duration'] ||= 0 ; map['sql_duration'] += event.get('duration')" } } if [logger] == "TRANSACTION_END" { aggregate { task_id => "%{taskid}" code => "event.set('sql_duration', map['sql_duration'])" end_of_task => true timeout => 120 } } } output { if [logger] == "TRANSACTION_END" { file { path => "C:/tpwork/logstash/bin/log/output.log" codec => line{format => "%{sql_duration}"} } } }
Запустите logstash
Мы можем запустить Logstash с помощью следующей команды.
>logstash –f logsatsh.conf
input.log
Следующий блок кода показывает входные данные журнала.
INFO - 48566 - TRANSACTION_START - start INFO - 48566 - SQL - transaction1 - 320 INFO - 48566 - SQL - transaction1 - 200 INFO - 48566 - TRANSACTION_END – end
output.log
В следующем блоке кода показаны данные журнала вывода.
520
Нулевой выход
Это специальный плагин вывода, который используется для анализа производительности плагинов ввода и фильтрации.