You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过订阅Event Hub通知将Azure Diagnostics事件列表摄入Azure Data Explorer并解析

解析Event Hub中的Function App列表日志并摄入Azure Data Explorer

完全可以通过ingestion mapping实现这类列表型日志的解析与摄入,以下是具体操作步骤:

1. 准备ADX目标表

先创建与Function App日志结构匹配的结构化表,示例命令如下:

.create table FunctionAppLogs (
    Time: datetime,
    Level: string,
    Message: string,
    FunctionName: string
)

2. 用Ingestion Mapping解析列表日志

针对Event Hub中以数组形式传递的日志,有两种高效处理方式:

方式一:直接通过JSON映射展开数组

如果每条Event Hub消息是包含多条日志的JSON数组(比如[{"time": "...", ...}, {...}]),可以创建JSON ingestion mapping,利用jsonpath的通配符遍历数组元素,ADX会自动将数组展开为单行记录:

.create table FunctionAppLogs ingestion json mapping "FunctionAppLogsMapping" '['
'  { "column": "Time", "path": "$[*].time", "datatype": "datetime" },'
'  { "column": "Level", "path": "$[*].level", "datatype": "string" },'
'  { "column": "Message", "path": "$[*].message", "datatype": "string" },'
'  { "column": "FunctionName", "path": "$[*].functionName", "datatype": "string" }'
']'

这里的$[*]表示遍历数组内所有元素,每条元素会被解析为表中一行数据。

方式二:先存原始数据再通过更新策略展开

若需要对日志做额外清洗处理,可先将原始JSON数组摄入临时表,再通过更新策略自动展开结构化数据:

  1. 创建临时存储表:
.create table RawFunctionAppLogs (RawData: dynamic)
  1. 创建映射摄入原始JSON:
.create table RawFunctionAppLogs ingestion json mapping "RawLogsMapping" '['
'  { "column": "RawData", "path": "$", "datatype": "dynamic" }'
']'
  1. 配置更新策略,将临时表数据展开到目标表:
.alter table FunctionAppLogs policy update @'[{"Source": "RawFunctionAppLogs", "Query": "RawFunctionAppLogs | mv-expand RawData | project Time = todatetime(RawData.time), Level = tostring(RawData.level), Message = tostring(RawData.message), FunctionName = tostring(RawData.functionName)", "IsEnabled": true}]'

3. 关联映射到Event Hub数据连接

在ADX的Event Hub数据连接配置中,指定对应的ingestion mapping(方式一),或直接选择摄入原始JSON数据(方式二),并确保数据格式设置为JSON。

4. 验证摄入结果

运行以下查询确认数据是否正确解析:

FunctionAppLogs | take 10

内容的提问来源于stack exchange,提问作者Rajesh Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:40:05