Splunk - поиск значений + stati c строка поиска = вывод с количеством - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу выполнить поиск, где мне нужно использовать stati c строку поиска + ввод из файла csv с именами пользователей:

  1. Поисковый запрос- index=someindex host=host*p* "STATIC_SEARCH_STRING"

  2. Значение из users.csv, где список похож на этот - Обратите внимание, что User / UserList НЕ является полем в моем Splunk : **UserList** User1 User2 User3 . . UserN

Я попытался использовать несколько из них: | inputlookup users.csv | join [search index=someindex host=host*p* "STATIC_SEARCH_STRING"] | lookup users.csv UserList OUTPUT UserList as User| stats count by User

Вышеприведенный просто выводит список пользователей с количеством «1», который, как я полагаю, он получает из сама таблица.

Когда я пытаюсь искать события для одного пользователя, например - index=someindex host=host*p* "User1" "STATIC_SEARCH_STRING". Я получил 100 событий для этого пользователя.

Может кто-нибудь помочь мне с этим? Извините, если это нубский вопрос, я пытался научиться спленку, чтобы уменьшить нагрузку, и застрял здесь.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020
index=someindex host=host*p* "STATIC_SEARCH_STRING" [ | inputlookup users.csv | fields UserList | rename UserList as query]

То, что здесь происходит, это то, что есть под-поиск, который выполняет inputlookup в файле users.csv. Затем мы используем fields, чтобы обеспечить наличие только одного поля (UserList) в данных. Затем мы переименуем это поле в query. Это специальное поле в подисках; когда вспомогательный поиск возвращает поле query, оно расширяется до выражения (field_value_1) OR (field_value_2) OR ....

. Затем это выражение добавляется к исходной строке поиска, поэтому окончательный поиск, выполняемый Splunk, равен * 1009. *

Этот подход описан в https://docs.splunk.com/Documentation/Splunk/8.0.3/Search/Changetheformatofsubsearchresults

Вы также можете посмотреть на команду формата Splunk, https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Format, если вам нужно измените формат выражения подзапроса, например, добавив * вокруг каждого возвращаемого выражения.

0 голосов
/ 17 апреля 2020

Я думаю, что вы делаете поиск наизнанку

То, что я думаю вам может понадобиться:

index=ndx sourcetype=srctp host=host*p* User=*
| search 
    [| inputlookup users.csv ]
| stats count by User

Если я правильно понимаю ваш вопрос , вы хотите использовать значения в вашем поиске в качестве фильтра данных (ie, только если User в этом списке)

Если это так, выше будет делать именно это

Если вам нужно, чтобы имена полей совпадали, потому что таблица поиска имеет другое имя, измените подпоиск на следующее:

    [| inputlookup users.csv
     | rename lookup_field_name as User ]
...