Назад | Перейти на главную страницу

Захват регулярного выражения в Splunk

Я пытаюсь получить пути к каталогам запросов GET и подсчитать их в Splunk, используя это регулярное выражение для захвата.

index=main sourcetype="access_combined_wcookie" | rex "(?i)\"GET /(?P<MYDIR>\w+)/" | timechart count by MYDIR 

Такого рода работы. Он захватывает имена каталогов верхнего уровня и суммирует их по времени, как и ожидалось, за исключением того, что он также отображает запросы HEAD как «NULL» или «OTHER».

Регулярное выражение работает, как ожидалось, как в perl, так и в Python (т.е. оно не соответствует запросу HEAD). Кто-нибудь знает, что мне нужно сделать, чтобы Splunk перестал сообщать о материалах, которые я не записал с самого начала? Такое поведение действительно противоречит интуиции.

Причина, по которой вы думаете, что Splunk сообщает о том, что вы не собираете, заключается в том, что вы неправильно понимаете, как рекс команда работает.

рекс не фильтрует записи. Он добавляет поля, которые вы извлекаете, к событиям, если существует регулярное выражение. Итак, в вашем случае вы добавляете поле MYDIR ко всем событиям, содержащим GET, но вы по-прежнему получаете все события.

Тип источника access_combined_wcookie - это готовый исходный тип в Splunk, в котором уже определены извлечения полей. Было бы проще использовать уже извлеченный метод поле, чтобы ограничить ваш поиск только GET.

index=main sourcetype="access_combined_wcookie" method=GET | rex "(?i)\"GET /(?P<MYDIR>\w+)/" | timechart count by MYDIR