Как сделать подсчет статистики с условием if для указания значения c в журнале - PullRequest
0 голосов
/ 09 января 2020

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

Пример:

2020-01-09 13:51:28,802 INFO  [http-nio-8080-exec-8] class:ControllerV1, UA=[tokyo], GW=[api-gateway-id]
2020-01-09 13:51:31,865 INFO  [http-nio-8080-exec-9] class:ControllerV1, UA=[tokyo], GW=[api-gateway-id]
2020-01-09 13:51:32,922 INFO  [http-nio-8080-exec-10] class:ControllerV1, UA=[tokyo], GW=[api-gateway-id]
2020-01-09 13:51:36,939 INFO  [http-nio-8080-exec-2] class:ControllerV1, UA=[tokyo], GW=null
2020-01-09 13:51:48,614 INFO  [http-nio-8080-exec-1] class:ControllerV1, UA=[new-york], GW=[api-gateway-id]
2020-01-09 13:51:49,266 INFO  [http-nio-8080-exec-3] class:ControllerV1, UA=[new-york], GW=[api-gateway-id]
2020-01-09 13:51:57,533 INFO  [http-nio-8080-exec-4] class:ControllerV1, UA=[helsing], GW=[api-gateway-id]

Для приведенного выше примера я должен увеличить счетчик, если GW != null, поэтому у меня есть три счетчика, для Токио , new -york и helsing . Результаты должны выглядеть примерно так:

tokyo | new-york | helsing
  3   |    2     |    1 

Пробовал:

source="/logfiles.log" | rex "UA=(?<user-agent>\w+)" | stats count(eval(user-agent="[tokyo]")) as TOKYO

Но возвращает ошибку: Error in 'rex' command: Encountered the following error while compiling the regex 'UA=(?<user-agent>\w+)': Regex: syntax error in subpattern name (missing terminator).

Я знаю, что не могу использовать -, но я должен сделать это, и когда я его удаляю, результаты остаются равными нулю (0 результатов).

1 Ответ

0 голосов
/ 10 января 2020

Вы можете просто добавить NOT "GW=null" в свой базовый поиск, если поле GW оценивается, тогда вы можете добавить GW!=null

Вот как я видел синтаксис регулярных выражений (используйте имя поля, если сообщение вычисляется в каком-либо поле или используется raw), а также изменяет hifhen (-) на подчеркивание () в качестве имени переменной, так как имя переменной с '-' не принимается.

source="/logfiles.log" 
| rex field=_raw "UA=(?<user_agent>\w+)" 
| stats count(eval(user-agent="[tokyo]")) as TOKYO

Но и в приведенном выше регулярном выражении вы должны быть значительными из квадратных скобок '[', поэтому приведенное ниже регулярное выражение должно работать

 source="/logfiles.log" 
| rex field=_raw "UA=(?<user_agent>\[\w+\])" 
| stats count(eval(user-agent="[tokyo]")) as TOKYO
...