Выход — последний этап конвейера 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.