Azure Mgmt Applicationinsights Dotnet

作者 microsoft354361d83247MIT收录于 2026年10月8日更新于 2026年10月8日

Azure Application Insights SDK for .NET. Application performance monitoring and observability resource management. Use for creating Application Insights components, web tests, workbooks, analytics items, and API keys. Triggers: "Application Insights", "ApplicationInsights", "App Insights", "APM", "application monitoring", "web tests", "availability tests", "workbooks".

精选仅含说明DevOps & Cloud
AI 生成的概览

指导 .NET 开发者使用 Azure Resource Manager SDK 管理 Azure Application Insights 资源。

功能
该技能提供参考说明和 C# 代码示例,用于通过 Azure.ResourceManager.ApplicationInsights SDK 管理 Azure Application Insights 资源。内容涵盖创建和更新组件、获取连接字符串和密钥、创建 API 密钥、可用性 Web 测试、工作簿、链接存储账户以及删除资源。还列出了关键类型、应用程序类型、Web 测试位置、错误处理模式和相关 SDK。
适用场景
当需要通过 .NET 代码预配或管理 Application Insights 组件、可用性测试、工作簿或 API 密钥时使用。适合需要具体 SDK 示例来完成 Azure 资源管理任务的开发者。
运行要求
需要 .NET SDK 以及 Azure.ResourceManager.ApplicationInsights 和 Azure.Identity NuGet 包。需要 Azure 订阅、资源组和凭据(如 DefaultAzureCredential 或 ManagedIdentityCredential),并需要访问 Azure 的网络。不包含脚本,仅为说明和代码示例。

Azure.ResourceManager.ApplicationInsights (.NET)

Azure Resource Manager SDK for managing Application Insights resources for application performance monitoring.

Installation

bash
dotnet add package Azure.ResourceManager.ApplicationInsightsdotnet add package Azure.Identity

Current Version: v1.0.0 (GA)
API Version: 2022-06-15

Environment Variables

bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription IDAZURE_RESOURCE_GROUP=<your-resource-group> # Required: Azure resource group nameAZURE_APPINSIGHTS_NAME=<your-appinsights-component> # Required: Application Insights component nameAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production

Authentication

csharp
using Azure.Identity;using Azure.ResourceManager;using Azure.ResourceManager.ApplicationInsights;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>var credential = new DefaultAzureCredential(    DefaultAzureCredential.DefaultEnvironmentVariableName);// Or use a specific credential directly in production:// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes// var credential = new ManagedIdentityCredential();ArmClient client = new ArmClient(credential);

Resource Hierarchy

Subscription└── ResourceGroup    └── ApplicationInsightsComponent          # App Insights resource        ├── ApplicationInsightsComponentApiKey  # API keys for programmatic access        ├── ComponentLinkedStorageAccount      # Linked storage for data export        └── (via component ID)            ├── WebTest                        # Availability tests            ├── Workbook                       # Workbooks for analysis            ├── WorkbookTemplate               # Workbook templates            └── MyWorkbook                     # Private workbooks

Core Workflows

1. Create Application Insights Component (Workspace-based)

csharp
using Azure.ResourceManager.ApplicationInsights;using Azure.ResourceManager.ApplicationInsights.Models;
ResourceGroupResource resourceGroup = await client    .GetDefaultSubscriptionAsync()    .Result    .GetResourceGroupAsync("my-resource-group");
ApplicationInsightsComponentCollection components = resourceGroup.GetApplicationInsightsComponents();
// Workspace-based Application Insights (recommended)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,    PublicNetworkAccessForIngestion = PublicNetworkAccessType.Enabled,    PublicNetworkAccessForQuery = PublicNetworkAccessType.Enabled,    RetentionInDays = 90,    SamplingPercentage = 100,    DisableIPMasking = false,    ImmediatePurgeDataOn30Days = false,    Tags =    {        { "environment", "production" },        { "application", "mywebapp" }    }};
ArmOperation<ApplicationInsightsComponentResource> operation = await components    .CreateOrUpdateAsync(WaitUntil.Completed, "my-appinsights", data);
ApplicationInsightsComponentResource component = operation.Value;
Console.WriteLine($"Component created: {component.Data.Name}");Console.WriteLine($"Instrumentation Key: {component.Data.InstrumentationKey}");Console.WriteLine($"Connection String: {component.Data.ConnectionString}");

