четверг, 26 ноября 2015 г.

Splunk. Подключение Lookup таблицы

Приветствую тебя, читатель!


Данный пост я бы хотел посветить способу подстановки данных - Lookup (при определённых хитростях Lookup можно использовать даже для корреляции событий). Но обо всём по порядку. 

Предположим у нас есть событие с извлечёнными полями и в зависимости от значения поля необходимо дополнить событие информацией. Экспериментировать будем с логами веб-сервера Apache, а точнее с Access.log (живёт он тут - /var/log/apache2/access.log). Думаю подключить вы его сможете, тем более что Splunk из коробки понимает данный лог и извлекает все поля. Информация по использованию Lookup Вам очень сильно пригодится, если вы планируете активно использовать Splunk. 



Выполните следующий запрос:

sourcetype=Apache_access 
| table clientip, method, uri, status, useragent 
| rename clientip as "IP источника", method as "Метод", status as "HTTP-код"

Результат должен получится как на скрине ниже:



Казалось бы всё очевидно и понятно, но давайте расшифруем код возвращаемый веб-сервером клиенту. Для этого необходимо выполнить следующее:

В директории - /opt/splunk/etc/apps/search/lookups создайте файл http_status.csv следующего содержания:

status,status_description,status_type
100,Continue,Informational
101,Switching Protocols,Informational
200,OK,Successful
201,Created,Successful
202,Accepted,Successful
203,Non-Authoritative Information,Successful
204,No Content,Successful
205,Reset Content,Successful
206,Partial Content,Successful
300,Multiple Choices,Redirection
301,Moved Permanently,Redirection
302,Found,Redirection
303,See Other,Redirection
304,Not Modified,Redirection
305,Use Proxy,Redirection
307,Temporary Redirect,Redirection
400,Bad Request,Client Error
401,Unauthorized,Client Error
402,Payment Required,Client Error
403,Forbidden,Client Error
404,Not Found,Client Error
405,Method Not Allowed,Client Error
406,Not Acceptable,Client Error
407,Proxy Authentication Required,Client Error
408,Request Timeout,Client Error
409,Conflict,Client Error
410,Gone,Client Error
411,Length Required,Client Error
412,Precondition Failed,Client Error
413,Request Entity Too Large,Client Error
414,Request-URI Too Long,Client Error
415,Unsupported Media Type,Client Error
416,Requested Range Not Satisfiable,Client Error
417,Expectation Failed,Client Error
500,Internal Server Error,Server Error
501,Not Implemented,Server Error
502,Bad Gateway,Server Error
503,Service Unavailable,Server Error
504,Gateway Timeout,Server Error
505,HTTP Version Not Supported,Server Error

Теперь необходимо прописать новый Lookup в конфигурационных файлах - props.conf и transforms.conf. Они находятся тут - /opt/splunk/etc/apps/search/local. 
Про структуру конфигурационных файлов можно написать целый трактат, но пока не будем заморачиваться :)

Если по указанному пути файлов нет, то их необходимо создать вручную.

В transforms.conf необходимо прописать следующее:
[http_status]
filename = http_status.csv 

В props.conf необходимо прописать следующее:
[Apache_access] 
LOOKUP-http = http_status status OUTPUT status_description, status_type


После этого необходимо перезапустить Splunk - /opt/splunk/bin/splunk restart

Если кратко, то выполненные нами манипуляции связывают между собой два источника данных, Apache_access и http_status по полю status. иными словами, когда splunk получает новое событие от источника Apache_access, он смотрит на значение в поле status, и для этого значения подставляет соответствие из таблицы http_status. Как-то так :) 

Теперь обновим наш первый запрос и добавим новое поле - status_description

sourcetype=Apache_access 
| table clientip, method, uri, status, status_description, useragent 
| rename clientip as "IP источника", method as "Метод", status as "HTTP-код"

Как видно из скрина ниже, для всех событий из источника Apache_access добавляется значение из созданного нами csv-файла.




Комментариев нет:

Отправить комментарий