Skip to main content

azure-mgmt-applicationinsights-dotnet

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",...

الانتقال إلى التثبيت

معلومات المصدر

المستودع
JantonioFC/skillsbank
آخر نشاط في المصدر
٤ أغسطس ٢٠٢٦ في ٠٣:٠٧
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٦
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
azure-mgmt-applicationinsights-dotnet
description
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",...
package
Azure.ResourceManager.ApplicationInsights
risk
safe
source
community
license
MIT
# Azure.ResourceManager.ApplicationInsights (.NET) Azure Resource Manager SDK for managing Application Insights resources for application performance monitoring. ## Installation ```bash dotnet add package Azure.ResourceManager.ApplicationInsights dotnet add package Azure.Identity ``` **Current Version**: v1.0.0 (GA) **API Version**: 2022-06-15 ## Environment Variables ```bash AZURE_SUBSCRIPTION_ID=<your-subscription-id> AZURE_RESOURCE_GROUP=<your-resource-group> AZURE_APPINSIGHTS_NAME=<your-appinsights-component> ``` ## Authentication ```csharp 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) ```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 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 ```csharp 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) ```csharp 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 ```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 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 ```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 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 ```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 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 | |-------------|--------|
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub