Запрос для прохождения данных в Spunk - PullRequest
3 голосов
/ 24 сентября 2011

В моем журнале есть строки ниже:

...useremail=abc@fdsf.com id=1234 ....
...useremail=pqr@fdsf.com id=4565 ....
...useremail=xyz@fdsf.com id=5773 ....
  1. Захват всех этих идентификаторов за период от -1d @ d до @ d
  2. Для каждого пользователя выполните поискот начала индекса до -1d @ d и посмотрите, присутствует ли уже идентификатор пользователя, сравнив поле фактического идентификатора
  3. Если его нет, добавьте его в счетчик
  4. Показать этот окончательный счет.

Можно ли добиться этого в Splunk?

Спасибо!

1 Ответ

3 голосов
/ 28 сентября 2011

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

1) Получите все эти идентификаторы за период от -1d @ d до @ d

Вы хотите сначала проверить поиск, который возвращает только список идентификаторов, который затем будет преобразован в подпоиск:

sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id

2) Для каждого пользователя выполните поиск от начала индекса до -1d @ d и посмотрите, присутствует ли идентификатор пользователя, сравнив поле фактического идентификатора

Создайте основной поиск с другим таймфреймом, который использует подпоиск из (1) для сопоставления с этими идентификаторами (обратите внимание, что подпоиск должен начинаться с search):

sourcetype=<MY_SOURCETYPE> [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d

Это вернет необработанный набор данных всех событий от начала индекса до 1d @ d, но не содержащий идентификаторы из (1).

3) Если его нет, добавьте его в счетчик

Измените этот поиск с помощью NOT по всему подзапросу и направьте внешний поиск на stats, чтобы увидеть идентификаторы, которые ему соответствуют:

sourcetype=<MY_SOURCETYPE> NOT [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d | stats values(id)

4) Показать этот окончательный счет.

Пересмотрите последнюю команду stats, чтобы вместо нее было возвращено другое число:

sourcetype=<MY_SOURCETYPE> NOT [search sourcetype=<MY_SOURCETYPE> earliest=-1d@d latest=-@d | stats values(id) AS id] earliest=0 latest=-1d@d | stats dc(id)

Особенности производительности:

Вышеприведенный метод работает достаточно хорошо для наборов данных длиной до 1 миллиона строк на обычном оборудовании Проблема в том, что подпоиск блокируется, поэтому внешний поиск должен ждать. Если вы имеете дело с большими наборами данных, то для того, чтобы сделать этот поиск эффективным, необходимо использовать альтернативные методы.

К вашему сведению, у Splunk есть специальный сайт, где вы можете получить ответы на такие вопросы гораздо быстрее: http://splunk -base.splunk.com / answers /

...