Агрегирование подстановочных знаков в сумологическом - PullRequest
1 голос
/ 25 октября 2019

Я пытаюсь объединить журналы API на основе разных конечных точек, которые у меня есть. Всего существует 4 конечных точки:

1: / v1 / vehicle_locations

2: / v1 / vehicle_locations / id

3: / v1 / driver_locations

4: / v1 / driver_locations / id

Способ, которым я сейчас занимаюсь, таков:

_sourceCategory=production | keyvalue auto | where (path matches "/v1/driver_locations" OR path matches "/v1/driver_locations/*" or path matches "/v1/vehicle_locations" or path matches "/v1/vehicle_locations/*") | count by path

Проблема в том, что пока я получаюправильный агрегат для /v1/vehicle_locations и /v1/driver_locations, я получаю отдельные результаты для /v1/driver_locations/id и /v1/vehicle_locations/id, поскольку идентификатор является подстановочным знаком. Можно ли как-нибудь объединить эти шаблоны?

1 Ответ

1 голос
/ 25 октября 2019

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

_sourceCategory=production
| keyvalue auto 
| parse field=path "*/*" as topmost, rest
| where (topmost = "vehicle_locations" or topmost = "driver_locations")
| count by topmost

Обратите внимание, что по умолчанию | parse operator работает с необработанным сообщением (например, с исходной строкой журнала), но вы можете настроить его на анализ поля - используя синтаксис field=, и это то, что используется выше.

Вы можетехотите изменить выражение синтаксического анализа или использовать регулярное выражение в зависимости от реальных путей, с которыми вы сталкиваетесь.

(Отказ от ответственности: я в настоящее время работаю в Sumo Logic)

...