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

如何使用.NET版Azure资源管理器库为Azure函数应用添加诊断设置

配置函数应用诊断设置到Log Analytics工作区(Azure.ResourceManager API)

你提到的GetSiteDiagnostics()方法用于查询网站的诊断状态信息,并非配置日志转发的诊断设置。要实现将函数应用日志发送到Log Analytics工作区,需要使用Azure.ResourceManager.Insights模块中的DiagnosticSetting相关API——诊断设置属于Microsoft.Insights命名空间下的独立资源,与目标资源(函数应用)关联配置。

实现步骤

  1. 确保安装必要的NuGet包:

    • Azure.ResourceManager
    • Azure.ResourceManager.Insights
  2. 编写代码完成配置:

// 假设已初始化ArmClient实例,且已创建好函数应用资源funcResource
using Azure.ResourceManager;
using Azure.ResourceManager.Insights;
using Azure.ResourceManager.Resources;

// 1. 获取函数应用的资源ID
ResourceIdentifier funcAppId = funcResource.Id;

// 2. 获取目标Log Analytics工作区的资源对象
// 示例:通过订阅ID、资源组、工作区名称构造资源ID
var workspaceResourceId = new ResourceIdentifier(
    "/subscriptions/{你的订阅ID}/resourceGroups/{工作区资源组名}/providers/Microsoft.OperationalInsights/workspaces/{工作区名称}"
);
var workspaceResource = await armClient.GetWorkspaceResource(workspaceResourceId);

// 3. 构造诊断设置数据
var diagSettingData = new DiagnosticSettingData()
{
    Name = "FuncApp-LogAnalytics-Setting",
    WorkspaceId = workspaceResource.Id,
    // 配置需要收集的日志类别(可根据需求调整)
    Logs =
    {
        new DiagnosticSettingsLogSettings
        {
            Category = "FunctionAppLogs",
            Enabled = true,
            RetentionPolicy = new DiagnosticSettingsRetentionPolicy { Enabled = false }
        },
        new DiagnosticSettingsLogSettings
        {
            Category = "AppServiceConsoleLogs",
            Enabled = true
        },
        new DiagnosticSettingsLogSettings
        {
            Category = "AppServiceHTTPLogs",
            Enabled = true
        }
    },
    // 可选:配置指标收集
    Metrics =
    {
        new DiagnosticSettingsMetricSettings
        {
            Category = "AllMetrics",
            Enabled = true
        }
    }
};

// 4. 创建或更新诊断设置
var diagSettingsCollection = armClient.GetDiagnosticSettings(funcAppId);
var response = await diagSettingsCollection.CreateOrUpdateAsync(WaitUntil.Completed, diagSettingData.Name, diagSettingData);
var createdDiagSetting = response.Value;

关键说明

  • DiagnosticSetting资源逻辑:诊断设置是依附于目标资源的独立配置资源,通过ArmClient.GetDiagnosticSettings(resourceId)获取操作集合后,调用CreateOrUpdateAsync完成配置。
  • 日志类别参考:函数应用支持的日志类别可在Azure门户的诊断设置页面查看,需确保填写的类别名称与门户一致。
  • 权限要求:执行代码的身份需要拥有Microsoft.Insights/diagnosticSettings/write权限,以及对目标Log Analytics工作区的Microsoft.OperationalInsights/workspaces/write权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:37:25