Добавление фильтров Logstash для улучшения централизованного ведения журналов (Logstash Forwarder)

Вступление

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

Это руководство является продолжением https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-1-7-logstash-1-5-and-kibana-4-1-elk-stack. -on-ubuntu-14-04 [Как установить Elasticsearch 1.7, Logstash 1.5 и Kibana 4.1 (ELK Stack) в Ubuntu 14.04] и фокусируется главным образом на добавлении фильтров для различных распространенных журналов приложений.

Предпосылки

Чтобы следовать этому руководству, у вас должен быть работающий сервер Logstash и способ доставки ваших журналов в Logstash. Если у вас не настроен Logstash, вот еще один учебник, с которого можно начать: https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-1-7-logstash-1-5 -and-kibana-4-1-elk-stack-on-ubuntu-14-04 [Как установить Elasticsearch 1.7, Logstash 1.5 и Kibana 4.1 (ELK Stack) в Ubuntu 14.04].

Предположения сервера Logstash:

  • Logstash устанавливается в + / opt / logstash +

  • Вы получаете журналы от Logstash Forwarder через порт 5000

  • Ваши файлы конфигурации Logstash находятся в + / etc / logstash / conf.d +

  • У вас есть входной файл с именем + 01-lumberjack-input.conf +

  • У вас есть выходной файл с именем + 30-lumberjack-output.conf +

Предположения экспедитора Logstash:

  • На каждом сервере приложений вы настроили Logstash Forwarder для отправки syslog / auth.log на ваш сервер Logstash (как в https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash- and-kibana-4-on-ubuntu-14-04 # set-up-logstash-forwarder- (добавление-клиент-серверы) [Настройка пересылки Logstash] предыдущего руководства)

Если ваши настройки отличаются от наших предположений, просто настройте это руководство в соответствии с вашей средой.

Вам может потребоваться создать каталог + templates +, выполнив эту команду на вашем сервере Logstash:

sudo mkdir -p /opt/logstash/patterns
sudo chown logstash:logstash /opt/logstash/patterns

О Грок

Grok анализирует текстовые шаблоны, использует регулярные выражения и присваивает их идентификатору.

Синтаксис для шаблона grok: +% {:} +. Фильтр Logstash включает в себя последовательность шаблонов grok, которая сопоставляет и назначает различные фрагменты сообщения журнала различным идентификаторам, и именно так журналам задается структура.

Чтобы узнать больше о grok, посетите страницу Logstash grok и https://github.com/elasticsearch/logstash/blob/v1.4.2 / Patterns / Grok-Pattern [Список шаблонов Logstash по умолчанию].

Как использовать это руководство

Каждый основной раздел, следующий за этим, будет содержать дополнительные сведения о конфигурации, необходимые для сбора и фильтрации журналов для данного приложения. Для каждого приложения, которое вы хотите регистрировать и фильтровать, вам нужно будет внести некоторые изменения в конфигурацию как на сервере приложений, так и на сервере Logstash.

Подраздел экспедитора Logstash

Подразделы Logstash Forwarder относятся к серверу приложений, который отправляет свои журналы. Дополнительная конфигурация files должна быть добавлена ​​в файл + / etc / logstash-forwarder.conf + сразу после следующих строк:

 "files": [
   {
     "paths": [
       "/var/log/syslog",
       "/var/log/auth.log"
      ],
     "fields": { "type": "syslog" }
   }

Убедитесь, что дополнительная конфигурация находится перед +] +, который закрывает раздел «файлы». Это будет включать в себя правильные файлы журнала для отправки в Logstash и пометить их как определенный тип (который будет использоваться фильтрами Logstash). Переадресация Logstash должна быть перезагружена, чтобы изменения вступили в силу.

Подраздел Logstash Patterns

Если есть подраздел «Шаблоны Logstash», он будет содержать шаблоны «grok», которые можно добавить в новый файл в «+ / opt / logstash / Pattern +» на сервере Logstash. Это позволит вам использовать новые шаблоны в фильтрах Logstash.

Подраздел фильтра Logstash

Подразделы Logstash Filter будут включать фильтр, который может быть добавлен в новый файл между входными и выходными файлами конфигурации, в + / etc / logstash / conf.d + на сервере Logstash. Фильтр определяет, как сервер Logstash анализирует соответствующие файлы журнала. Не забудьте перезапустить сервер Logstash после добавления нового фильтра, чтобы загрузить изменения.

Теперь, когда вы знаете, как использовать это руководство, остальная часть руководства покажет вам, как собирать и фильтровать журналы приложений!

Применение: Nginx

Экспедитор Logstash: Nginx

На ваших * Nginx * серверах откройте файл конфигурации + logstash-forwarder.conf + для редактирования:

sudo vi /etc/logstash-forwarder.conf

Добавьте следующее в раздел «файлы», чтобы отправить журналы доступа Nginx типа «nginx-access» на ваш сервер Logstash:

,
   {
     "paths": [
       "/var/log/nginx/access.log"
      ],
     "fields": { "type": "nginx-access" }
   }

Сохранить и выйти. Перезагрузите конфигурацию Logstash Forwarder, чтобы изменения вступили в силу:

sudo service logstash-forwarder restart

Шаблоны Logstash: Nginx

Шаблоны журнала Nginx не включены в шаблоны по умолчанию Logstash, поэтому мы добавим шаблоны Nginx вручную.

На вашем * сервере Logstash * создайте новый файл шаблона с именем + nginx +:

sudo vi /opt/logstash/patterns/nginx

Затем вставьте следующие строки:

NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}

