如何通过 REST 创建 Azure Application Insights 的新实例 API

How to create a new instance of Azure Application Insights through the REST API

我想为 ASP.Net Web 应用程序自动设置 Azure Application Insights 帐户。

我已经安装了 nuget 包:Install-Package Microsoft.Azure.Insights -Pre 现在我正在查看 Microsoft.Azure.Management.Insights.InsightsManagementClient

管理现有帐户有很多操作,除了我找不到创建新帐户的操作。

明确一点:在 https://portal.azure.com 我可以点击 New > Create > Developer Services > Application Insights。我如何在 C# 中做到这一点?

这是 Eric Mattingly 创建的脚本(您需要安装 Azure PowerShell 才能运行):

Output:
App Insights Name =  erimattestapp
IKey =  00000000-0000-0000-0000-000000000000

Script:  
cls

##################################################################
# Set Values
##################################################################

#If running manually, comment this out to before the first execution to login to the Azure Portal
#Add-AzureAccount

#Set the name of the Application Insights Resource
$appInsightsName = "erimatTestApp"

#Set the application name used for the value of the Tag "AppInsightsApp" - http://azure.microsoft.com/en-us/documentation/articles/azure-preview-portal-using-tags/
$applicationTagName = "erimatTestApp"

#Set the name of the Resource Group to use.  By default will use the application Name as a starter
$resourceGroupName = "erimatTestAppRG"

##################################################################
# Create the Resource and Output the name and iKey
##################################################################
#Set the script to Resource Manager - http://azure.microsoft.com/en-us/documentation/articles/powershell-azure-resource-manager/
Switch-AzureMode AzureResourceManager

#Select the azure subscription
Select-AzureSubscription -SubscriptionName "ECIT Preproduction Monitoring"

#Create the App Insights Resource
$resource = New-AzureResource -Name $appInsightsName -ResourceGroupName $resourceGroupName -Tag @{ Name = "AppInsightsApp"; Value = $applicationTagName} -ResourceType "Microsoft.Insights/Components" -Location "Central US" -ApiVersion "2014-08-01"

#Give team owner access - http://azure.microsoft.com/en-us/documentation/articles/role-based-access-control-powershell/
New-AzureRoleAssignment -Mail "ECITTelemetryTeam@microsoft.com" -RoleDefinitionName Owner -Scope $resource.ResourceId | Out-Null

#Display iKey
Write-Host "App Insights Name = " $resource.Properties["Name"]
Write-Host "IKey = " $resource.Properties["InstrumentationKey"]

感谢 Anastasia's I was able to look at the powershell cmdlet implementation 并找出如何在代码中执行此操作:

// initialize resource management client
var resourceManagement = new ResourceManagementClient(this.Credentials);
resourceManagement.Providers.RegisterAsync("microsoft.insights").Result;

// create identity & parameters for create call
var resourceIdentity = new ResourceIdentity(
    "SomeResourceName", // ResourceName
    "microsoft.insights/components", // ResourceType
    "2014-04-01" // Api Version
);
var parameters = new GenericResource {
    Location = 'centralus'
};

// send call off and hope for the best
var result = this.ManagementContext.ResourceManagement.Resources.CreateOrUpdateAsync(
    "SomeResourceGroupName",
    resourceIdentity,
    parameters,
    CancellationToken.None).Result;