Учебники

Logstash — Поддерживаемые выходы

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

Нулевой выход

Это специальный плагин вывода, который используется для анализа производительности плагинов ввода и фильтрации.