Приветствую тебя, читатель!
Данный пост я бы хотел посветить способу подстановки данных - 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-файла.
Комментариев нет:
Отправить комментарий