如何通过 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;
我想为 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
// 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;