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

Вступление

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

Это руководство является продолжением ссылки https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-4-on-ubuntu-14-04 Как установить Elasticsearch, Учебное пособие по Logstash и Kibana 4 в Ubuntu 14.04], в котором основное внимание уделяется добавлению фильтров Logstash для различных распространенных журналов приложений.

Предпосылки

Чтобы следовать этому руководству, у вас должен быть работающий сервер Logstash, который получает журналы от отправителя, такого как Filebeat. Если у вас нет Logstash, настроенного для получения журналов, вот руководство, с которого вы можете начать: https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana- 4-on-ubuntu-14-04 [Как установить Elasticsearch, Logstash и Kibana 4 в Ubuntu 14.04].

ELK Server Предположения

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

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

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

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

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

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

Предположения клиент-сервер

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

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

О Грок

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

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

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

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

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

Подраздел Logstash Patterns

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

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

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

Подразделение Filebeat Prospector

Используемые Filebeat Prospectors указывают, какие журналы отправлять в Logstash. Дополнительные конфигурации поисковика должны быть добавлены в файл + / etc / filebeat / filebeat.yml + непосредственно после существующих исполнителей в разделе + prospectors +:

Примеры изыскателей

filebeat:
 # List of prospectors to fetch data.
 prospectors:
   -
     - /var/log/secure
     - /var/log/messages
     document_type: syslog




...

В приведенном выше примере выделенные красным цветом линии представляют Prospector, который отправляет все файлы + .log + в + / var / log / app / + в Logstash с типом + app-access +. После внесения любых изменений Filebeat необходимо перезагрузить, чтобы изменения вступили в силу.

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

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

Шаблоны Logstash: Nginx

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

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

sudo vi /opt/logstash/patterns/nginx

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

Nginx Grok Pattern

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: /opt/logstash/patterns/nginx

Фильтр Logstash: Nginx

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

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

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

Фильтр Nginx

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

Сохранить и выйти. Обратите внимание, что этот фильтр попытается сопоставить сообщения типа + nginx-access с шаблоном` + NGINX ACCESS`, определенным выше.

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

sudo service logstash restart

Filebeat Prospector: Nginx

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

sudo vi /etc/filebeat/filebeat.yml

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

Nginx Prospector

   -
     paths:
       - /var/log/nginx/access.log
     document_type: nginx-access

Сохранить и выйти. Перезагрузите Filebeat, чтобы изменения вступили в силу:

sudo service filebeat restart

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

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

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

Logstash Filter: Apache

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

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

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

Apache Filter

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

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

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

sudo service logstash restart

Filebeat Prospector: Apache

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

sudo vi /etc/filebeat/filebeat.yml

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

Apache Prospector

   -
     paths:
       - /var/log/apache2/access.log
     document_type: apache-access

Сохранить и выйти. Перезагрузите Filebeat, чтобы изменения вступили в силу:

sudo service filebeat restart

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

Заключение

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

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

Если вы не знакомы с использованием Kibana, ознакомьтесь с этим руководством: Как использовать визуализации и панели управления Kibana .

Related