2. Get Connection String and Keys

csharp
ApplicationInsightsComponentResource component = await resourceGroup    .GetApplicationInsightsComponentAsync("my-appinsights");
// Get connection string for SDK configurationstring connectionString = component.Data.ConnectionString;string instrumentationKey = component.Data.InstrumentationKey;string appId = component.Data.AppId;
Console.WriteLine($"Connection String: {connectionString}");Console.WriteLine($"Instrumentation Key: {instrumentationKey}");Console.WriteLine($"App ID: {appId}");

3. Create API Key

csharp
ApplicationInsightsComponentResource component = await resourceGroup    .GetApplicationInsightsComponentAsync("my-appinsights");
ApplicationInsightsComponentApiKeyCollection apiKeys = component.GetApplicationInsightsComponentApiKeys();
// API key for reading telemetryApplicationInsightsApiKeyContent keyContent = new ApplicationInsightsApiKeyContent{    Name = "ReadTelemetryKey",    LinkedReadProperties =    {        $"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{component.Data.Name}/api",        $"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{component.Data.Name}/agentconfig"    }};
ApplicationInsightsComponentApiKeyResource apiKey = await apiKeys    .CreateOrUpdateAsync(WaitUntil.Completed, keyContent);
Console.WriteLine($"API Key Name: {apiKey.Data.Name}");Console.WriteLine($"API Key: {apiKey.Data.ApiKey}"); // Only shown once!

4. Create Web Test (Availability Test)

csharp
WebTestCollection webTests = resourceGroup.GetWebTests();
// URL Ping TestWebTestData urlPingTest = new WebTestData(AzureLocation.EastUS){    Kind = WebTestKind.Ping,    SyntheticMonitorId = "webtest-ping-myapp",    WebTestName = "Homepage Availability",    Description = "Checks if homepage is available",    IsEnabled = true,    Frequency = 300, // 5 minutes    Timeout = 120,   // 2 minutes    WebTestKind = WebTestKind.Ping,    IsRetryEnabled = true,    Locations =    {        new WebTestGeolocation { WebTestLocationId = "us-ca-sjc-azr" },  // West US        new WebTestGeolocation { WebTestLocationId = "us-tx-sn1-azr" },  // South Central US        new WebTestGeolocation { WebTestLocationId = "us-il-ch1-azr" },  // North Central US        new WebTestGeolocation { WebTestLocationId = "emea-gb-db3-azr" }, // UK South        new WebTestGeolocation { WebTestLocationId = "apac-sg-sin-azr" }  // Southeast Asia    },    Configuration = new WebTestConfiguration    {        WebTest = """            <WebTest Name="Homepage" Enabled="True" Timeout="120"                      xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">                <Items>                    <Request Method="GET" Version="1.1" Url="https://myapp.example.com"                              ThinkTime="0" Timeout="120" ParseDependentRequests="False"                              FollowRedirects="True" RecordResult="True" Cache="False"                              ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" />                </Items>            </WebTest>        """    },    Tags =    {        { $"hidden-link:/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/my-appinsights", "Resource" }    }};
ArmOperation<WebTestResource> operation = await webTests    .CreateOrUpdateAsync(WaitUntil.Completed, "webtest-homepage", urlPingTest);
WebTestResource webTest = operation.Value;Console.WriteLine($"Web test created: {webTest.Data.Name}");

5. Create Multi-Step Web Test

