Вступление
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 Кибана Визуализации и информационные панели.