Skip to content

使用 .NET SDK 管理 Azure Application Insights 监控资源

解决手动配置监控资源的低效问题:通过 .NET SDK 实现 Application Insights 资源的自动化部署、连接字符串管理以及可用性测试(Web Test)的动态创建。

为什么需要这个技能

在复杂的云原生架构中,为每个微服务手动在 Azure 门户中创建 Application Insights 实例、配置保留期并设置可用性测试极其低效且易出错。

通过 Azure.ResourceManager.ApplicationInsights SDK,开发者可以将监控资源的生命周期管理纳入代码版本控制(IaC 思想)。无论是自动生成连接字符串给应用使用,还是根据环境动态创建性能分析工作簿(Workbook),都能通过编程方式快速实现,确保开发、测试和生产环境的监控配置完全一致。

适用场景

  • 自动化运维:在 CI/CD 流水线中自动创建配套的监控组件。
  • 动态可用性监控:根据业务需求动态增减全球各节点的 URL Ping 测试。
  • 监控面板自动化:利用代码生成标准化的 KQL 查询工作簿,快速搭建性能看板。
  • 凭证管理:通过编程方式管理 API Key 和连接字符串,避免在配置文件中硬编码。

核心工作流

1. 环境准备与认证

首先安装核心包并配置 Azure 身份认证。

bash
dotnet add package Azure.ResourceManager.ApplicationInsights
dotnet add package Azure.Identity
csharp
using Azure.Identity;
using Azure.ResourceManager;

// 使用默认凭据(支持环境变量、Managed Identity 等)
ArmClient client = new ArmClient(new DefaultAzureCredential());

2. 创建基于工作区的监控组件

现代 Azure 监控推荐使用基于工作区(Workspace-based)的模式,以便更好地统一管理日志。

csharp
ApplicationInsightsComponentData data = new ApplicationInsightsComponentData(
    AzureLocation.EastUS,
    ApplicationInsightsApplicationType.Web)
{
    Kind = "web",
    WorkspaceResourceId = new ResourceIdentifier("/subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.OperationalInsights/workspaces/<workspace-name>"),
    IngestionMode = IngestionMode.LogAnalytics,
    RetentionInDays = 90,
    SamplingPercentage = 100
};

var operation = await components.CreateOrUpdateAsync(WaitUntil.Completed, "my-appinsights", data);
Console.WriteLine($"连接字符串: {operation.Value.Data.ConnectionString}");

3. 配置可用性测试 (Web Test)

通过定义 XML 配置,实现全球多节点的自动化 Ping 测试。

csharp
WebTestData urlPingTest = new WebTestData(AzureLocation.EastUS)
{
    WebTestName = "Homepage Availability",
    Frequency = 300, 
    Locations = { new WebTestGeolocation { WebTestLocationId = "apac-sg-sin-azr" } }, // 东南亚节点
    Configuration = new WebTestConfiguration
    {
        WebTest = "<WebTest Name=\"Homepage\" ...><Items><Request Method=\"GET\" Url=\"https://myapp.example.com\" ExpectedHttpStatusCode=\"200\" /></Items></WebTest>"
    }
};
await webTests.CreateOrUpdateAsync(WaitUntil.Completed, "webtest-homepage", urlPingTest);

下载和安装

下载 azure-mgmt-applicationinsights-dotnet 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