csharp
WebTestData multiStepTest = new WebTestData(AzureLocation.EastUS){    Kind = WebTestKind.MultiStep,    SyntheticMonitorId = "webtest-multistep-login",    WebTestName = "Login Flow Test",    Description = "Tests login functionality",    IsEnabled = true,    Frequency = 900, // 15 minutes    Timeout = 300,   // 5 minutes    WebTestKind = WebTestKind.MultiStep,    IsRetryEnabled = true,    Locations =    {        new WebTestGeolocation { WebTestLocationId = "us-ca-sjc-azr" }    },    Configuration = new WebTestConfiguration    {        WebTest = """            <WebTest Name="LoginFlow" Enabled="True" Timeout="300"                     xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">                <Items>                    <Request Method="GET" Version="1.1" Url="https://myapp.example.com/login"                              ThinkTime="0" Timeout="60" />                    <Request Method="POST" Version="1.1" Url="https://myapp.example.com/api/auth"                              ThinkTime="0" Timeout="60">                        <Headers>                            <Header Name="Content-Type" Value="application/json" />                        </Headers>                        <Body>{"username":"testuser","password":"{{TestPassword}}"}</Body>                    </Request>                </Items>            </WebTest>        """    },    Tags =    {        { $"hidden-link:/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/my-appinsights", "Resource" }    }};
await webTests.CreateOrUpdateAsync(WaitUntil.Completed, "webtest-login-flow", multiStepTest);

6. Create Workbook

csharp
WorkbookCollection workbooks = resourceGroup.GetWorkbooks();
WorkbookData workbookData = new WorkbookData(AzureLocation.EastUS){    DisplayName = "Application Performance Dashboard",    Category = "workbook",    Kind = WorkbookSharedTypeKind.Shared,    SerializedData = """    {        "version": "Notebook/1.0",        "items": [            {                "type": 1,                "content": {                    "json": "# Application Performance\n\nThis workbook shows application performance metrics."                },                "name": "header"            },            {                "type": 3,                "content": {                    "version": "KqlItem/1.0",                    "query": "requests\n| summarize count() by bin(timestamp, 1h)\n| render timechart",                    "size": 0,                    "title": "Requests per Hour",                    "timeContext": {                        "durationMs": 86400000                    },                    "queryType": 0,                    "resourceType": "microsoft.insights/components"                },                "name": "requestsChart"            }        ],        "isLocked": false    }    """,    SourceId = component.Id,    Tags =    {        { "environment", "production" }    }};
// Note: Workbook ID should be a new GUIDstring workbookId = Guid.NewGuid().ToString();
ArmOperation<WorkbookResource> operation = await workbooks    .CreateOrUpdateAsync(WaitUntil.Completed, workbookId, workbookData);
WorkbookResource workbook = operation.Value;Console.WriteLine($"Workbook created: {workbook.Data.DisplayName}");

7. Link Storage Account

csharp
ApplicationInsightsComponentResource component = await resourceGroup    .GetApplicationInsightsComponentAsync("my-appinsights");
ComponentLinkedStorageAccountCollection linkedStorage = component.GetComponentLinkedStorageAccounts();
ComponentLinkedStorageAccountData storageData = new ComponentLinkedStorageAccountData{    LinkedStorageAccount = new ResourceIdentifier(        "/subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.Storage/storageAccounts/<storage-account>")};
ArmOperation<ComponentLinkedStorageAccountResource> operation = await linkedStorage    .CreateOrUpdateAsync(WaitUntil.Completed, StorageType.ServiceProfiler, storageData);

8. List and Manage Components

csharp
// List all Application Insights components in resource groupawait foreach (ApplicationInsightsComponentResource component in     resourceGroup.GetApplicationInsightsComponents()){    Console.WriteLine($"Component: {component.Data.Name}");    Console.WriteLine($"  App ID: {component.Data.AppId}");    Console.WriteLine($"  Type: {component.Data.ApplicationType}");    Console.WriteLine($"  Ingestion Mode: {component.Data.IngestionMode}");    Console.WriteLine($"  Retention: {component.Data.RetentionInDays} days");}
// List web testsawait foreach (WebTestResource webTest in resourceGroup.GetWebTests()){    Console.WriteLine($"Web Test: {webTest.Data.WebTestName}");    Console.WriteLine($"  Enabled: {webTest.Data.IsEnabled}");    Console.WriteLine($"  Frequency: {webTest.Data.Frequency}s");}
// List workbooksawait foreach (WorkbookResource workbook in resourceGroup.GetWorkbooks()){    Console.WriteLine($"Workbook: {workbook.Data.DisplayName}");}

9. Update Component

csharp
ApplicationInsightsComponentResource component = await resourceGroup    .GetApplicationInsightsComponentAsync("my-appinsights");
// Update using full data (PUT operation)ApplicationInsightsComponentData updateData = component.Data;updateData.RetentionInDays = 180;updateData.SamplingPercentage = 50;updateData.Tags["updated"] = "true";
ArmOperation<ApplicationInsightsComponentResource> operation = await resourceGroup    .GetApplicationInsightsComponents()    .CreateOrUpdateAsync(WaitUntil.Completed, "my-appinsights", updateData);

10. Delete Resources

csharp
// Delete Application Insights componentApplicationInsightsComponentResource component = await resourceGroup    .GetApplicationInsightsComponentAsync("my-appinsights");await component.DeleteAsync(WaitUntil.Completed);
// Delete web testWebTestResource webTest = await resourceGroup.GetWebTestAsync("webtest-homepage");await webTest.DeleteAsync(WaitUntil.Completed);

Key Types Reference

TypePurpose
ApplicationInsightsComponentResourceApp Insights component
ApplicationInsightsComponentDataComponent configuration
ApplicationInsightsComponentCollectionCollection of components
ApplicationInsightsComponentApiKeyResourceAPI key for programmatic access
WebTestResourceAvailability/web test
WebTestDataWeb test configuration
WorkbookResourceAnalysis workbook
WorkbookDataWorkbook configuration
ComponentLinkedStorageAccountResourceLinked storage for exports

Application Types

TypeEnum Value
Web ApplicationWeb
iOS ApplicationiOS
Java ApplicationJava
Node.js ApplicationNodeJS
.NET ApplicationMRT
OtherOther

Web Test Locations

Location IDRegion
us-ca-sjc-azrWest US
us-tx-sn1-azrSouth Central US
us-il-ch1-azrNorth Central US
us-va-ash-azrEast US
emea-gb-db3-azrUK South
emea-nl-ams-azrWest Europe
emea-fr-pra-edgeFrance Central
apac-sg-sin-azrSoutheast Asia
apac-hk-hkn-azrEast Asia
apac-jp-kaw-edgeJapan East
latam-br-gru-edgeBrazil South
emea-au-syd-edgeAustralia East

Best Practices

  1. Use workspace-based — Workspace-based App Insights is the current standard
  2. Link to Log Analytics — Store data in Log Analytics for better querying
  3. Set appropriate retention — Balance cost vs. data availability
  4. Use sampling — Reduce costs for high-volume applications
  5. Store connection string securely — Use Key Vault or managed identity
  6. Enable multiple test locations — For accurate availability monitoring
  7. Use workbooks — For custom dashboards and analysis
  8. Set up alerts — Based on availability tests and metrics
  9. Tag resources — For cost allocation and organization
  10. Use private endpoints — For secure data ingestion

Error Handling

csharp
using Azure;
try{    ArmOperation<ApplicationInsightsComponentResource> operation = await components        .CreateOrUpdateAsync(WaitUntil.Completed, "my-appinsights", data);}catch (RequestFailedException ex) when (ex.Status == 409){    Console.WriteLine("Component already exists");}catch (RequestFailedException ex) when (ex.Status == 400){    Console.WriteLine($"Invalid configuration: {ex.Message}");}catch (RequestFailedException ex){    Console.WriteLine($"Azure error: {ex.Status} - {ex.Message}");}

SDK Integration

Use the connection string with Application Insights SDK:

csharp
// Program.cs in ASP.NET Corebuilder.Services.AddApplicationInsightsTelemetry(options =>{    options.ConnectionString = configuration["ApplicationInsights:ConnectionString"];});
// Or set via environment variable// APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=...;IngestionEndpoint=...

Related SDKs

SDKPurposeInstall
Azure.ResourceManager.ApplicationInsightsResource management (this SDK)dotnet add package Azure.ResourceManager.ApplicationInsights
Microsoft.ApplicationInsightsTelemetry SDKdotnet add package Microsoft.ApplicationInsights
Microsoft.ApplicationInsights.AspNetCoreASP.NET Core integrationdotnet add package Microsoft.ApplicationInsights.AspNetCore
Azure.Monitor.OpenTelemetry.ExporterOpenTelemetry exportdotnet add package Azure.Monitor.OpenTelemetry.Exporter

Reference Links

来源与署名

来源:microsoft/skills位于.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-applicationinsights-dotnet提交354361d

许可证: MIT

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架