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

Azure Log Analytics自定义日志无数据:C#函数App上传成功未显示

排查Log Analytics自定义日志表数据未显示问题

核心配置遗漏检查

  • DCR字段映射规则缺失/不匹配:
    登录Azure门户打开对应DCR,切换到「转换」标签,确认存在正确的KQL转换规则,将上传的JSON字段映射到自定义表的列。例如:

    source
    | extend ID = tostring(ID), Status = tostring(Status), ErrorMessage = tostring(ErrorMessage)
    | project ID, Status, ErrorMessage
    

    若未配置转换规则,或字段名(含大小写)与上传JSON不匹配,数据会被直接丢弃,即使返回204状态码。

  • 数据流名称不匹配:
    在DCR的「数据源」标签中,查看自定义数据源的「数据流名称」,确保代码中Upload方法的第二个参数与该名称完全一致(含大小写)。例如DCR中定义的是Custom-MyTable,代码中不能写成Custom-mytable。

  • 自定义表架构不匹配:
    检查Log Analytics工作区中自定义表的列名、数据类型是否与上传的JSON字段完全匹配。比如自定义表的列是id(小写),但上传的是ID(大写),会导致映射失败。

代码层面修正

  • 上传格式需为JSON数组:
    Logs Ingestion API要求请求体必须是JSON数组,单个JSON对象无法被正确解析。修改代码中的数据格式:
    string sTest = "[{ \"ID\": \"ID0345P09B\", \"Status\": \"E\", \"ErrorMessage\": \"This is a sample error\" }]";
    

权限补充验证

  • 添加Logs Ingestion Contributor角色:
    函数App的托管身份需要在目标DCR上分配「Logs Ingestion Contributor」角色,仅「Log Analytics Contributor」不足以完成自定义日志的写入操作。

进一步排查手段

  • 查看DCE错误日志:
    在Azure门户打开对应数据收集端点(DCE),切换到「日志」标签,执行以下KQL查询排查上传错误:

    AzureDiagnostics
    | where ResourceType == "DATACOLLECTIONENDPOINTS"
    | where OperationName == "LogsIngestion"
    | where ResultType != "Success"
    

    可获取格式错误、权限不足等具体报错信息。

  • 验证DCR关联关系:
    确认DCR已正确关联到目标DCE,且目标表指向正确的自定义日志表(在DCR的「关联」标签中检查)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:05:19