Splunk, как исключить определенную юдоль из списка, если она существует

У меня есть журнал с полезной нагрузкой примерно так:

"Stats":[        { 
           errors: 0
           type: "Disc"
           success: 878
         },
         {
           errors: 21
           type: "cronJob"
           success: 25
         },
         { 
           errors: 0
           type: "File"
           success: 8787
         },
         { 
           errors: 15
           type: "Unknown"
           success: 0
         }]

Мне нужно избавиться от объекта типа Unknown и получить сумму оставшихся значений

Я могу получить сумму всех ошибок, но для событий с типом Unknown я не знаю, как это сделать. Не могли бы вы помочь?

<search>|rename Stats{}.type= as type|eventstats sum(errors)  as ErrorCount 

Это мой текущий поиск без исключения неизвестного типа. как включить логику исключения неизвестных счетчиков


person Joe    schedule 06.08.2020    source источник


Ответы (2)


Полезные данные JSON обрабатываются как многозначное поле.

Поэтому вам нужно mvexpand это, прежде чем фильтровать то, что вы хотите игнорировать

Попробуйте что-то вроде этого:

index=ndx sourcetype=srctp Stats{}.type=*
| rename Stats{}.type as type
| mvexpand type
| search NOT type="Unknown"
| ...
person warren    schedule 10.08.2020

person    schedule
comment
Пожалуйста, не публикуйте только код в качестве ответа, но также объясните, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением обычно более полезны и качественнее, и с большей вероятностью получат положительные отзывы. - person Mark Rotteveel; 07.08.2020
comment
это не сработает - это удалит все события, для которых в поле Stats{}.type указано Неизвестно .. а это не то, что вам нужно. И вы не можете сделать rename Stats{}.type= as type - получите синтаксическую ошибку. - person warren; 10.08.2020