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

如何将Docker容器部署的Azure Node.js函数STDOUT日志存入Azure Monitor Logs?

将Docker部署的Azure Node.js函数STDOUT日志导入Azure Monitor Logs的方案

方案一:利用Function App原生日志集成(最简便)

这是Azure官方推荐的零额外代码方案:

  • 先确保Function App关联Application Insights资源:在Function App的配置→应用程序设置中,添加APPINSIGHTS_INSTRUMENTATIONKEY,值填入对应Application Insights的密钥;若没有AI资源,直接在门户创建并关联即可。
  • 开启容器控制台日志:进入Function App的配置→容器设置,找到日志记录区域,勾选控制台日志并设置保留天数,保存配置。
  • 函数代码直接用console.log()/console.error()输出日志到STDOUT/STDERR,这些日志会自动被Azure收集,最终同步到Azure Monitor Logs的traces表中。

方案二:自定义Docker镜像时配置Azure Monitor日志驱动

如果是自行构建Docker镜像,可直接在容器层面指定日志驱动:

  • 在Docker运行命令中添加日志驱动参数:
    docker run --log-driver=azuremonitor \
      --log-opt instrumentation-key=<你的AI密钥> \
      --log-opt log-level=info \
      <你的镜像名称>
    
  • 也可在Dockerfile的ENTRYPOINT/CMD指令中嵌入上述参数。
  • 需给Function App的系统分配身份赋予Monitoring Metrics Publisher权限,确保容器能正常将日志发送到Azure Monitor。

方案三:用Azure Monitor Agent(AMA)自定义收集规则

如果需要日志过滤、字段提取等灵活需求,适合用AMA:

  • 部署Azure Monitor Agent到Function App宿主环境(仅支持弹性高级计划、隔离计划的App Service)。
  • 创建数据收集规则(DCR),指定日志收集路径(容器STDOUT日志默认存于/home/LogFiles/Application/),并将数据转发到你的Log Analytics工作区。
  • 配置完成后,日志会进入Log Analytics的ContainerLog表,可通过Kusto查询语言自定义分析。

验证方法

配置完成后触发函数执行,在Azure Monitor Logs中执行以下查询验证:

// 验证原生集成的日志
traces | where message contains "你的测试日志关键词" | order by timestamp desc

// 验证AMA或日志驱动的日志
ContainerLog | where LogEntry contains "你的测试日志关键词" | order by TimeGenerated desc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:38:16