Сохранить и выйти. Шаблон NGINXACCESS анализирует и назначает данные различным идентификаторам (например, Clientip, Ident, Auth и т. д.).

Затем измените владельца файла шаблона на + logstash +:

sudo chown logstash:logstash /opt/logstash/patterns/nginx

Фильтр Logstash: Nginx

На вашем * сервере Logstash * создайте новый файл конфигурации фильтра с именем + 11-nginx.conf +:

sudo vi /etc/logstash/conf.d/11-nginx.conf

Затем добавьте следующий фильтр:

filter {
 if [type] == "nginx-access" {
   grok {
     match => { "message" => "%{NGINXACCESS}" }
   }
 }
}

Сохранить и выйти. Обратите внимание, что этот фильтр будет пытаться сопоставить сообщения типа «nginx-access» с шаблоном NGINXACCESS, определенным выше.

Теперь перезапустите Logstash, чтобы перезагрузить конфигурацию:

sudo service logstash restart

Теперь ваши логи Nginx будут собраны и отфильтрованы!

Приложение: веб-сервер Apache HTTP

Шаблоны журналов Apache включены в шаблоны Logstash по умолчанию, поэтому для него довольно просто настроить фильтр.

  • Примечание: * Если вы используете вариант RedHat, такой как CentOS, журналы расположены в + / var / log / httpd + вместо + / var / log / apache2 +, который используется в примерах.

Экспедитор Logstash

На ваших серверах * Apache * откройте файл конфигурации + logstash-forwarder.conf + для редактирования:

sudo vi /etc/logstash-forwarder.conf

Добавьте следующее в разделе «файлы», чтобы отправить журналы доступа Apache типа «apache-access» на ваш сервер Logstash:

,
   {
     "paths": [
       "/var/log//access.log"
      ],
     "fields": { "type": "apache-access" }
   }

Сохранить и выйти. Перезагрузите конфигурацию Logstash Forwarder, чтобы изменения вступили в силу:

sudo service logstash-forwarder restart

Logstash Filter: Apache

На вашем * сервере Logstash * создайте новый файл конфигурации фильтра с именем + 12-apache.conf +:

sudo vi /etc/logstash/conf.d/12-apache.conf

Затем добавьте следующий фильтр:

filter {
 if [type] == "apache-access" {
   grok {
     match => { "message" => "%{COMBINEDAPACHELOG}" }
   }
 }
}

Сохранить и выйти. Обратите внимание, что этот фильтр будет пытаться сопоставить сообщения типа «apache-access» с шаблоном COMBINEDAPACHELOG, одним из шаблонов Logstash по умолчанию.

Теперь перезапустите Logstash, чтобы перезагрузить конфигурацию:

sudo service logstash restart

Теперь ваши логи Apache будут собраны и отфильтрованы!

Заключение

Можно собирать и анализировать журналы практически любого типа. Попробуйте написать свои собственные фильтры и шаблоны для других файлов журнала.

Не стесняйтесь комментировать с фильтрами, которые вы хотели бы видеть, или с собственными шаблонами!

Если вы не знакомы с использованием Kibana, ознакомьтесь с третьим учебным пособием из этой серии: https://www.digitalocean.com/community/tutorials/how-to-use-kibana-dashboards-and-visualizations[How To Use Кибана Визуализации и информационные панели.

Related