Извлечение значения json из json в записи журнала - PullRequest
1 голос
/ 30 апреля 2020

Используя сумологи c, как я могу выполнять запросы к записям журнала, в которых сообщение частично json (не полностью)?

Пример записи:

[ 2020-04-30 02:10:32] production. ПРЕДУПРЕЖДЕНИЕ. Мы были ограничены по скорости {"class": "App \ WebhookService \ WebhookExecutor", "headers": {"Date": ["Thu, 30 Apr 2020 02: 10:32 GMT "]," Content-Type ": [" application / json "]," Content-Length ": [" 88 "]," Connection ": [" keep-alive "]," Set- Cook ie ": ...

У меня много ошибок такого рода с разными путями классов, некоторые из них являются выполнением webhooks, другие - разные объекты. Моя конечная цель - подсчитать записи журнала для каждого имени класса, например:

WebhookExecutor     | 156
SyncDataService     | 48
DeleteService       | 13

Я начинаю с чего-то вроде:

"We were rate limited" | json auto | json "class"

Я ожидал от ^, что в моих результатах поиска по журналу будет создан столбец с именем class, который я затем смогу сгруппировать, подсчитать и т. Д. c.

1 Ответ

1 голос
/ 30 апреля 2020

Не уверен, что вы подразумеваете под "частично Json"? Т.е.:

  1. что сообщение журнала содержит другой текст и правильный Json
  2. или что сообщение содержит что-то похожее на Json, но на самом деле Json - например, префикс Json сообщения

Предполагается, что вариант 1 (другой текст + правильный Json)

Вам необходимо извлечь Json в соответствующее поле своего собственного. В противном случае | json auto не сможет его забрать.

Итак:

"We were rate limited"
| parse "We were rate limited *" as limitedJson
| json auto
| count by class

должен выполнить эту работу. Первая строка даже не нужна, потому что parse тоже выполняет фильтрацию.

Предполагается, что вариант 2 (без правильного Json, просто что-то похожее)

В таком случае сложнее, но все еще выполнимо.

Я не проверял это, но что-то вроде этого должно работать:

"We were rate limited"
| parse "\"class\":\"*\"" as class
| count by class

Здесь экранирование вложенных кавычек выглядит не очень хорошо.


Отказ от ответственности: В настоящее время я работаю в Sumo Logi c.

...