azure-mgmt-applicationinsights-dotnet

安装量: 41
排名: #17555

安装

npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill 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//resourceGroups//providers/Microsoft.OperationalInsights/workspaces/" ) , 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 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 } " ) ; 3. 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! 4. 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 } " ) ; 5. 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 ) ; 6. 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 } " ) ; 7. Link Storage Account ApplicationInsightsComponentResource component = await resourceGroup . GetApplicationInsightsComponentAsync ( "my-appinsights" ) ; ComponentLinkedStorageAccountCollection linkedStorage = component . GetComponentLinkedStorageAccounts ( ) ; ComponentLinkedStorageAccountData storageData = new ComponentLinkedStorageAccountData { LinkedStorageAccount = new ResourceIdentifier ( "/subscriptions//resourceGroups//providers/Microsoft.Storage/storageAccounts/" ) } ; ArmOperation < ComponentLinkedStorageAccountResource

operation

await linkedStorage . CreateOrUpdateAsync ( WaitUntil . Completed , StorageType . ServiceProfiler , storageData ) ; 8. 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 } " ) ; } 9. 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 ) ; 10. 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 When to Use This skill is applicable to execute the workflow or actions described in the overview.

返回排行榜