簡體   English   中英

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

[英]Azure Kusto - Use extract() on message field from traces

我正在使用 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'"

在 Azure Application Insights 內部的 Log Analytics 中,我試圖使用extract()從消息列中提取文件名。 到目前為止,我的 Kusto 查詢如下所示:

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

當我嘗試運行此查詢時,我收到一條錯誤消息:

Syntax Error

If issue persists, please open a support ticket.

Request id: 124e777f-136e-4a75-8fa7-a49483a12902

我錯過了什么,我的錯誤在哪里?

您查詢中的問題是:

  1. 您的字符串中有一個字符 ( \ ) 需要 escaping,或者使用逐字字符串文字。 在此處查看更多信息: https://learn.microsoft.com/en-us/azure/kusto/query/scalar-data-types/string

  2. 您在正則表達式中缺少捕獲組。

如果你修復了這些,這應該有效: | extend file = extract(@"^(.+)\.ts", 1, s) | 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" *

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM