Logstash — Введение
Logstash — это инструмент, основанный на шаблонах фильтров / каналов для сбора, обработки и генерации журналов или событий. Это помогает в централизации и в режиме реального времени анализ журналов и событий из разных источников.
Logstash написан на языке программирования JRuby, который работает на JVM, поэтому вы можете запускать Logstash на разных платформах. Он собирает различные типы данных, такие как журналы, пакеты, события, транзакции, данные временной метки и т. Д., Практически из любого типа источника. Источником данных могут быть социальные данные, электронная коммерция, новостные статьи, CRM, игровые данные, веб-тренды, финансовые данные, Интернет вещей, мобильные устройства и т. Д.
Основные характеристики Logstash
Основные характеристики Logstash следующие:
-
Logstash может собирать данные из разных источников и отправлять нескольким адресатам.
-
Logstash может обрабатывать все типы данных журналов, таких как журналы Apache, журналы событий Windows, данные по сетевым протоколам, данные из стандартного ввода и многие другие.
-
Logstash также может обрабатывать запросы http и данные ответов.
-
Logstash предоставляет множество фильтров, которые помогают пользователю находить больше смысла в данных путем их анализа и преобразования.
-
Logstash также может быть использован для обработки данных датчиков в Интернете вещей.
-
Logstash с открытым исходным кодом и доступен под лицензией Apache версии 2.0.
Logstash может собирать данные из разных источников и отправлять нескольким адресатам.
Logstash может обрабатывать все типы данных журналов, таких как журналы Apache, журналы событий Windows, данные по сетевым протоколам, данные из стандартного ввода и многие другие.
Logstash также может обрабатывать запросы http и данные ответов.
Logstash предоставляет множество фильтров, которые помогают пользователю находить больше смысла в данных путем их анализа и преобразования.
Logstash также может быть использован для обработки данных датчиков в Интернете вещей.
Logstash с открытым исходным кодом и доступен под лицензией Apache версии 2.0.
Основные понятия Logstash
Ключевые понятия Logstash следующие:
Объект события
Это основной объект в Logstash, который инкапсулирует поток данных в конвейере Logstash. Logstash использует этот объект для хранения входных данных и добавления дополнительных полей, созданных на этапе фильтрации.
Logstash предлагает разработчикам Event API для управления событиями. В этом руководстве это событие именуется различными именами, такими как «Событие регистрации данных», «Событие журнала», «Данные журнала», «Входные данные журнала», «Выходные данные журнала» и т. Д.
Трубопровод
Он состоит из этапов потока данных в Logstash от входа до выхода. Входные данные вводятся в конвейер и обрабатываются в форме события. Затем отправляет в выходной пункт назначения в желаемом формате пользователя или конечной системы.
вход
Это первый этап в конвейере Logstash, который используется для получения данных в Logstash для дальнейшей обработки. Logstash предлагает различные плагины для получения данных с разных платформ. Некоторые из наиболее часто используемых плагинов — File, Syslog, Redis и Beats.
Фильтр
Это средняя стадия Logstash, где происходит фактическая обработка событий. Разработчик может использовать предопределенные шаблоны регулярных выражений Logstash для создания последовательностей, позволяющих различать поля в событиях и критерии для принятых входных событий.
Logstash предлагает различные плагины, которые помогают разработчику анализировать и преобразовывать события в желаемую структуру. Некоторые из наиболее часто используемых плагинов фильтров — Grok, Mutate, Drop, Clone и Geoip.
Выход
Это последний этап в конвейере Logstash, где выходные события могут быть отформатированы в структуру, требуемую системами назначения. Наконец, он отправляет выходное событие после завершения обработки в место назначения с помощью плагинов. Некоторые из наиболее часто используемых плагинов — Elasticsearch, File, Graphite, Statsd и т. Д.
Преимущества Logstash
Следующие пункты объясняют различные преимущества Logstash.
-
Logstash предлагает последовательности шаблонов регулярных выражений для идентификации и анализа различных полей в любом входном событии.
-
Logstash поддерживает различные веб-серверы и источники данных для извлечения данных регистрации.
-
Logstash предоставляет несколько плагинов для анализа и преобразования данных журналов в любой пользовательский формат.
-
Logstash централизован, что облегчает обработку и сбор данных с разных серверов.
-
Logstash поддерживает множество баз данных, сетевых протоколов и других сервисов в качестве источника назначения для регистрации событий.
-
Logstash использует протокол HTTP, который позволяет пользователю обновлять версии Elasticsearch без необходимости обновлять Logstash на этапе блокировки.
Logstash предлагает последовательности шаблонов регулярных выражений для идентификации и анализа различных полей в любом входном событии.
Logstash поддерживает различные веб-серверы и источники данных для извлечения данных регистрации.
Logstash предоставляет несколько плагинов для анализа и преобразования данных журналов в любой пользовательский формат.
Logstash централизован, что облегчает обработку и сбор данных с разных серверов.
Logstash поддерживает множество баз данных, сетевых протоколов и других сервисов в качестве источника назначения для регистрации событий.
Logstash использует протокол HTTP, который позволяет пользователю обновлять версии Elasticsearch без необходимости обновлять Logstash на этапе блокировки.
Недостатки Logstash
Следующие пункты объясняют различные недостатки Logstash.
-
Logstash использует http, что отрицательно влияет на обработку данных журналирования.
-
Работа с Logstash иногда может быть немного сложной, так как требует хорошего понимания и анализа входных данных регистрации.
-
Плагины фильтров не являются общими, поэтому пользователю может потребоваться найти правильную последовательность шаблонов, чтобы избежать ошибок при разборе.
Logstash использует http, что отрицательно влияет на обработку данных журналирования.
Работа с Logstash иногда может быть немного сложной, так как требует хорошего понимания и анализа входных данных регистрации.
Плагины фильтров не являются общими, поэтому пользователю может потребоваться найти правильную последовательность шаблонов, чтобы избежать ошибок при разборе.
В следующей главе мы поймем, что такое стек ELK и как он помогает Logstash.
Logstash — ELK Стек
ELK означает Elasticsearch, Logstash и Kibana . В стеке ELK Logstash извлекает данные регистрации или другие события из разных источников ввода. Он обрабатывает события, а затем сохраняет его в Elasticsearch. Kibana — это веб-интерфейс, который обращается к форме регистрации данных Elasticsearch и визуализирует ее.
Logstash и Elasticsearch
Logstash предоставляет входной и выходной плагин Elasticsearch для чтения и записи событий журнала в Elasticsearch. Elasticsearch как выходной пункт назначения также рекомендуется компанией Elasticsearch из-за его совместимости с Kibana. Logstash отправляет данные в Elasticsearch по протоколу http.
Elasticsearch предоставляет возможность массовой загрузки, которая помогает загружать данные из разных источников или экземпляров Logstash в централизованное ядро Elasticsearch. ELK имеет следующие преимущества перед другими решениями DevOps —
-
Стек ELK проще в управлении и может масштабироваться для обработки петабайт событий.
-
Архитектура стека ELK очень гибкая и обеспечивает интеграцию с Hadoop. Hadoop в основном используется в архивных целях. Logstash может быть напрямую подключен к Hadoop с помощью flume, а Elasticsearch предоставляет соединитель с именем es-hadoop для подключения к Hadoop.
-
Общая стоимость владения ELK намного меньше, чем его альтернативы.
Стек ELK проще в управлении и может масштабироваться для обработки петабайт событий.
Архитектура стека ELK очень гибкая и обеспечивает интеграцию с Hadoop. Hadoop в основном используется в архивных целях. Logstash может быть напрямую подключен к Hadoop с помощью flume, а Elasticsearch предоставляет соединитель с именем es-hadoop для подключения к Hadoop.
Общая стоимость владения ELK намного меньше, чем его альтернативы.
Логсташ и Кибана
Kibana не взаимодействует напрямую с Logstash, а через источник данных, которым является Elasticsearch в стеке ELK. Logstash собирает данные из каждого источника, а Elasticsearch анализирует их с очень высокой скоростью, а затем Kibana предоставляет действенные данные об этих данных.
Kibana — это веб-инструмент визуализации, который помогает разработчикам и другим лицам анализировать изменения в большом количестве событий, собранных Logstash в движке Elasticsearch. Эта визуализация позволяет легко прогнозировать или видеть изменения в тенденциях ошибок или других значимых событий источника ввода.
Logstash — Установка
Чтобы установить Logstash в системе, мы должны выполнить следующие шаги:
Шаг 1 — Проверьте версию вашей Java, установленной на вашем компьютере; это должна быть Java 8, потому что она не совместима с Java 9. Вы можете проверить это с помощью —
В операционной системе Windows (ОС) (с использованием командной строки) —
> java -version
В ОС UNIX (с использованием терминала) —
$ echo $JAVA_HOME
Шаг 2 — Загрузите Logstash с —
https://www.elastic.co/downloads/logstash .
-
Для ОС Windows загрузите файл ZIP.
-
Для ОС UNIX загрузите файл TAR.
-
Для ОС Debian загрузите файл DEB.
-
Для Red Hat и других дистрибутивов Linux загрузите файл RPN.
-
Утилиты APT и Yum также можно использовать для установки Logstash во многих дистрибутивах Linux.
Для ОС Windows загрузите файл ZIP.
Для ОС UNIX загрузите файл TAR.
Для ОС Debian загрузите файл DEB.
Для Red Hat и других дистрибутивов Linux загрузите файл RPN.
Утилиты APT и Yum также можно использовать для установки Logstash во многих дистрибутивах Linux.
Шаг 3 — Процесс установки Logstash очень прост. Давайте посмотрим, как вы можете установить Logstash на разных платформах.
Примечание. Не помещайте пробелы или двоеточие в папку установки.
-
ОС Windows — разархивируйте zip-пакет и Logstash будет установлен.
-
ОС UNIX — распакуйте файл tar в любое место, и Logstash будет установлен.
ОС Windows — разархивируйте zip-пакет и Logstash будет установлен.
ОС UNIX — распакуйте файл tar в любое место, и Logstash будет установлен.
$tar –xvf logstash-5.0.2.tar.gz
Использование утилиты APT для ОС Linux —
- Загрузите и установите открытый ключ подписи —
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
- Сохраните определение хранилища —
$ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
- Запустить обновление —
$ sudo apt-get update
- Теперь вы можете установить с помощью следующей команды —
$ sudo apt-get install logstash
Использование утилиты YUM для ОС Debian Linux —
- Загрузите и установите открытый ключ подписи —
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
-
Добавьте следующий текст в файл с суффиксом .repo в каталоге o /etc/yum.repos.d/. Например, logstash.repo
Добавьте следующий текст в файл с суффиксом .repo в каталоге o /etc/yum.repos.d/. Например, logstash.repo
[logstash-5.x] name = Elastic repository for 5.x packages baseurl = https://artifacts.elastic.co/packages/5.x/yum gpgcheck = 1 gpgkey = https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled = 1 autorefresh = 1 type = rpm-md
- Теперь вы можете установить Logstash с помощью следующей команды —
$ sudo yum install logstash
Шаг 4 — Перейдите в домашний каталог Logstash. Внутри папки bin запустите файлasticsearch.bat для окон или вы можете сделать то же самое с помощью командной строки и через терминал. В UNIX запустите файл Logstash.
Нам нужно указать входной источник, выходной источник и дополнительные фильтры. Для проверки установки вы можете запустить ее с базовой конфигурацией, используя стандартный входной поток (stdin) в качестве источника ввода и стандартный выходной поток (stdout) в качестве источника вывода. Вы также можете указать конфигурацию в командной строке, используя опцию –e .
В винде —
> cd logstash-5.0.1/bin > Logstash -e 'input { stdin { } } output { stdout {} }'
В Linux —
$ cd logstash-5.0.1/bin $ ./logstash -e 'input { stdin { } } output { stdout {} }'
Примечание. В случае окон может появиться сообщение о том, что JAVA_HOME не установлен. Для этого, пожалуйста, установите его в переменных окружения в «C: \ Program Files \ Java \ jre1.8.0_111» или в место, где вы установили Java.
Шаг 5 — Порты по умолчанию для веб-интерфейса Logstash от 9600 до 9700 определены в logstash-5.0.1 \ config \ logstash.yml как http.port, и он выберет первый доступный порт в указанном диапазоне.
Мы можем проверить, работает ли сервер Logstash, перейдя по адресу http: // localhost: 9600 или порт другой, а затем проверьте командную строку или терминал. Мы можем видеть назначенный порт как «Успешно запущенная конечная точка API Logstash {: порт ⇒ 9600}. Он вернет объект JSON, который содержит информацию об установленном Logstash следующим образом:
{ "host":"manu-PC", "version":"5.0.1", "http_address":"127.0.0.1:9600", "build_date":"2016-11-11T22:28:04+00:00", "build_sha":"2d8d6263dd09417793f2a0c6d5ee702063b5fada", "build_snapshot":false }
Logstash — Внутренняя архитектура
В этой главе мы обсудим внутреннюю архитектуру и различные компоненты Logstash.
Logstash Сервис Архитектура
Logstash обрабатывает журналы с разных серверов и источников данных и ведет себя как грузоотправитель. Грузоотправители используются для сбора журналов, и они устанавливаются в каждом источнике входных данных. Брокеры, такие как Redis, Kafka или RabbitMQ, являются буферами для хранения данных для индексаторов, может быть более одного брокера в случае сбоя в случаях.
Индексаторы, такие как Lucene , используются для индексации журналов для повышения производительности поиска, а затем выходные данные сохраняются в Elasticsearch или другом выходном месте назначения. Данные в выходном хранилище доступны для Kibana и другого программного обеспечения для визуализации.
Внутренняя архитектура Logstash
Конвейер Logstash состоит из трех компонентов: Вход, Фильтры и Выход . Часть ввода отвечает за указание и доступ к источнику входных данных, например, к папке журнала на сервере Apache Tomcat .
Пример объяснения конвейера Logstash
Файл конфигурации Logstash содержит подробную информацию о трех компонентах Logstash. В этом случае мы создаем имя файла с именем Logstash.conf .
Следующая конфигурация собирает данные из входного журнала «inlog.log» и записывает их в выходной журнал «outlog.log» без каких-либо фильтров.
Logstash.conf
Файл конфигурации Logstash просто копирует данные из файла inlog.log с помощью входного плагина и сбрасывает данные журнала в файл outlog.log с помощью выходного плагина.
input { file { path => "C:/tpwork/logstash/bin/log/inlog.log" } } output { file { path => "C:/tpwork/logstash/bin/log/outlog.log" } }
Запустите Logstash
Logstash использует параметр -f для указания файла конфигурации.
C:\logstash\bin> logstash –f logstash.conf
inlog.log
Следующий блок кода показывает входные данные журнала.
Hello tutorialspoint.com
outlog.log
Выход Logstash содержит входные данные в поле сообщения. Logstash также добавляет другие поля вывода, такие как метка времени, путь к источнику ввода, версия, хост и теги.
{ "path":"C:/tpwork/logstash/bin/log/inlog1.log", "@timestamp":"2016-12-13T02:28:38.763Z", "@version":"1", "host":"Dell-PC", "message":" Hello tutorialspoint.com", "tags":[] }
Как вы можете, вывод Logstash содержит больше, чем данные, предоставленные через входной журнал. Выходные данные содержат исходный путь, метку времени, версию, имя хоста и тег, которые используются для представления дополнительных сообщений, таких как ошибки.
Мы можем использовать фильтры для обработки данных и сделать их полезными для наших нужд. В следующем примере мы используем фильтр для получения данных, который ограничивает вывод только данными с глаголом типа GET или POST, за которым следует уникальный идентификатор ресурса .
Logstash.conf
В этой конфигурации Logstash мы добавляем фильтр с именем grok для фильтрации входных данных. Событие входного журнала, которое совпадает с входным журналом последовательности шаблонов, только с ошибкой попадает в место назначения вывода. Logstash добавляет тег «_grokparsefailure» в выходные события, который не соответствует последовательности шаблонов фильтра grok.
Logstash предлагает множество встроенных шаблонов регулярных выражений для анализа популярных журналов сервера, таких как Apache. Используемый здесь шаблон ожидает глагол типа get, post и т. Д., За которым следует унифицированный идентификатор ресурса.
input { file { path => "C:/tpwork/logstash/bin/log/inlog2.log" } } filter { grok { match => {"message" => "%{WORD:verb} %{URIPATHPARAM:uri}"} } } output { file { path => "C:/tpwork/logstash/bin/log/outlog2.log" } }
Запустите Logstash
Мы можем запустить Logstash с помощью следующей команды.
C:\logstash\bin> logstash –f Logstash.conf
inlog2.log
Наш входной файл содержит два события, разделенных разделителем по умолчанию, то есть разделитель новой строки. Первое событие соответствует шаблону, указанному в GROk, а второе — нет.
GET /tutorialspoint/Logstash Input 1234
outlog2.log
Мы можем видеть, что второе выходное событие содержит тег «_grokparsefailure», поскольку он не соответствует шаблону фильтра grok. Пользователь также может удалить эти несогласованные события в выводе, используя условие «if» в выходном плагине.
{ "path":"C:/tpwork/logstash/bin/log/inlog2.log", "@timestamp":"2016-12-13T02:47:10.352Z","@version":"1","host":"Dell-PC","verb":"GET", "message":"GET /tutorialspoint/logstash", "uri":"/tutorialspoint/logstash", "tags":[] } { "path":"C:/tpwork/logstash/bin/log/inlog2.log", "@timestamp":"2016-12-13T02:48:12.418Z", "@version":"1", "host":"Dell-PC", "message":"t 1234\r", "tags":["_grokparsefailure"] }
Logstash — Сбор журналов
Журналы с разных серверов или источников данных собираются с помощью грузоотправителей. Грузоотправитель — это экземпляр Logstash, установленный на сервере, который обращается к журналам сервера и отправляет их в определенное выходное местоположение.
Он в основном отправляет вывод в Elasticsearch для хранения. Logstash принимает данные из следующих источников —
- STDIN
- Syslog
- файлы
- TCP / UDP
- Microsoft Windows Eventlogs
- WebSocket
- ZeroMQ
- Индивидуальные расширения
Сбор журналов с использованием Apache Tomcat 7 Server
В этом примере мы собираем журналы сервера Apache Tomcat 7, установленного в Windows, с помощью плагина ввода файлов и отправляем их в другой журнал.
logstash.conf
Здесь Logstash настроен для доступа к журналу доступа Apache Tomcat 7, установленному локально. Шаблон регулярных выражений используется в настройке пути модуля плагина для получения данных из файла журнала. Это имя содержит «доступ» и добавляет тип apache, который помогает отличать события apache от других в централизованном источнике назначения. Наконец, выходные события будут показаны в output.log.
input { file { path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/*access*" type => "apache" } } output { file { path => "C:/tpwork/logstash/bin/log/output.log" } }
Запустите Logstash
Мы можем запустить Logstash с помощью следующей команды.
C:\logstash\bin> logstash –f Logstash.conf
Apache Tomcat Log
Получите доступ к серверу Apache Tomcat и его веб-приложениям ( http: // localhost: 8080 ) для создания журналов. Обновленные данные в журналах считываются Logstash в режиме реального времени и сохраняются в output.log, как указано в файле конфигурации.
Apache Tomcat генерирует новый файл журнала доступа в соответствии с датой и регистрирует там события доступа. В нашем случае это был localhost_access_log.2016-12-24.txt в каталоге журналов Apache Tomcat.
0:0:0:0:0:0:0:1 - - [ 25/Dec/2016:18:37:00 +0800] "GET / HTTP/1.1" 200 11418 0:0:0:0:0:0:0:1 - munish [ 25/Dec/2016:18:37:02 +0800] "GET /manager/html HTTP/1.1" 200 17472 0:0:0:0:0:0:0:1 - - [ 25/Dec/2016:18:37:08 +0800] "GET /docs/ HTTP/1.1" 200 19373 0:0:0:0:0:0:0:1 - - [ 25/Dec/2016:18:37:10 +0800] "GET /docs/introduction.html HTTP/1.1" 200 15399
output.log
Вы можете видеть в выходных событиях, поле типа добавлено, и событие присутствует в поле сообщения.
{ "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ localhost_access_log.2016-12-25.txt", "@timestamp":"2016-12-25T10:37:00.363Z","@version":"1","host":"Dell-PC", "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:00 +0800] \"GET / HTTP/1.1\" 200 11418\r","type":"apache","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z", "@version":"1","host":"Dell-PC", "message":"0:0:0:0:0:0:0:1 - munish [25/Dec/2016:18:37:02 +0800] \"GET / manager/html HTTP/1.1\" 200 17472\r","type":"apache","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z", "@version":"1","host":"Dell-PC", "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:08 +0800] \"GET /docs/ HTTP/1.1\" 200 19373\r","type":"apache","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:20.436Z", "@version":"1","host":"Dell-PC", "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:10 +0800] \"GET /docs/ introduction.html HTTP/1.1\" 200 15399\r","type":"apache","tags":[] }
Сбор журналов с помощью плагина STDIN
В этом разделе мы обсудим еще один пример сбора журналов с использованием плагина STDIN .
logstash.conf
Это очень простой пример, когда Logstash читает события, введенные пользователем в стандартный ввод. В нашем случае это командная строка, которая хранит события в файле output.log.
input { stdin{} } output { file { path => "C:/tpwork/logstash/bin/log/output.log" } }
Запустите Logstash
Мы можем запустить Logstash с помощью следующей команды.
C:\logstash\bin> logstash –f Logstash.conf
Введите следующий текст в командной строке —
Пользователь ввел следующие две строки. Logstash разделяет события с помощью параметра-разделителя, и его значение по умолчанию равно «\ n». Пользователь может изменить, изменив значение разделителя в файле плагина.
Tutorialspoint.com welcomes you Simply easy learning
output.log
В следующем блоке кода показаны данные журнала вывода.
{ "@timestamp":"2016-12-25T11:41:16.518Z","@version":"1","host":"Dell-PC", "message":"tutrialspoint.com welcomes you\r","tags":[] } { "@timestamp":"2016-12-25T11:41:53.396Z","@version":"1","host":"Dell-PC", "message":"simply easy learning\r","tags":[] }
Logstash — Поддерживаемые входы
Logstash поддерживает огромный спектр журналов из разных источников. Он работает с известными источниками, как описано ниже.
Собирать логи из метрик
Системные события и другие временные действия записываются в метриках. Logstash может получить доступ к журналу из системных показателей и обработать их с помощью фильтров. Это помогает показать пользователю прямую трансляцию событий в индивидуальном порядке. Метрики сбрасываются в соответствии с настройкой фильтра метрик flush_interval и по умолчанию; он установлен на 5 секунд.
Мы отслеживаем тестовые показатели, сгенерированные Logstash, собирая и анализируя события, проходящие через Logstash, и показывая прямой поток в командной строке.
logstash.conf
Эта конфигурация содержит плагин генератора, который предлагается Logstash для тестовых метрик и устанавливает для параметра типа «сгенерированный» для анализа. На этапе фильтрации мы обрабатываем только строки сгенерированного типа с помощью оператора if. Затем плагин метрики считает поле, указанное в настройках счетчика. Плагин metrics сбрасывает счет после каждых 5 секунд, указанных в flush_interval .
Наконец, выведите события фильтра в стандартный вывод, такой как командная строка, используя плагин кодека для форматирования. Плагин Codec использует значение [ events ] [ rate_1m ] для вывода событий в секунду в 1-минутном скользящем окне.
input { generator { type => "generated" } } filter { if [type] == "generated" { metrics { meter => "events" add_tag => "metric" } } } output { # only emit events with the 'metric' tag if "metric" in [tags] { stdout { codec => line { format => "rate: %{[events][rate_1m]}" } } }
Запустите Logstash
Мы можем запустить Logstash с помощью следующей команды.
>logsaths –f logstash.conf
стандартный вывод (командная строка)
rate: 1308.4 rate: 1308.4 rate: 1368.654529135342 rate: 1416.4796003951449 rate: 1464.974293984808 rate: 1523.3119444107458 rate: 1564.1602979542715 rate: 1610.6496496890895 rate: 1645.2184750334154 rate: 1688.7768007612485 rate: 1714.652283095914 rate: 1752.5150680019278 rate: 1785.9432934744932 rate: 1806.912181962126 rate: 1836.0070454626025 rate: 1849.5669494173826 rate: 1871.3814756851832 rate: 1883.3443123790712 rate: 1906.4879113216743 rate: 1925.9420717997118 rate: 1934.166137658981 rate: 1954.3176526556897 rate: 1957.0107444542625
Сбор журналов с веб-сервера
Веб-серверы генерируют большое количество журналов, касающихся доступа пользователей и ошибок. Logstash помогает извлекать журналы с разных серверов с помощью входных плагинов и хранить их в централизованном месте.
Мы извлекаем данные из журналов stderr локального сервера Apache Tomcat и сохраняем их в файле output.log.
logstash.conf
Этот файл конфигурации Logstash указывает Logstash на чтение журналов ошибок apache и добавление тега с именем «apache-error». Мы можем просто отправить его в output.log с помощью плагина вывода файла.
input { file { path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0 /logs/*stderr*" type => "apache-error" } } output { file { path => "C:/tpwork/logstash/bin/log/output.log" } }
Запустите Logstash
Мы можем запустить Logstash с помощью следующей команды.
>Logstash –f Logstash.conf
Образец входного журнала
Это пример журнала stderr , который генерируется, когда события сервера происходят в Apache Tomcat.
C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ logs \ tomcat7-stderr.2016-12-25.log
Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-9999"] Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Dec 25, 2016 7:05:14 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 823 ms
output.log
{ "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z", "@version":"1","host":"Dell-PC", "message":"Dec 25, 2016 7:05:14 PM org.apache.coyote.AbstractProtocol start\r", "type":"apache-error","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z", "@version":"1","host":"Dell-PC", "message":"INFO: Starting ProtocolHandler [ \"ajp-bio-8009\"]\r","type":"apache-error","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z", "@version":"1","host":"Dell-PC", "message":"Dec 25, 2016 7:05:14 PM org.apache.catalina.startup.Catalina start\r", "type":"apache-error","tags":[] } { "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/ tomcat7-stderr.2016-12-25.log","@timestamp":"2016-12-25T11:05:27.045Z", "@version":"1","host":"Dell-PC", "message":"INFO: Server startup in 823 ms\r","type":"apache-error","tags":[] }
Сбор журналов из источников данных
Для начала давайте разберемся, как настроить MySQL для ведения журнала. Добавьте следующие строки в файл my.ini сервера базы данных MySQL под [mysqld].
В окнах он присутствует внутри установочного каталога MySQL, который находится в —
C:\wamp\bin\mysql\mysql5.7.11
В UNIX вы можете найти его в — /etc/mysql/my.cnf
general_log_file = "C:/wamp/logs/queries.log" general_log = 1
logstash.conf
В этом конфигурационном файле плагин файла используется для чтения журнала MySQL и записи его в файл ouput.log.
input { file { path => "C:/wamp/logs/queries.log" } } output { file { path => "C:/tpwork/logstash/bin/log/output.log" } }
queries.log
Это журнал, сгенерированный запросами, выполненными в базе данных MySQL.
2016-12-25T13:05:36.854619Z 2 Query select * from test1_users 2016-12-25T13:05:51.822475Z 2 Query select count(*) from users 2016-12-25T13:05:59.998942Z 2 Query select count(*) from test1_users
output.log
{ "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:05:37.905Z", "@version":"1","host":"Dell-PC", "message":"2016-12-25T13:05:36.854619Z 2 Query\tselect * from test1_users", "tags":[] } { "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:05:51.938Z", "@version":"1","host":"Dell-PC", "message":"2016-12-25T13:05:51.822475Z 2 Query\tselect count(*) from users", "tags":[] } { "path":"C:/wamp/logs/queries.log","@timestamp":"2016-12-25T13:06:00.950Z", "@version":"1","host":"Dell-PC", "message":"2016-12-25T13:05:59.998942Z 2 Query\tselect count(*) from test1_users", "tags":[] }
Logstash — анализ логов
Logstash получает журналы, используя входные плагины, а затем использует плагины фильтров для анализа и преобразования данных. Анализ и преобразование журналов выполняются в соответствии с системами, присутствующими в выходном месте назначения. Logstash анализирует данные регистрации и пересылает только обязательные поля. Позднее эти поля преобразуются в совместимую и понятную форму системы назначения.
Как разобрать логи?
Разбор журналов выполняется с использованием шаблонов GROK (Графическое представление знаний), и вы можете найти их в Github —
https://github.com/elastic/logstash/tree/v1.4.2/patterns .
Logstash сопоставляет данные журналов с указанным шаблоном GROK или последовательностью шаблонов для анализа журналов, таких как «% {COMBINEDAPACHELOG}», которая обычно используется для журналов apache.
Анализируемые данные более структурированы и просты для поиска и выполнения запросов. Logstash ищет указанные шаблоны GROK во входных журналах и извлекает совпадающие строки из журналов. Вы можете использовать отладчик GROK для проверки ваших паттернов GROK.
Синтаксис для шаблона GROK:% {SYNTAX: SEMANTIC}. Фильтр Logstash GROK записывается в следующем виде —
% {ОБРАЗЕЦ: Имя_поль}
Здесь, PATTERN представляет шаблон GROK, а имя поля — это имя поля, которое представляет проанализированные данные в выходных данных.
Например, с помощью онлайн-отладчика GROK https://grokdebug.herokuapp.com/
вход
Пример строки ошибки в журнале —
[Wed Dec 07 21:54:54.048805 2016] [:error] [pid 1234:tid 3456829102] [client 192.168.1.1:25007] JSP Notice: Undefined index: abc in /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11
Последовательность паттернов GROK
Эта последовательность шаблонов GROK соответствует событию журнала, которое включает метку времени, за которой следуют Уровень журнала, Идентификатор процесса, Идентификатор транзакции и Сообщение об ошибке.
\[(%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\] \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\] %{GREEDYDATA:errormsg}
выход
Вывод в формате JSON.
{ "day": [ "Wed" ], "month": [ "Dec" ], "loglevel": [ "error" ], "pid": [ "1234" ], "tid": [ "3456829102" ], "clientip": [ "192.168.1.1" ], "errormsg": [ "JSP Notice: Undefined index: abc in /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11" ] }
Logstash — Фильтры
Logstash использует фильтры в середине конвейера между входом и выходом. Фильтры мер Logstash манипулируют и создают такие события, как Apache-Access . Многие плагины фильтров используются для управления событиями в Logstash. Здесь, в примере Logstash Aggregate Filter , мы фильтруем продолжительность каждой транзакции SQL в базе данных и вычисляем общее время.
Установка плагина Aggregate Filter
Установка плагина Aggregate Filter с помощью утилиты Logstash-plugin. Logstash-плагин представляет собой командный файл для окон в папке bin в Logstash.
>logstash-plugin install logstash-filter-aggregate
logstash.conf
В этой конфигурации вы можете увидеть три оператора if для инициализации, увеличения и генерации общей продолжительности транзакции, то есть sql_duration . Агрегатный плагин используется для добавления 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 { file { path => "C:/tpwork/logstash/bin/log/output.log" } }
Запустите Logstash
Мы можем запустить Logstash с помощью следующей команды.
>logstash –f logstash.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
Как указано в файле конфигурации, последний оператор if, в котором находится регистратор, — TRANSACTION_END, который печатает общее время транзакции или sql_duration. Это было выделено желтым цветом в файле output.log.
{ "path":"C:/tpwork/logstash/bin/log/input.log","@timestamp": "2016-12-22T19:04:37.214Z", "loglevel":"INFO","logger":"TRANSACTION_START","@version": "1","host":"wcnlab-PC", "message":"8566 - TRANSACTION_START - start\r","tags":[] } { "duration":320,"path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2016-12-22T19:04:38.366Z","loglevel":"INFO","logger":"SQL", "@version":"1","host":"wcnlab-PC","label":"transaction1", "message":" INFO - 48566 - SQL - transaction1 - 320\r","taskid":"48566","tags":[] } { "duration":200,"path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2016-12-22T19:04:38.373Z","loglevel":"INFO","logger":"SQL", "@version":"1","host":"wcnlab-PC","label":"transaction1", "message":" INFO - 48566 - SQL - transaction1 - 200\r","taskid":"48566","tags":[] } { "sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2016-12-22T19:04:38.380Z","loglevel":"INFO","logger":"TRANSACTION_END", "@version":"1","host":"wcnlab-PC","label":"end", "message":" INFO - 48566 - TRANSACTION_END - end\r","taskid":"48566","tags":[] }
Logstash — Преобразование журналов
Logstash предлагает различные плагины для преобразования анализируемого журнала. Эти плагины могут добавлять, удалять и обновлять поля в журналах для лучшего понимания и запросов в системах вывода.
Мы используем Mutate Plugin для добавления имени пользователя в каждую строку входного журнала.
Установите плагин Mutate Filter
Установить плагин мутированного фильтра; мы можем использовать следующую команду.
>Logstash-plugin install Logstash-filter-mutate
logstash.conf
В этом конфигурационном файле плагин Mutate добавляется после Aggregate Plugin для добавления нового поля.
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 { file { path => "C:/tpwork/logstash/bin/log/output.log" } }
Запустите Logstash
Мы можем запустить Logstash с помощью следующей команды.
>logstash –f logstash.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
Вы можете видеть, что есть новое поле с именем «user» в выходных событиях.
{ "path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2016-12-25T19:55:37.383Z", "@version":"1", "host":"wcnlab-PC", "message":"NFO - 48566 - TRANSACTION_START - start\r", "user":"tutorialspoint.com","tags":["_grokparsefailure"] } { "duration":320,"path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2016-12-25T19:55:37.383Z","loglevel":"INFO","logger":"SQL", "@version":"1","host":"wcnlab-PC","label":"transaction1", "message":" INFO - 48566 - SQL - transaction1 - 320\r", "user":"tutorialspoint.com","taskid":"48566","tags":[] } { "duration":200,"path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2016-12-25T19:55:37.399Z","loglevel":"INFO", "logger":"SQL","@version":"1","host":"wcnlab-PC","label":"transaction1", "message":" INFO - 48566 - SQL - transaction1 - 200\r", "user":"tutorialspoint.com","taskid":"48566","tags":[] } { "sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2016-12-25T19:55:37.399Z","loglevel":"INFO", "logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC","label":"end", "message":" INFO - 48566 - TRANSACTION_END - end\r", "user":"tutorialspoint.com","taskid":"48566","tags":[] }
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.
{ "took" : 20, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 10, "max_score" : 1.0, "hits" : [ { "_index" : "logstash-2017.01.01", "_type" : "logs", "_id" : "AVlZ9vF8hshdrGm02KOs", "_score" : 1.0, "_source":{ "duration":200,"path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2017-01-01T12:17:49.140Z","loglevel":"INFO", "logger":"SQL","@version":"1","host":"wcnlab-PC", "label":"transaction1", "message":" INFO - 48566 - SQL - transaction1 - 200\r", "user":"tutorialspoint.com","taskid":"48566","tags":[] } }, { "_index" : "logstash-2017.01.01", "_type" : "logs", "_id" : "AVlZ9vF8hshdrGm02KOt", "_score" : 1.0, "_source":{ "sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log", "@timestamp":"2017-01-01T12:17:49.145Z","loglevel":"INFO", "logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC", "label":"end", "message":" INFO - 48566 - TRANSACTION_END - end\r", "user":"tutorialspoint.com","taskid":"48566","tags":[] } } } }
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
Нулевой выход
Это специальный плагин вывода, который используется для анализа производительности плагинов ввода и фильтрации.
Logstash — Плагины
Logstash предлагает различные плагины для всех трех этапов своего конвейера (вход, фильтр и выход). Эти плагины помогают пользователю захватывать журналы из различных источников, таких как веб-серверы, базы данных, сетевые протоколы и т. Д.
После захвата Logstash может анализировать и преобразовывать данные в значимую информацию, как того требует пользователь. Наконец, Logstash может отправлять или хранить значимую информацию в различных источниках назначения, таких как Elasticsearch, AWS Cloudwatch и т. Д.
Входные плагины
Входные плагины в Logstash помогают пользователю извлекать и получать журналы из различных источников. Синтаксис для использования входного плагина следующий:
Input { Plugin name { Setting 1…… Setting 2…….. } }
Вы можете скачать плагин ввода с помощью следующей команды —
>Logstash-plugin install Logstash-input-<plugin name>
Утилита Logstash-plugin находится в папке bin установочного каталога Logstash. В следующей таблице приведен список плагинов ввода, предлагаемых Logstash.
Sr.No. | Название и описание плагина |
---|---|
1 |
биения Чтобы получить данные регистрации или события из эластичного каркаса ударов. |
2 |
cloudwatch Для извлечения событий из CloudWatch, API-предложения Amazon Web Services. |
3 |
couchdb_changes События из _chages URI couchdb отправлены с помощью этого плагина. |
4 |
drupal_dblog Извлечь данные регистрации сторожевого пуска drupal с включенным DBLog. |
5 |
Elasticsearch Получить результаты запросов, выполненных в кластере Elasticsearch. |
6 |
Журнал событий Чтобы получить события из журнала событий Windows. |
7 |
Exec Получить вывод команды оболочки в качестве входа в Logstash. |
8 |
файл Получить события из входного файла. Это полезно, когда Logstash локально установлен с источником ввода и имеет доступ к журналам источника ввода. |
9 |
генератор Он используется для целей тестирования, который создает случайные события. |
10 |
GitHub Захватывает события от GitHub webhook. |
11 |
графит Получить данные метрик из графитового инструмента мониторинга. |
12 |
стук сердца Он также используется для тестирования и производит события, похожие на сердцебиение |
13 |
HTTP Для сбора событий журнала по двум сетевым протоколам, а именно http и https. |
14 |
http_poller Он используется для декодирования вывода HTTP API в событие. |
15 |
JDBC Он преобразует транзакции JDBC в событие в Logstash. |
16 |
JMX Для извлечения метрик из удаленных Java-приложений с использованием JMX. |
17 |
log4j Захват событий от объекта socketAppender из Log4j через сокет TCP. |
18 |
Новости Для вывода инструментов командной строки в качестве события ввода в Logstash. |
19 |
ТСР Захватывает события через TCP-сокет. |
20 |
щебет Сбор событий из потокового API Twitter. |
21 |
Юникс Собирать события через сокет UNIX. |
22 |
WebSocket Захват событий через протокол веб-сокета. |
23 |
XMPP Читает события по протоколам Jabber / xmpp. |
биения
Чтобы получить данные регистрации или события из эластичного каркаса ударов.
cloudwatch
Для извлечения событий из CloudWatch, API-предложения Amazon Web Services.
couchdb_changes
События из _chages URI couchdb отправлены с помощью этого плагина.
drupal_dblog
Извлечь данные регистрации сторожевого пуска drupal с включенным DBLog.
Elasticsearch
Получить результаты запросов, выполненных в кластере Elasticsearch.
Журнал событий
Чтобы получить события из журнала событий Windows.
Exec
Получить вывод команды оболочки в качестве входа в Logstash.
файл
Получить события из входного файла. Это полезно, когда Logstash локально установлен с источником ввода и имеет доступ к журналам источника ввода.
генератор
Он используется для целей тестирования, который создает случайные события.
GitHub
Захватывает события от GitHub webhook.
графит
Получить данные метрик из графитового инструмента мониторинга.
стук сердца
Он также используется для тестирования и производит события, похожие на сердцебиение
HTTP
Для сбора событий журнала по двум сетевым протоколам, а именно http и https.
http_poller
Он используется для декодирования вывода HTTP API в событие.
JDBC
Он преобразует транзакции JDBC в событие в Logstash.
JMX
Для извлечения метрик из удаленных Java-приложений с использованием JMX.
log4j
Захват событий от объекта socketAppender из Log4j через сокет TCP.
Новости
Для вывода инструментов командной строки в качестве события ввода в Logstash.
ТСР
Захватывает события через TCP-сокет.
щебет
Сбор событий из потокового API Twitter.
Юникс
Собирать события через сокет UNIX.
WebSocket
Захват событий через протокол веб-сокета.
XMPP
Читает события по протоколам Jabber / xmpp.
Настройки плагина
Все плагины имеют свои специфические настройки, которые помогают указывать важные поля, такие как порт, путь и т. Д., В плагине. Мы обсудим настройки некоторых входных плагинов.
файл
Этот входной плагин используется для извлечения событий непосредственно из журналов или текстовых файлов, присутствующих во входном источнике. Она работает аналогично команде tail в UNIX и сохраняет последний курсор чтения и читает только новые добавленные данные из входного файла, но ее можно изменить с помощью параметра star_position. Ниже приведены настройки этого входного плагина.
Название настройки | Значение по умолчанию | Описание |
---|---|---|
add_field | {} | Добавьте новое поле к входному событию. |
close_older | 3600 | Файлы, имеющие время последнего чтения (в секундах) больше указанного в этом плагине, закрываются. |
кодер-декодер | «Простой» | Он используется для декодирования данных перед входом в конвейер Logstash. |
ограничитель | «\ П» | Используется для указания нового разделителя строк. |
discover_interval | 15 | Это интервал времени (в секундах) между обнаружением новых файлов по указанному пути. |
enable_metric | правда | Он используется для включения или отключения отчетности и сбора метрики для указанного плагина. |
исключать | Он используется для указания имени файла или шаблонов, которые должны быть исключены из входного плагина. | |
Я бы | Чтобы указать уникальный идентификатор для этого экземпляра плагина. | |
max_open_files | Он определяет максимальное количество входных файлов Logstash в любое время. | |
дорожка | Укажите путь к файлам, и он может содержать шаблоны для имени файла. | |
начальная_позиция | «конец» | Вы можете изменить на «начало», если хотите этого; Первоначально Logstash должен начать чтение файлов с самого начала, а не только с нового события журнала. |
start_interval | 1 | Указывает временной интервал в секундах, после которого Logstash проверяет наличие измененных файлов. |
теги | Чтобы добавить любую дополнительную информацию, например Logstash, он добавляет «_grokparsefailure» в теги, когда какое-либо событие журнала не соответствует указанному фильтру grok. | |
тип | Это специальное поле, которое вы можете добавить к входному событию, и оно полезно в фильтрах и кибанах. |
Elasticsearch
Этот конкретный плагин используется для чтения результатов поисковых запросов в кластере Elasticsearch. Следующее имеет настройки, используемые в этом плагине —
Название настройки | Значение по умолчанию | Описание |
---|---|---|
add_field | {} | Как и в плагине файла, он используется для добавления поля во входное событие. |
ca_file | Он используется для указания пути к файлу авторизации SSL-сертификата. | |
кодер-декодер | «Простой» | Он используется для декодирования входных событий из Elasticsearch перед входом в конвейер Logstash. |
DOCINFO | «ложный» | Вы можете изменить его на true, если вы хотите извлечь дополнительную информацию, такую как index, type и id, из механизма Elasticsearch. |
docinfo_fields | [«_index», «_type», «_id»] | Вы можете исключить любое поле, которое вам не нужно в вашем входе Logstash. |
enable_metric | правда | Он используется для включения или отключения отчетности и сбора метрики для этого экземпляра плагина. |
хостов | Он используется для указания адресов всех механизмов эластичного поиска, которые будут входным источником этого экземпляра Logstash. Синтаксис: хост: порт или IP: порт. | |
Я бы | Он используется для присвоения уникального идентификационного номера этому конкретному экземпляру входного плагина. | |
индекс | «Logstash- *» | Он используется для указания имени индекса или шаблона, который Logstash будет отслеживать Logstash для ввода. |
пароль | Для целей аутентификации. | |
запрос | «{\» sort \ «: [\» _ doc \ «]}» | Запрос на исполнение. |
SSL | ложный | Включить или отключить слой защищенных сокетов. |
теги | Добавить любую дополнительную информацию во входные события. | |
тип | Он используется для классификации форм ввода, так что будет легче искать все события ввода на более поздних этапах. | |
пользователь | Для подлинных целей. |
Журнал событий
Этот входной плагин читает данные из Win32 API серверов Windows. Ниже приведены настройки этого плагина —
Название настройки | Значение по умолчанию | Описание |
---|---|---|
add_field | {} | Так же, как в файловом плагине, он используется для добавления поля во входное событие |
кодер-декодер | «Простой» | Он используется для декодирования входных событий из окон; перед входом в трубопровод Logstash |
журнальный файл | [«Приложение», «Безопасность», «Система»] | События, необходимые во входном файле журнала |
интервал | 1000 | Это в миллисекундах и определяет интервал между двумя последовательными проверками новых журналов событий |
теги | Чтобы добавить любую дополнительную информацию в события ввода | |
тип | Он используется для классификации входных форм определенных плагинов к заданному типу, так что будет проще искать все входные события на более поздних этапах |
щебет
Этот плагин ввода используется для сбора потока Twitter из его потокового API. В следующей таблице описаны настройки этого плагина.
Название настройки | Значение по умолчанию | Описание |
---|---|---|
add_field | {} | Так же, как в файловом плагине, он используется для добавления поля во входное событие |
кодер-декодер | «Простой» | Он используется для декодирования входных событий из окон; перед входом в трубопровод Logstash |
CONSUMER_KEY | Он содержит потребительский ключ приложения Twitter. Для получения дополнительной информации посетите https://dev.twitter.com/apps/new | |
consumer_secret | Он содержит секретный ключ потребителя приложения Twitter. Для получения дополнительной информации посетите https://dev.twitter.com/apps/new | |
enable_metric | правда | Он используется для включения или отключения отчетности и сбора метрики для этого экземпляра плагина. |
следует |
Он определяет идентификаторы пользователей, разделенные запятыми, и LogStash проверяет статус этих пользователей в Twitter. Для получения дополнительной информации посетите |
|
full_tweet | ложный | Вы можете изменить его на true, если вы хотите, чтобы Logstash считывал полный возврат объекта из Twitter API |
Я бы | Он используется для присвоения уникального идентификационного номера этому конкретному экземпляру входного плагина. | |
ignore_retweets | Ложь | Вы можете изменить значение true, чтобы игнорировать ретвиты во входном твиттере |
ключевые слова | Это массив ключевых слов, которые нужно отслеживать во входном фиде твиттеров. | |
язык | Он определяет язык твитов, необходимых для LogStash из входного твиттера. Это массив идентификаторов, который определяет конкретный язык в твиттере | |
места | Чтобы отфильтровать твиты из входного канала в соответствии с указанным местоположением. Это массив, который содержит долготу и широту местоположения | |
oauth_token | Это обязательное поле, содержащее токен пользователя oauth. Для получения дополнительной информации, пожалуйста, посетите следующую ссылку https://dev.twitter.com/apps | |
oauth_token_secret | Это обязательное поле, содержащее секретный токен пользователя oauth. Для получения дополнительной информации, пожалуйста, посетите следующую ссылку https://dev.twitter.com/apps | |
теги | Чтобы добавить любую дополнительную информацию в события ввода | |
тип | Он используется для классификации входных форм определенных плагинов к заданному типу, так что будет проще искать все входные события на более поздних этапах |
Он определяет идентификаторы пользователей, разделенные запятыми, и LogStash проверяет статус этих пользователей в Twitter.
Для получения дополнительной информации посетите
TCP
TCP используется для получения событий через сокет TCP; он может читать с пользовательских подключений или с сервера, что указано в настройках режима. Следующая таблица описывает настройки этого плагина —
Название настройки | Значение по умолчанию | Описание |
---|---|---|
add_field | {} | Так же, как в файловом плагине, он используется для добавления поля во входное событие |
кодер-декодер | «Простой» | Он используется для декодирования входных событий из окон; перед входом в трубопровод Logstash |
enable_metric | правда | Он используется для включения или отключения отчетности и сбора метрики для этого экземпляра плагина. |
хозяин | «0.0.0.0» | Адрес ОС сервера, от которого зависит клиент |
Я бы | Он содержит потребительский ключ приложения Twitter | |
Режим | «Сервер» | Используется для указания источника ввода — сервер или клиент. |
порт | Определяет номер порта | |
ssl_cert | Используется для указания пути сертификата SSL | |
ssl_enable | ложный | Включить или отключить SSL |
ssl_key | Чтобы указать путь к файлу ключа SSL | |
теги | Чтобы добавить любую дополнительную информацию в события ввода | |
тип | Он используется для классификации входных форм определенных плагинов к заданному типу, так что будет проще искать все входные события на более поздних этапах |
Logstash — выходные плагины
Logstash поддерживает различные источники вывода и в различных технологиях, таких как база данных, файл, электронная почта, стандартный вывод и т. Д.
Синтаксис использования выходного плагина следующий:
output { Plugin name { Setting 1…… Setting 2…….. } }
Вы можете скачать плагин вывода, используя следующую команду —
>logstash-plugin install logstash-output-<plugin name>
Утилита Logstash-plugin находится в папке bin установочного каталога Logstash. В следующей таблице описываются выходные плагины, предлагаемые Logstash.
Sr.No. | Название и описание плагина |
---|---|
1 |
CloudWatch Этот плагин используется для отправки агрегированных метрических данных в CloudWatch веб-сервисов Amazon. |
2 |
CSV Он используется для записи выходных событий через запятую. |
3 |
Elasticsearch Он используется для хранения выходных журналов в индексе Elasticsearch. |
4 |
Эл. адрес Он используется для отправки уведомления по электронной почте, когда генерируется вывод. Пользователь может добавить информацию о выходе в электронную почту. |
5 |
Exec Он используется для запуска команды, соответствующей выходному событию. |
6 |
ганглии Это корчи метрики Гмонду Гангила. |
7 |
gelf Он используется для создания вывода для Graylog2 в формате GELF. |
8 |
google_bigquery Он выводит события в Google BigQuery. |
9 |
google_cloud_storage Он сохраняет выходные события в Google Cloud Storage. |
10 |
графит Он используется для хранения выходных событий в Graphite. |
11 |
graphtastic Он используется для записи выходных метрик в Windows. |
12 |
hipchat Он используется для хранения событий журнала вывода в HipChat. |
13 |
HTTP Он используется для отправки событий выходного журнала на конечные точки http или https. |
14 |
influxdb Он используется для хранения выходного события в InfluxDB. |
15 |
ИРЦ Он используется для записи выходных событий в irc. |
16 |
MongoDB Он хранит выходные данные в MongoDB. |
17 |
Nagios Он используется для уведомления Nagios о результатах пассивной проверки. |
18 |
nagios_nsca Он используется для уведомления Nagios о результатах пассивной проверки по протоколу NSCA. |
19 |
opentsdb Он сохраняет выходные события Logstash в OpenTSDB. |
20 |
труба Он передает выходные события на стандартный ввод другой программы. |
21 |
Rackspace Он используется для отправки событий выходного журнала в службу очередей Rackspace Cloud. |
22 |
Redis Он использует команду rpush для отправки выходных данных журнала в очередь Redis. |
23 |
Riak Он используется для хранения выходных событий в распределенной паре ключ / значение Riak. |
24 |
s3 Он сохраняет выходные данные регистрации в Amazon Simple Storage Service. |
25 |
с.н.с. Он используется для отправки выходных событий в Amazon Simple Notification Service. |
26 |
solr_http Он индексирует и сохраняет выходные данные регистрации в Solr. |
27 |
СФС Он используется для отправки событий в службу простой очереди AWS. |
28 |
statsd Он используется для отправки данных метрик в сетевой демон statsd. |
29 |
стандартный вывод Он используется для отображения выходных событий на стандартном выводе интерфейса командной строки, например командной строки. |
30 |
системный журнал Он используется для отправки выходных событий на сервер системного журнала. |
31 |
ТСР Он используется для отправки выходных событий в сокет TCP. |
32 |
УДП Он используется для передачи выходных событий через UDP. |
33 |
WebSocket Он используется для передачи выходных событий по протоколу WebSocket. |
34 |
XMPP Он используется для передачи выходных событий по протоколу XMPP. |
CloudWatch
Этот плагин используется для отправки агрегированных метрических данных в CloudWatch веб-сервисов Amazon.
CSV
Он используется для записи выходных событий через запятую.
Elasticsearch
Он используется для хранения выходных журналов в индексе Elasticsearch.
Эл. адрес
Он используется для отправки уведомления по электронной почте, когда генерируется вывод. Пользователь может добавить информацию о выходе в электронную почту.
Exec
Он используется для запуска команды, соответствующей выходному событию.
ганглии
Это корчи метрики Гмонду Гангила.
gelf
Он используется для создания вывода для Graylog2 в формате GELF.
google_bigquery
Он выводит события в Google BigQuery.
google_cloud_storage
Он сохраняет выходные события в Google Cloud Storage.
графит
Он используется для хранения выходных событий в Graphite.
graphtastic
Он используется для записи выходных метрик в Windows.
hipchat
Он используется для хранения событий журнала вывода в HipChat.
HTTP
Он используется для отправки событий выходного журнала на конечные точки http или https.
influxdb
Он используется для хранения выходного события в InfluxDB.
ИРЦ
Он используется для записи выходных событий в irc.
MongoDB
Он хранит выходные данные в MongoDB.
Nagios
Он используется для уведомления Nagios о результатах пассивной проверки.
nagios_nsca
Он используется для уведомления Nagios о результатах пассивной проверки по протоколу NSCA.
opentsdb
Он сохраняет выходные события Logstash в OpenTSDB.
труба
Он передает выходные события на стандартный ввод другой программы.
Rackspace
Он используется для отправки событий выходного журнала в службу очередей Rackspace Cloud.
Redis
Он использует команду rpush для отправки выходных данных журнала в очередь Redis.
Riak
Он используется для хранения выходных событий в распределенной паре ключ / значение Riak.
s3
Он сохраняет выходные данные регистрации в Amazon Simple Storage Service.
с.н.с.
Он используется для отправки выходных событий в Amazon Simple Notification Service.
solr_http
Он индексирует и сохраняет выходные данные регистрации в Solr.
СФС
Он используется для отправки событий в службу простой очереди AWS.
statsd
Он используется для отправки данных метрик в сетевой демон statsd.
стандартный вывод
Он используется для отображения выходных событий на стандартном выводе интерфейса командной строки, например командной строки.
системный журнал
Он используется для отправки выходных событий на сервер системного журнала.
ТСР
Он используется для отправки выходных событий в сокет TCP.
УДП
Он используется для передачи выходных событий через UDP.
WebSocket
Он используется для передачи выходных событий по протоколу WebSocket.
XMPP
Он используется для передачи выходных событий по протоколу XMPP.
Все плагины имеют свои специфические настройки, которые помогают указывать важные поля, такие как порт, путь и т. Д., В плагине. Мы обсудим настройки некоторых выходных плагинов.
Elasticsearch
Плагин вывода Elasticsearch позволяет Logstash сохранять выходные данные в определенных кластерах механизма Elasticsearch. Это один из известных вариантов пользователей, поскольку он входит в пакет ELK Stack и, следовательно, предоставляет комплексные решения для Devops. В следующей таблице описаны настройки этого выходного плагина.
Название настройки | Значение по умолчанию | Описание |
---|---|---|
действие | индекс | Он используется для определения действия, выполняемого в движке Elasticsearch. Другие значения для этих параметров: удаление, создание, обновление и т. Д. |
cacert | Он содержит путь к файлу с расширением .cer или .pem для проверки сертификата сервера. | |
кодер-декодер | «Простой» | Он используется для кодирования выходных данных регистрации перед отправкой в источник назначения. |
doc_as_upset | ложный | Этот параметр используется в случае действия обновления. Он создает документ в движке Elasticsearch, если идентификатор документа не указан в выходном плагине. |
тип документа | Он используется для хранения событий одного и того же типа в документе того же типа. Если он не указан, то для него используется тип события. | |
flush_size | 500 | Это используется для повышения производительности массовой загрузки в Elasticsearch |
хостов | [ «127.0.0.1»] | Это массив адресов назначения для выходных данных регистрации |
idle_flush_time | 1 | Он определяет ограничение по времени (секунда) между двумя сбросами, Logstash заставляет сбрасывать после указанного ограничения времени в этой настройке |
индекс | «Logstash -% {+ YYYY.MM.DD}» | Используется для указания индекса двигателя Elasticsearch |
manage_temlpate | правда | Используется для применения шаблона по умолчанию в Elasticsearch |
родитель | ноль | Используется для указания идентификатора родительского документа в Elasticsearch |
пароль | Он используется для аутентификации запроса к безопасному кластеру в Elasticsearch | |
дорожка | Он используется для указания HTTP-пути Elasticsearch. | |
трубопровод | ноль | Он используется для установки конвейера загрузки, пользователь хочет выполнить для события |
полномочие | Используется для указания HTTP прокси | |
retry_initial_interval | 2 | Он используется для установки начального интервала времени (в секундах) между массовыми повторными попытками. Он получает двойной после каждой попытки, пока не достигнет retry_max_interval |
retry_max_interval | 64 | Используется для установки максимального интервала времени для retry_initial_interval |
retry_on_conflict | 1 | Это число попыток Elasticsearch обновить документ |
SSL | Чтобы включить или отключить SSL / TLS, защищенный для Elasticsearch | |
шаблон | Он содержит путь к настроенному шаблону в Elasticsearch | |
Имя Шаблона | «Logstash» | Это используется, чтобы назвать шаблон в Elasticsearch |
Тайм-аут | 60 | Это время ожидания сетевых запросов к Elasticsearch |
upsert | «» | Он обновляет документ или, если document_id не существует, он создает новый документ в Elasticsearch |
пользователь | Он содержит пользователя для аутентификации запроса Logstash в безопасном кластере Elasticsearch |
Эл. адрес
Плагин вывода электронной почты используется для уведомления пользователя, когда Logstash генерирует вывод. В следующей таблице описаны настройки для этого плагина.
Название настройки | Значение по умолчанию | Описание |
---|---|---|
адрес | «Локальный» | Это адрес почтового сервера |
вложения | [] | Он содержит имена и места прикрепленных файлов |
тело | «» | Он содержит текст письма и должен быть простым текстом |
куб.см | Он содержит адреса электронной почты через запятую для копии электронной почты | |
кодер-декодер | «Простой» | Он используется для кодирования выходных данных регистрации перед отправкой в источник назначения. |
Тип содержимого | «text / html; charset = UTF-8» | Используется для содержимого типа письма |
отлаживать | ложный | Используется для запуска почтового ретранслятора в режиме отладки. |
домен | «Локальный» | Используется для настройки домена для отправки сообщений электронной почты. |
от | «[email protected]» | Используется для указания адреса электронной почты отправителя. |
htmlbody | «» | Используется для указания тела письма в формате html. |
пароль | Используется для аутентификации на почтовом сервере | |
порт | 25 | Он используется для определения порта для связи с почтовым сервером |
ответить на | Используется для указания идентификатора электронной почты для поля ответа на электронную почту | |
предмет | «» | Содержит строку темы письма |
use_tls | ложный | Включить или отключить TSL для связи с почтовым сервером |
имя пользователя | Содержит имя пользователя для аутентификации на сервере | |
с помощью | «SMTP» | Он определяет методы отправки электронной почты от Logstash |
Http
Этот параметр используется для отправки выходных событий через http к месту назначения. Этот плагин имеет следующие настройки —
Название настройки | Значение по умолчанию | Описание |
---|---|---|
automatic_retries | 1 | Используется для установки количества попыток http-запроса logstash. |
cacert | Содержит путь к файлу для проверки сертификата сервера | |
кодер-декодер | «Простой» | Он используется для кодирования выходных данных регистрации перед отправкой в источник назначения. |
Тип содержимого | Я указываю тип содержимого http-запроса к целевому серверу | |
печенье | правда | Используется для включения или отключения куки |
формат | «JSON» | Используется для установки формата тела http-запроса. |
заголовки | Содержит информацию http заголовка | |
http_method | «» | Он используется для указания метода http, используемого в запросе logstash, и значениями могут быть «положить», «опубликовать», «патч», «удалить», «получить», «голова» |
request_timeout | 60 | Используется для аутентификации на почтовом сервере |
URL | Для этого плагина обязательна настройка конечной точки http или https |
стандартный вывод
Плагин вывода stdout используется для записи выходных событий на стандартный вывод интерфейса командной строки. Это командная строка в Windows и терминал в UNIX. Этот плагин имеет следующие настройки —
Название настройки | Значение по умолчанию | Описание |
---|---|---|
кодер-декодер | «Простой» | Он используется для кодирования выходных данных регистрации перед отправкой в источник назначения. |
рабочие | 1 | Используется для указания количества рабочих на выходе |
statsd
Это сетевой демон, используемый для отправки данных матриц по UDP в бэкэнд-сервисы назначения. Это командная строка в Windows и терминал в UNIX. Этот плагин имеет следующие настройки —
Название настройки | Значение по умолчанию | Описание |
---|---|---|
кодер-декодер | «Простой» | Он используется для кодирования выходных данных регистрации перед отправкой в источник назначения. |
подсчитывать | {} | Он используется для определения количества, которое будет использоваться в метриках |
декремент | [] | Используется для указания имен метрик декремента. |
хозяин | «Локальный» | Содержит адрес сервера statsd |
приращение | [] | Используется для указания имен метрик приращения. |
порт | 8125 | Содержит порт сервера statsd |
частота дискретизации | 1 | Используется указать частоту выборки метрики |
отправитель | «% {Хост}» | Указывает имя отправителя |
задавать | {} | Используется для указания заданной метрики |
синхронизация | {} | Используется для указания метрики синхронизации |
рабочие | 1 | Используется для указания количества рабочих на выходе |
Плагины фильтров
Logstash поддерживает различные плагины фильтров для анализа и преобразования входных журналов в более структурированный и удобный для запроса формат.
Синтаксис использования плагина фильтра следующий:
filter { Plugin name { Setting 1…… Setting 2…….. } }
Вы можете скачать плагин фильтра с помощью следующей команды —
>logstash-plugin install logstash-filter-<plugin name>
Утилита Logstash-plugin находится в папке bin установочного каталога Logstash. В следующей таблице описываются выходные плагины, предлагаемые Logstash.
Sr.No. | Название и описание плагина |
---|---|
1 |
совокупный Этот плагин собирает или объединяет данные из различных событий одного типа и обрабатывает их в конечном событии |
2 |
изменять Это позволяет пользователю изменять поле событий журнала, которые не обрабатываются фильтром mutate. |
3 |
анонимный Используется для замены значений полей согласованным хешем |
4 |
шифровать Он используется для шифрования выходных событий перед их сохранением в источнике назначения. |
5 |
клон Он используется для создания дубликата выходных событий в Logstash |
6 |
сличать Он объединяет события из разных журналов по времени или количеству |
7 |
CSV Этот плагин анализирует данные из входных журналов по разделителю. |
8 |
Дата Он анализирует даты из полей в событии и устанавливает это как метку времени для события |
9 |
рассекать Этот плагин помогает пользователю извлекать поля из неструктурированных данных и позволяет фильтру Grok правильно анализировать их |
10 |
падение Он используется для отбрасывания всех событий того же типа или любого другого сходства |
11 |
истекшее Он используется для вычисления времени между начальным и конечным событиями |
12 |
Elasticsearch Используется для копирования полей предыдущих событий журнала, присутствующих в Elasticsearch, в текущее поле в Logstash. |
13 |
extractnumbers Используется для извлечения числа из строк в журнале событий |
14 |
GeoIP Он добавляет поле в событие, которое содержит широту и долготу местоположения IP, присутствующего в журнале событий. |
15 |
Grok Это обычно используемый плагин фильтра для анализа события, чтобы получить поля |
16 |
i18n Удаляет специальные символы из поля в журнале событий |
17 |
JSON Он используется для создания структурированного объекта Json в событии или в определенном поле события |
18 |
киловольт Этот плагин полезен при разборе пар ключ-значение в данных регистрации |
19 |
метрика Он используется для агрегирования таких показателей, как подсчет продолжительности времени в каждом событии |
20 |
многострочный Это также один из широко используемых плагинов фильтров, который помогает пользователю в случае преобразования многострочных данных регистрации в одно событие. |
21 |
мутировать Этот плагин используется для переименования, удаления, замены и изменения полей в ваших событиях |
22 |
спектр Используется для проверки числовых значений полей в событиях относительно ожидаемого диапазона и длины строки в пределах диапазона. |
23 |
Рубин Он используется для запуска произвольного кода Ruby |
24 |
спать Это делает Logstash спит в течение определенного времени |
25 |
Трещина Он используется для разделения поля события и размещения всех значений разделения в клонах этого события. |
26 |
XML Он используется для создания события путем анализа XML-данных, присутствующих в журналах. |
совокупный
Этот плагин собирает или объединяет данные из различных событий одного типа и обрабатывает их в конечном событии
изменять
Это позволяет пользователю изменять поле событий журнала, которые не обрабатываются фильтром mutate.
анонимный
Используется для замены значений полей согласованным хешем
шифровать
Он используется для шифрования выходных событий перед их сохранением в источнике назначения.
клон
Он используется для создания дубликата выходных событий в Logstash
сличать
Он объединяет события из разных журналов по времени или количеству
CSV
Этот плагин анализирует данные из входных журналов по разделителю.
Дата
Он анализирует даты из полей в событии и устанавливает это как метку времени для события
рассекать
Этот плагин помогает пользователю извлекать поля из неструктурированных данных и позволяет фильтру Grok правильно анализировать их
падение
Он используется для отбрасывания всех событий того же типа или любого другого сходства
истекшее
Он используется для вычисления времени между начальным и конечным событиями
Elasticsearch
Используется для копирования полей предыдущих событий журнала, присутствующих в Elasticsearch, в текущее поле в Logstash.
extractnumbers
Используется для извлечения числа из строк в журнале событий
GeoIP
Он добавляет поле в событие, которое содержит широту и долготу местоположения IP, присутствующего в журнале событий.
Grok
Это обычно используемый плагин фильтра для анализа события, чтобы получить поля
i18n
Удаляет специальные символы из поля в журнале событий
JSON
Он используется для создания структурированного объекта Json в событии или в определенном поле события
киловольт
Этот плагин полезен при разборе пар ключ-значение в данных регистрации
метрика
Он используется для агрегирования таких показателей, как подсчет продолжительности времени в каждом событии
многострочный
Это также один из широко используемых плагинов фильтров, который помогает пользователю в случае преобразования многострочных данных регистрации в одно событие.
мутировать
Этот плагин используется для переименования, удаления, замены и изменения полей в ваших событиях
спектр
Используется для проверки числовых значений полей в событиях относительно ожидаемого диапазона и длины строки в пределах диапазона.
Рубин
Он используется для запуска произвольного кода Ruby
спать
Это делает Logstash спит в течение определенного времени
Трещина
Он используется для разделения поля события и размещения всех значений разделения в клонах этого события.
XML
Он используется для создания события путем анализа XML-данных, присутствующих в журналах.
Кодек плагины
Плагины кодеков могут быть частью входных или выходных плагинов. Эти плагины используются для изменения или форматирования представления данных регистрации. Logstash предлагает несколько плагинов для кодеков, а именно:
Sr.No. | Название и описание плагина |
---|---|
1 |
Avro Этот плагин кодирует сериализацию событий Logstash в авро-датумы или декодирует записи avro в события Logstash |
2 |
CloudFront Этот плагин считывает закодированные данные из облачного фронта AWS |
3 |
cloudtrail Этот плагин используется для чтения данных из облачной трассы AWS |
4 |
collectd Это читает данные из двоичного протокола, называемого собранным по UDP |
5 |
compress_spooler Он используется для сжатия событий журнала в Logstash в буферные пакеты |
6 |
точек Это используется для отслеживания производительности путем установки точки для каждого события в стандартный вывод |
7 |
es_bulk Это используется для преобразования массовых данных из Elasticsearch в события Logstash, включая метаданные Elasticsearch |
8 |
графит Этот кодек считывает данные из графита в события и преобразует событие в записи в графическом формате. |
9 |
gzip_lines Этот плагин используется для обработки данных в формате gzip |
10 |
JSON Это используется для преобразования одного элемента в массиве Json в одно событие Logstash |
11 |
json_lines Он используется для обработки данных Json с разделителем новой строки |
12 |
линия Это плагин будет читать и записывать события в одном эфире, что означает, что после разделителя новой строки будет новое событие |
13 |
многострочный Используется для преобразования многострочных данных в одно событие |
14 |
поток данных, передающихся по сети Этот плагин используется для преобразования данных nertflow v5 / v9 в события logstash |
15 |
птар Он анализирует данные результата nmap в формате XML |
16 |
гладкий Это читает текст без разделителей |
17 |
rubydebug Этот плагин будет записывать выходные события Logstash, используя потрясающую библиотеку печати Ruby. |
Avro
Этот плагин кодирует сериализацию событий Logstash в авро-датумы или декодирует записи avro в события Logstash
CloudFront
Этот плагин считывает закодированные данные из облачного фронта AWS
cloudtrail
Этот плагин используется для чтения данных из облачной трассы AWS
collectd
Это читает данные из двоичного протокола, называемого собранным по UDP
compress_spooler
Он используется для сжатия событий журнала в Logstash в буферные пакеты
точек
Это используется для отслеживания производительности путем установки точки для каждого события в стандартный вывод
es_bulk
Это используется для преобразования массовых данных из Elasticsearch в события Logstash, включая метаданные Elasticsearch
графит
Этот кодек считывает данные из графита в события и преобразует событие в записи в графическом формате.
gzip_lines
Этот плагин используется для обработки данных в формате gzip
JSON
Это используется для преобразования одного элемента в массиве Json в одно событие Logstash
json_lines
Он используется для обработки данных Json с разделителем новой строки
линия
Это плагин будет читать и записывать события в одном эфире, что означает, что после разделителя новой строки будет новое событие
многострочный
Используется для преобразования многострочных данных в одно событие
поток данных, передающихся по сети
Этот плагин используется для преобразования данных nertflow v5 / v9 в события logstash
птар
Он анализирует данные результата nmap в формате XML
гладкий
Это читает текст без разделителей
rubydebug
Этот плагин будет записывать выходные события Logstash, используя потрясающую библиотеку печати Ruby.
Создайте свой собственный плагин
Вы также можете создавать свои собственные плагины в Logstash, которые соответствуют вашим требованиям. Утилита Logstash-plugin используется для создания пользовательских плагинов. Здесь мы создадим плагин фильтра, который добавит пользовательское сообщение в события.
Генерация базовой структуры
Пользователь может сгенерировать необходимые файлы, используя опцию создания утилиты logstash-plugin, или она также доступна на GitHub.
>logstash-plugin generate --type filter --name myfilter --path c:/tpwork/logstash/lib
Здесь опция type используется для указания того, что плагин является либо Input, Output, либо Filter. В этом примере мы создаем плагин фильтра с именем myfilter . Параметр path используется для указания пути, по которому вы хотите создать каталог плагинов. После выполнения вышеупомянутой команды вы увидите, что структура каталогов создана.
Разработайте плагин
Вы можете найти файл кода плагина в папке \ lib \ logstash \ filters в каталоге плагина. Расширение файла будет .rb .
В нашем случае файл кода был расположен по следующему пути:
C:\tpwork\logstash\lib\logstash-filter-myfilter\lib\logstash\filters\myfilter.rb
Мы изменяем сообщение на — по умолчанию ⇒ «Привет, вы изучаете это на tutorialspoint.com» и сохраняете файл.
Установите плагин
Чтобы установить этот плагин, нужно изменить Gemfile of Logstash. Вы можете найти этот файл в каталоге установки Logstash. В нашем случае это будет в C: \ tpwork \ logstash . Отредактируйте этот файл с помощью любого текстового редактора и добавьте в него следующий текст.
gem "logstash-filter-myfilter",:path => "C:/tpwork/logstash/lib/logstash-filter-myfilter"
В приведенной выше команде мы указываем имя плагина вместе с тем, где мы можем найти его для установки. Затем запустите утилиту Logstash-plugin, чтобы установить этот плагин.
>logstash-plugin install --no-verify
тестирование
Здесь мы добавляем myfilter в одном из предыдущих примеров —
logstash.conf
Этот файл конфигурации Logstash содержит myfilter в разделе фильтра после плагина grok filter.
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})?" ] } myfilter{} } output { file { path => "C:/tpwork/logstash/bin/log/output1.log" codec => rubydebug } }
Запустите logstash
Мы можем запустить Logstash с помощью следующей команды.
>logstash –f logsatsh.conf
input.log
Следующий блок кода показывает входные данные журнала.
INFO - 48566 - TRANSACTION_START - start
output.log
В следующем блоке кода показаны данные журнала вывода.
{ "path" => "C:/tpwork/logstash/bin/log/input.log", "@timestamp" => 2017-01-07T06:25:25.484Z, "loglevel" => "INFO", "logger" => "TRANSACTION_END", "@version" => "1", "host" => "Dell-PC", "label" => "end", "message" => "Hi, You are learning this on tutorialspoint.com", "taskid" => "48566", "tags" => [] }
Опубликуйте это на Logstash
Разработчик также может опубликовать свой собственный плагин в Logstash, загрузив его на github и выполнив стандартные шаги, определенные компанией Elasticsearch.
Пожалуйста, обратитесь к следующему URL для получения дополнительной информации о публикации —
https://www.elastic.co/guide/en/logstash/current/contributing-to-logstash.html
Logstash — API мониторинга
Logstash предлагает API для мониторинга его производительности. Эти API мониторинга извлекают метрики времени выполнения о Logstash.
API Node Info
Этот API используется для получения информации об узлах Logstash. Он возвращает информацию об ОС, конвейере Logstash и JVM в формате JSON.
Вы можете извлечь информацию, отправив запрос на получение в Logstash, используя следующий URL —
GET http://localhost:9600/_node?pretty
отклик
Ниже приводится ответ API Node Info.
{ "host" : "Dell-PC", "version" : "5.0.1", "http_address" : "127.0.0.1:9600", "pipeline" : { "workers" : 4, "batch_size" : 125, "batch_delay" : 5, "config_reload_automatic" : false, "config_reload_interval" : 3 }, "os" : { "name" : "Windows 7", "arch" : "x86", "version" : "6.1", "available_processors" : 4 }, "jvm" : { "pid" : 312, "version" : "1.8.0_111", "vm_name" : "Java HotSpot(TM) Client VM", "vm_version" : "1.8.0_111", "vm_vendor" : "Oracle Corporation", "start_time_in_millis" : 1483770315412, "mem" : { "heap_init_in_bytes" : 16777216, "heap_max_in_bytes" : 1046937600, "non_heap_init_in_bytes" : 163840, "non_heap_max_in_bytes" : 0 }, "gc_collectors" : [ "ParNew", "ConcurrentMarkSweep" ] } }
Вы также можете получить конкретную информацию о Pipeline, OS и JVM, просто добавив их имена в URL.
GET http://localhost:9600/_node/os?pretty GET http://localhost:9600/_node/pipeline?pretty GET http://localhost:9600/_node/jvm?pretty
Плагины Информация API
Этот API используется для получения информации об установленных плагинах в Logstash. Вы можете получить эту информацию, отправив запрос на получение по указанному ниже URL —
GET http://localhost:9600/_node/plugins?pretty
отклик
Ниже будет ответ API данных плагинов.
{ "host" : "Dell-PC", "version" : "5.0.1", "http_address" : "127.0.0.1:9600", "total" : 95, "plugins" : [ { "name" : "logstash-codec-collectd", "version" : "3.0.2" }, { "name" : "logstash-codec-dots", "version" : "3.0.2" }, { "name" : "logstash-codec-edn", "version" : "3.0.2" }, { "name" : "logstash-codec-edn_lines", "version" : "3.0.2" }, ............ }
API Статистика узлов
Этот API используется для извлечения статистики Logstash (Память, Процесс, JVM, Конвейер) в объектах JSON. Вы можете получить эту информацию, отправив запрос на получение адресов, указанных ниже —
GET http://localhost:9600/_node/stats/?pretty GET http://localhost:9600/_node/stats/process?pretty GET http://localhost:9600/_node/stats/jvm?pretty GET http://localhost:9600/_node/stats/pipeline?pretty
API Hot Threads
Этот API-интерфейс извлекает информацию о горячих потоках в Logstash. Горячие потоки — это потоки Java, которые имеют высокую загрузку ЦП и работают дольше, чем обычное время выполнения. Вы можете получить эту информацию, отправив запрос на получение по указанному ниже URL —
GET http://localhost:9600/_node/hot_threads?pretty
Пользователь может использовать следующий URL-адрес, чтобы получить ответ в более удобочитаемой форме.
GET http://localhost:9600/_node/hot_threads?human = true
Logstash — безопасность и мониторинг
В этой главе мы обсудим аспекты безопасности и мониторинга Logstash.
мониторинг
Logstash — очень хороший инструмент для мониторинга серверов и сервисов в производственных средах. Приложения в производственной среде производят различные типы данных журнала, такие как журналы доступа, журналы ошибок и т. Д. Logstash может подсчитывать или анализировать количество ошибок, обращений или других событий с помощью подключаемых модулей фильтров. Этот анализ и подсчет могут быть использованы для мониторинга различных серверов и их служб.
Logstash предлагает плагины, такие как HTTP Poller для мониторинга состояния сайта. Здесь мы отслеживаем веб-сайт с именем mysite, размещенный на локальном сервере Apache Tomcat.
logstash.conf
В этом файле конфигурации подключаемый модуль http_poller используется для посещения сайта, указанного в подключаемом модуле, через интервал времени, указанный в настройке интервала. Наконец, он записывает статус сайта в стандартный вывод.
input { http_poller { urls => { site => "http://localhost:8080/mysite" } request_timeout => 20 interval => 30 metadata_target => "http_poller_metadata" } } output { if [http_poller_metadata][code] == 200 { stdout { codec => line{format => "%{http_poller_metadata[response_message]}"} } } if [http_poller_metadata][code] != 200 { stdout { codec => line{format => "down"} } } }
Запустите logstash
Мы можем запустить Logstash с помощью следующей команды.
>logstash –f logstash.conf
стандартный вывод
Если сайт работает, то вывод будет —
Ok
Если мы остановим сайт с помощью приложения Manager от Tomcat, результат изменится на —
down
Безопасность
Logstash предоставляет множество функций для безопасной связи с внешними системами и поддерживает механизм аутентификации. Все плагины Logstash поддерживают аутентификацию и шифрование по HTTP-соединениям.
Безопасность по протоколу HTTP
Существуют настройки, такие как имя пользователя и пароль, для целей аутентификации в различных плагинах, предлагаемых Logstash, как в плагине Elasticsearch.
elasticsearch { user => <username> password => <password> }
Другая аутентификация — это PKI (инфраструктура открытых ключей) для Elasticsearch. Разработчик должен определить два параметра в выходном плагине Elasticsearch, чтобы включить аутентификацию PKI.
elasticsearch { keystore => <string_value> keystore_password => <password> }
В протоколе HTTPS разработчик может использовать сертификат органа для SSL / TLS.
elasticsearch { ssl => true cacert => <path to .pem file> }
Безопасность с транспортным протоколом
Чтобы использовать транспортный протокол с Elasticsearch, пользователям необходимо установить параметры протокола для транспорта. Это позволяет избежать демаршализации объектов JSON и повышает эффективность.
Базовая аутентификация такая же, как выполняется в протоколе http в протоколе вывода Elasticsearch.
elasticsearch { protocol => “transport” user => <username> password => <password> }
Для аутентификации PKI также необходимо, чтобы наборы SSL соответствовали другим параметрам в выходном протоколе Elasticsearch —
elasticsearch { protocol => “transport” ssl => true keystore => <string_value> keystore_password => <password> }
Наконец, для безопасности SSL требуется немного больше настроек, чем для других методов безопасности при общении.
elasticsearch { ssl => true ssl => true keystore => <string_value> keystore_password => <password> truststore =>truststore_password => <password> }
Другие преимущества безопасности от Logstash
Logstash может помочь системным источникам ввода предотвратить атаки, такие как отказ в обслуживании. Мониторинг журналов и анализ различных событий в этих журналах могут помочь системным администраторам проверить изменение входящих соединений и ошибок. Эти анализы могут помочь увидеть, происходит ли атака на серверах.
Другие продукты компании Elasticsearch, такие как x-pack и filebeat, предоставляют некоторые функции для безопасного взаимодействия с Logstash.