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 從公開儲存庫中收錄這些內容。

檢舉或申請下架