azure-mgmt-applicationinsights-dotnet

Azure.ResourceManager.ApplicationInsights (.NET)

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "azure-mgmt-applicationinsights-dotnet" with this command: npx skills add claudedjale/skillset/claudedjale-skillset-azure-mgmt-applicationinsights-dotnet

Azure.ResourceManager.ApplicationInsights (.NET)

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

Installation

dotnet add package Azure.ResourceManager.ApplicationInsights dotnet add package Azure.Identity

Current Version: v1.0.0 (GA)

API Version: 2022-06-15

Environment Variables

AZURE_SUBSCRIPTION_ID=<your-subscription-id> AZURE_RESOURCE_GROUP=<your-resource-group> AZURE_APPINSIGHTS_NAME=<your-appinsights-component>

Authentication

using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.ApplicationInsights;

ArmClient client = new ArmClient(new DefaultAzureCredential());

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)

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}");

  1. Get Connection String and Keys

ApplicationInsightsComponentResource component = await resourceGroup .GetApplicationInsightsComponentAsync("my-appinsights");

// Get connection string for SDK configuration string 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}");

  1. Create API Key

ApplicationInsightsComponentResource component = await resourceGroup .GetApplicationInsightsComponentAsync("my-appinsights");

ApplicationInsightsComponentApiKeyCollection apiKeys = component.GetApplicationInsightsComponentApiKeys();

// API key for reading telemetry ApplicationInsightsApiKeyContent 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!

  1. Create Web Test (Availability Test)

WebTestCollection webTests = resourceGroup.GetWebTests();

// URL Ping Test WebTestData 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}");

  1. Create Multi-Step Web Test

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);

  1. Create Workbook

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 GUID string 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}");

  1. Link Storage Account

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);

  1. List and Manage Components

// List all Application Insights components in resource group await 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 tests await 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 workbooks await foreach (WorkbookResource workbook in resourceGroup.GetWorkbooks()) { Console.WriteLine($"Workbook: {workbook.Data.DisplayName}"); }

  1. Update Component

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);

  1. Delete Resources

// Delete Application Insights component ApplicationInsightsComponentResource component = await resourceGroup .GetApplicationInsightsComponentAsync("my-appinsights"); await component.DeleteAsync(WaitUntil.Completed);

// Delete web test WebTestResource webTest = await resourceGroup.GetWebTestAsync("webtest-homepage"); await webTest.DeleteAsync(WaitUntil.Completed);

Key Types Reference

Type Purpose

ApplicationInsightsComponentResource

App Insights component

ApplicationInsightsComponentData

Component configuration

ApplicationInsightsComponentCollection

Collection of components

ApplicationInsightsComponentApiKeyResource

API key for programmatic access

WebTestResource

Availability/web test

WebTestData

Web test configuration

WorkbookResource

Analysis workbook

WorkbookData

Workbook configuration

ComponentLinkedStorageAccountResource

Linked storage for exports

Application Types

Type Enum Value

Web Application Web

iOS Application iOS

Java Application Java

Node.js Application NodeJS

.NET Application MRT

Other Other

Web Test Locations

Location ID Region

us-ca-sjc-azr

West US

us-tx-sn1-azr

South Central US

us-il-ch1-azr

North Central US

us-va-ash-azr

East US

emea-gb-db3-azr

UK South

emea-nl-ams-azr

West Europe

emea-fr-pra-edge

France Central

apac-sg-sin-azr

Southeast Asia

apac-hk-hkn-azr

East Asia

apac-jp-kaw-edge

Japan East

latam-br-gru-edge

Brazil South

emea-au-syd-edge

Australia East

Best Practices

  • Use workspace-based — Workspace-based App Insights is the current standard

  • Link to Log Analytics — Store data in Log Analytics for better querying

  • Set appropriate retention — Balance cost vs. data availability

  • Use sampling — Reduce costs for high-volume applications

  • Store connection string securely — Use Key Vault or managed identity

  • Enable multiple test locations — For accurate availability monitoring

  • Use workbooks — For custom dashboards and analysis

  • Set up alerts — Based on availability tests and metrics

  • Tag resources — For cost allocation and organization

  • Use private endpoints — For secure data ingestion

Error Handling

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:

// Program.cs in ASP.NET Core builder.Services.AddApplicationInsightsTelemetry(options => { options.ConnectionString = configuration["ApplicationInsights:ConnectionString"]; });

// Or set via environment variable // APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=...;IngestionEndpoint=...

Related SDKs

SDK Purpose Install

Azure.ResourceManager.ApplicationInsights

Resource management (this SDK) dotnet add package Azure.ResourceManager.ApplicationInsights

Microsoft.ApplicationInsights

Telemetry SDK dotnet add package Microsoft.ApplicationInsights

Microsoft.ApplicationInsights.AspNetCore

ASP.NET Core integration dotnet add package Microsoft.ApplicationInsights.AspNetCore

Azure.Monitor.OpenTelemetry.Exporter

OpenTelemetry export dotnet add package Azure.Monitor.OpenTelemetry.Exporter

Reference Links

Resource URL

NuGet Package https://www.nuget.org/packages/Azure.ResourceManager.ApplicationInsights

API Reference https://learn.microsoft.com/dotnet/api/azure.resourcemanager.applicationinsights

Product Documentation https://learn.microsoft.com/azure/azure-monitor/app/app-insights-overview

GitHub Source https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/applicationinsights/Azure.ResourceManager.ApplicationInsights

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

azure-observability

No summary provided by upstream source.

Repository SourceNeeds Review
General

azure-appconfiguration-java

No summary provided by upstream source.

Repository SourceNeeds Review
General

azure-aigateway

No summary provided by upstream source.

Repository SourceNeeds Review
General

azure-ai-formrecognizer-java

No summary provided by upstream source.

Repository SourceNeeds Review