Я новичок в Splunk. Моя цель - взять два или более полей из логов. Я должен проверить, является ли одно поле true
, и поэтому использовать другое поле для создания счетчика. Счетчик показывает, сколько запросов делает клиент с использованием атрибута user-agent
.
Моя логика желала:
int count1, count2;
count1 = 0;
count2 = 0;
if (GW == true) {
if (UA == "user-agent1") count1++;
if (UA == "user-agent2") count2++;
}
На данный момент я могу получить только одно поле и сделать счетчик без if-condition
.
Этот запрос работает нормально и возвращает правильный счетчик запросов:
source="logfile.log" | rex "UA=(?<ua>\w+)" | stats count(eval(ua="user-agent1")) as USER-AGENT1
Но когда я пытаюсь получить второе поле (GW
), чтобы создать логику, запрос возвращает 0
.
source="logsfile.log" | rex "UA=(?<ua>\w+) GW=(?<gw>\w+)" |stats count(eval(ua="user-agent1")) as USER-AGENT1
Итак, как мне получить больше полей и как сделать if-condition
по запросу?
Образец журнала:
2020-01-10 14:38:44,539 INFO [http-nio-8080-exec-8] class:ControllerV1, UA=user-agent1, GW=true
2020-01-10 14:23:51,818 INFO [http-nio-8080-exec-3] class:ControllerV1, UA=user-agent2, GW=true
,
) между выражениями UA и GW, а вrex
- нет. - person PM 77-1   schedule 10.01.2020if-condition
- person Augusto   schedule 10.01.2020if
просто использоватьAND
в логическом выражении - person PM 77-1   schedule 10.01.2020AND
. Куда я могу его положить? Если в журнале есть больше полей типаUA=user-agent1, M=method, URI=some_uri ,GW=true, V=v1
. Как мне извлечь всего 2 поля? - person Augusto   schedule 10.01.2020rex
. - person PM 77-1   schedule 10.01.2020