Azure Kusto - 在来自跟踪的消息字段上使用 extract()

And*_*rew 2 azure azure-application-insights azure-data-explorer

我使用 Azure Log Analytics 作为 Azure Application Insights 的一部分。我正在尝试编写一些 Kusto 查询来解析一些使用 Application Insights Javascript SDK 生成的日志记录。以下是一些示例消息:

"index.ts: imports: 1556.916ms"
"index.ts: imports: 110.486ms import { } from '@azure/keyvault-secrets'"
"index.ts: imports: 110.396ms import { } from '@azure/event-hubs'"
"index.ts: imports: 110.023ms import { } from 'applicationinsights'"
"index.ts: imports: 0.131ms import { } from '@azure/functions'"
Run Code Online (Sandbox Code Playgroud)

在 Azure Application Insights 内的 Log Analytics 中,我尝试使用extract(). 到目前为止,我的 Kusto 查询看起来像:

traces
| where message contains "imports" 
| extend file = extract("^.+\.ts", 1, message)
| sort by timestamp desc
| limit 100
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此查询时,我收到一条错误消息:

Syntax Error

If issue persists, please open a support ticket.

Request id: 124e777f-136e-4a75-8fa7-a49483a12902
Run Code Online (Sandbox Code Playgroud)

我错过了什么,我的错误在哪里?

Yon*_*i L 5

您查询中的问题是:

  1. \的字符串中有一个字符 ( ) 需要转义或使用逐字字符串文字。在此处查看更多信息:https : //docs.microsoft.com/en-us/azure/kusto/query/scalar-data-types/string

  2. 您的正则表达式中缺少捕获组。

如果你修复了这些,这应该有效: | extend file = extract(@"^(.+)\.ts", 1, s)

但是,无论如何,您可以使用更高效的parse运算符,如下所示:

datatable(s:string)
[
    "index.ts: imports: 1556.916ms",
    "index.ts: imports: 110.486ms import { } from '@azure/keyvault-secrets'",
    "index.ts: imports: 110.396ms import { } from '@azure/event-hubs'",
    "index.ts: imports: 110.023ms import { } from 'applicationinsights'",
    "index.ts: imports: 0.131ms import { } from '@azure/functions'",
]
| parse s with file ".ts" *
Run Code Online (Sandbox Code Playgroud)