Azure CustomDimensions запроса Application Insights - PullRequest
0 голосов
/ 29 мая 2020

У меня есть приложение Java, которое отправляет журналы log4j2 в App Insights. При регистрации исключения я в основном передаю JSON в строковом формате, а исключение - примерно так:

JSONObject json=new JSONObject();
json.put(...)
....
log.error(json.toString(), exception)

На стороне App Insights; сообщение хранится в customDimensions с ключевым Logger Message в формате JSON.

Из этой сохраненной информации я хотел бы сделать запрос, который извлекал бы все сообщения об исключениях, где statusCode> 200 и statusCode <300. Я пробовал несколько запросов, но не смог их извлечь. указать c сообщения об исключениях. </p>

Один из запросов, который я пытался, был

exceptions 
| limit 50 
| where toint(customDimensions["Logger Message"].statusCode) > 200 
  and toint(customDimensions["Logger Message"].statusCode) < 300

Любая помощь была бы оценена

Обновление: я выполнил запрос

exceptions
| limit 50 
| project s1 = customDimensions["Logger Message"]
| extend  s2 = s1.statusCode
| extend  s3 = toint(s2)
| extend  s4 = s3 >= 200 and s3 < 300

1 Ответ

1 голос
/ 29 мая 2020

с точки зрения языка запросов, вы делаете правильные вещи (предполагая, что вы действительно хотите > 200, а не >= 200, так что запрос в вашем примере фактически вернет запись, снимок которой вы вставили)

print customDimensions = dynamic({
    "Logger Message":{
        "message":"Test 1 and Test 2",
        "statusCode": 200
    }
})
| project toint(customDimensions['Logger Message'].statusCode)

Это возвращает одну таблицу, с одной строкой, с одним столбцом, со значением 200.

Трудно полностью понять, как фактические данные в вашем случае выглядит на основе снимка - вы можете попробовать «отладить» его шаг за шагом (s1,...,s4 ниже) и посмотреть, где он «ломается».

  • (только предположение), возможно, вам потребуется вызвать parse_json() в строковой полезной нагрузке, чтобы вы могли получить доступ к свойствам Dynami c в ней.
exceptions
| limit 50 
| project s1 = customDimensions["Logger Message"]
| extend  s2 = s1.statusCode
| extend  s3 = toint(s2)
| extend  s4 = s3 > 200 and s3 < 300

Обновление:

попробуйте использовать parse_json(), как предполагалось ранее:

(плюс, см. раздел Примечания здесь: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/parsejsonfunction)

exceptions
| limit 50 
| project s1 = parse_json(tostring(customDimensions["Logger Message"]))
| extend  s2 = s1.statusCode
| extend  s3 = toint(s2)
| extend  s4 = s3 > 200 and s3 < 300
...