Учебники

Logstash — выходной этап

Выход — последний этап конвейера Logstash, который отправляет данные фильтра из входных журналов в указанное место назначения. Logstash предлагает несколько выходных плагинов для хранения отфильтрованных событий журнала в различных системах хранения и поиска.

Хранение журналов

Logstash может хранить отфильтрованные журналы в файле, Elasticsearch Engine, stdout, AWS CloudWatch и т. Д. Сетевые протоколы, такие как TCP, UDP, Websocket, также могут использоваться в Logstash для передачи событий журнала в удаленные системы хранения.

В стеке ELK пользователи используют механизм Elasticsearch для хранения событий журнала. Здесь, в следующем примере, мы создадим события журнала для локального механизма Elasticsearch.

Установка выходного модуля Elasticsearch

Мы можем установить плагин вывода Elasticsearch с помощью следующей команды.

>logstash-plugin install Logstash-output-elasticsearch

logstash.conf

Этот файл конфигурации содержит плагин Elasticsearch, который хранит событие вывода в Elasticsearch, установленном локально.

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
      }
   }
   mutate {
      add_field => {"user" => "tutorialspoint.com"}
   }
}
output {
   elasticsearch {
      hosts => ["127.0.0.1:9200"]
   }
}

Input.log

Следующий блок кода показывает входные данные журнала.

INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END - end

Запустите Elasticsearch на Localhost

Чтобы запустить Elasticsearch на локальном хосте, вы должны использовать следующую команду.

C:\elasticsearch\bin> elasticsearch

Когда Elasticsearch готов, вы можете проверить его, введя следующий URL в вашем браузере.

HTTP: // локальный: 9200 /

отклик

Следующий блок кода показывает ответ Elasticsearch на localhost.

{
   "name" : "Doctor Dorcas",
   "cluster_name" : "elasticsearch",
   "version" : {
      "number" : "2.1.1",
      "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
      "build_timestamp" : "2015-12-15T13:05:55Z",
      "build_snapshot" : false,
      "lucene_version" : "5.3.1"
   },
   "tagline" : "You Know, for Search"
}

Примечание. Для получения дополнительной информации о Elasticsearch вы можете перейти по следующей ссылке.

https://www.tutorialspoint.com/elasticsearch/index.html

Теперь запустите Logstash с вышеупомянутым Logstash.conf

>Logstash –f Logstash.conf

После вставки вышеупомянутого текста в выходной журнал этот текст будет сохранен в Elasticsearch Logstash. Вы можете проверить сохраненные данные, введя следующий URL в браузере.

HTTP: // локальный: 9200 / logstash-2017.01.01 / _search довольно

отклик

Это данные в формате JSON, хранящиеся в индексе Logstash-2017.01.01.