Datadog - группировка логов по подстроке

Я пытаюсь создать визуализацию «Top List» в DataDog, и я хотел бы построить график моих данных, которые должны быть сгруппированы по коду ошибки. Этот код ошибки является подстрокой в ​​журналах. Пример строки в журнале приведен ниже. Я попытался сгруппировать свои данные по сообщениям, но это не сработало, я хотел бы сгруппировать свои данные по подстроке сообщения. Может ли кто-нибудь помочь мне в этом?

... Ошибка сервера {"error": {"code": 1001, "type": "MATCH", "message": "Ошибка вызова: Failed ... ... Server Error {" error ": {" code ": 2001," type ":" MATCH "," message ":" Ошибка вызова: Ошибка ...

В настоящее время я получаю следующую визуализацию

1.0 .....error:{"code":1001.....
1.0 .....error:{"code":1001.....
1.0 .....error:{"code":2001.....

1.0 - это количество вхождений

Скорее я хочу визуализацию следующим образом

2.0 .....error:{"code":1001.....
1.0 .....error:{"code":2001.....

2.0 будет всего 2 появления ошибки 1001 и 1.0 будет появления ошибки 2001


person sachinb    schedule 24.02.2020    source источник


Ответы (1)


Сначала убедитесь, что ваши журналы хорошо структурированы (что можно контролировать в конвейеры обработки Datadog). Фактически вы захотите преобразовать значения «кода» в некоторый атрибут «код ошибки».

Если ваши события журнала имеют этот формат ...

2020-01-01 12:10:10 myservername - Server Error {"error":{"code":1001,"type":"MATCH","message":"Invoke failed: Failed"}}

... Тогда все, что вам нужно, это довольно простое правило парсера Grok, благодаря функции фильтра "json". Что-то вроде этого приведет вас туда, куда вы хотите (обратите внимание на часть %{data::json}, которая анализирует JSON в журнале).

myrulename %{date("yyyy-mm-dd' 'HH:MM:ss"):timestamp} %{notSpace:hostname} - Server Error %{data::json}

После того, как вы это настроите, ваши журналы также будут иметь атрибут под названием error.code со значением 2001 или 1001 или что-то еще.

Во-вторых, вам нужно создать фасет для этого нового атрибута error.code, чтобы вы могли создавать топлист / таймсерии / диаграммы, сгруппированные по аспекту "код ошибки".

person stephenlechner    schedule 24.02.2020
comment
Фактический формат журнала приведен ниже 01 февраля 05:34:01 ip-1-2-3-4 db: {@message: GMS Error {\ error \: {\ code \: 9001, \ type \: \ GMS_INTERNAL \, \ message \: \ Invoke failed: в базе данных обнаружено такое же состояние, попробуйте еще раз \, \ details \: null}} UniqueNonce: 1582608840282 LID: {\ Batch \: [\ 0487 \, \ 1361 \, \ 392d \, \ 8d95 \], \ Override \: 0}, @ timestamp: 2020-02-01T05: 34: 01.314Z, @ fields: {grpID: fBJSON, logID: x0074, component: SMS, level: error}} I попробовал ваше предложение, но мне не удалось извлечь error.code. Мы должны использовать фильтр kv? Пожалуйста, предложите. Спасибо - person sachinb; 28.02.2020
comment
о, в этом примере журнал содержит JSON, но внутри этого JSON похоже, что у вас есть поле (@message), содержимое которого представляет собой строку с некоторым содержимым, похожим на JSON. Вы можете разобрать это полностью, но для этого вам может понадобиться помощь службы поддержки Datadog. - person stephenlechner; 03.03.2020
comment
Спасибо, я пытаюсь получить от них помощь. Будет обновлено, если я получу какое-то решение - person sachinb; 03.03.2020