Как в ELK-стеке отфильтровать логи Nginx по регулярному выражению?
Здравствуйте, уважаемые. Поднял на днях ELK с целью мониторинга определенных параметров из лога nginx. Настроил Grok, данные идут в нужном формате, в Logstash данные шлет Filebeat. Но не могу понять, в какой из частей стека нужно вбить регулярку, которая будет фильтровать только логи с нужным GET-параметром, т.е. начинающиеся со строки типа /ABC и исключать строки, в которых могут быть данные типа /download/ABC. Сама регулярка простейшая, я это понимаю, но в Кибане я не смог заставить по ней искать данные.
если вас устроит писать не все логи, а только часть - можете фильтровать на Логсташе.
Хотя если устроит вариант "для строки GET, содержащим ХХХ добавить признак, по которому потом в Кибане легко отфильтровать" - то опять-же, это делается в Лосташе. Но первый вариант (писать только нужное) самый хороший. Меньше храним - быстрее ищем.
ну и не забывайте про правильные типы данных и не-анализирование полей, по которым будете искать только по полному совпадению или не будете искать вовсе.
Александр: давайте так, Вы выложите часть filter конфига от логсташа и 2 строки с логами - которую надо и которую НЕ надо обработать, а я постараюсь Вам помочь. Пока grok выглядит нормально. Хотя эти кавычки....
Александр:
ага... значит родной шаблон используете. тогда предлагаю следующий план - после grok добавляем тест
if [URIPATH] !~ "download" {
mutate {
add_field => { "type" => "not_download" }
}
}
и в разделе output также добавляем проверку:
if [type] == "not_download" {
elasticsearch { ... }
}
т.е. мы проверим, что в пути нет слова download, и если его нет - определим тип записи. В ES запишутся только строки, у которых тип "not_download"
Макс: Спасибо. Так и не завелось, черная магия java-приложений... Но я сделал финт ушами и обновил весь стек до версии 5.1. Заработали нормально регулярки и сортировки