Logstash - Сбор журналов

Журналы с разных серверов или источников данных собираются с помощью грузоотправителей. Отправитель - это экземпляр Logstash, установленный на сервере, который обращается к журналам сервера и отправляет их в определенное место вывода.

В основном он отправляет результат в Elasticsearch для хранения. Logstash принимает данные из следующих источников -

  • STDIN
  • Syslog
  • Files
  • TCP/UDP
  • Журналы событий Microsoft Windows
  • Websocket
  • Zeromq
  • Индивидуальные расширения

Сбор журналов с помощью сервера Apache Tomcat 7

В этом примере мы собираем журналы сервера 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

Доступ к серверу Apache Tomcat и его веб-приложениям (http://localhost:8080) для создания журналов. Обновленные данные в журналах считываются Logstash в реальном времени и сохраняются в output.log, как указано в файле конфигурации.

Apache Tomcat создает новый файл журнала доступа в соответствии с датой и записывает в него события доступа. В нашем случае это был localhost_access_log.2016-12-24.txt в папкеlogs каталог 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 Plugin.

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":[]
}