Application Insights 与 Log Analytics 集成,并将遥测数据发送到公共 Log Analytics 工作区。 此设置提供对Log Analytics功能的完全访问权限,将日志合并到一个位置,并允许统一Azure基于角色的访问控制这消除了跨应用/工作区查询的需求。
增强的功能包括:
本文介绍如何创建和配置 Application Insights 资源。 除了 Application Insights 资源本身,还可以添加各种配置,例如设置 每日 上限和 定价计划。 还可以创建 可用性测试、设置 metric alerts,并使用 Azure Resource Manager 自动执行该过程。
先决条件
其他需求
若要访问 Application Insights Azure CLI命令,首先需要运行:
az extension add -n application-insights
如果不运行 az extension add 命令,则会看到一条错误消息,指出 az : ERROR: az monitor: 'app-insights' is not in the 'az monitor' command group. See 'az monitor --help'。
可以通过Azure CLI、Azure PowerShell和Azure门户中部署Bicep模板。 检查相应的选项卡,了解其他要求。
可以通过 Azure CLI、Azure PowerShell 和 Azure 门户中部署 ARM 模板。 检查相应的选项卡,了解其他要求。
创建 Application Insights 资源
- 登录到 Azure 门户。
- 选择“ 创建资源”。
- 然后选择 Application Insights。
- 输入所有相关信息,然后 审核并创建 Application Insights 资源。
注意
如果在资源创建过程中未连接到现有Log Analytics工作区,则会随 Application Insights 资源一起自动创建新的Log Analytics资源。
创建资源后,可以在 Application Insights “概述 ”窗格中找到相应的工作区信息。
选择蓝色链接文本,转到关联的Log Analytics工作区,可以在其中利用新的统一工作区查询环境。
注意
我们仍为 Application Insights 经典资源查询、工作簿和基于日志的警报提供完全后向兼容性。 若要查询或查看 基于工作区的新表结构或架构,必须先转到Log Analytics工作区。 在“Application Insights”窗格中选择“日志(分析)”访问经典 Application Insights 查询体验。
若要创建基于工作区的 Application Insights 资源,需要Log Analytics工作区。 如果还没有,可以使用以下Azure CLI命令创建一个。
占位符:<resource-group-name>、、 <log-analytics-workspace-name><azure-region-name>
az monitor log-analytics workspace create --resource-group <resource-group-name> --workspace-name <log-analytics-workspace-name> --location <azure-region-name>
若要创建 Application Insights 资源,请在终端中运行以下命令Azure CLI命令。
占位符:<application-insights-resource-name>、、<azure-region-name><resource-group-name>、<log-analytics-workspace-name>
az monitor app-insights component create --app <application-insights-resource-name> --location <azure-region-name> --resource-group <resource-group-name> --workspace <log-analytics-workspace-name>
有关使用 Azure CLI创建 Application Insights 资源和Log Analytics工作区的详细信息,请参阅 Application Insights 的 Azure CLI 文档和 Log Analytics。
若要创建基于工作区的 Application Insights 资源,需要Log Analytics工作区。 如果没有,可以使用以下Azure PowerShell命令创建一个。
占位符:<resource-group-name>、、 <log-analytics-workspace-name><azure-region-name>
New-AzOperationalInsightsWorkspace -ResourceGroupName <resource-group-name> -Name <log-analytics-workspace-name> -Location <azure-region-name>
若要创建 Application Insights 资源,请在终端中运行以下命令Azure PowerShell命令。
占位符:<resource-group-name>、、<application-insights-resource-name><azure-region-name>、<subscription-id>、<log-analytics-workspace-name>
New-AzApplicationInsights -ResourceGroupName <resource-group-name> -Name <application-insights-resource-name> -Location <azure-region-name> -WorkspaceResourceId /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>
有关使用 Azure PowerShell 创建 Application Insights 资源和Log Analytics工作区的详细信息,请参阅 Application Insights 的 Azure PowerShell 文档和 Log Analytics。
若要创建基于工作区的 Application Insights 资源,需要Log Analytics工作区。 如果没有,可以使用以下 REST API 调用创建一个。
占位符:<subscription-id>、、<resource-group-name><log-analytics-workspace-name>、<access-token>、<azure-region-name>
PUT https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>?api-version=2023-09-01
Authorization: Bearer <access-token>
Content-Type: application/json
{
"location": "<azure-region-name>"
}
若要使用 REST API 创建 Application Insights 资源,请使用以下请求。
占位符:<subscription-id>、、<resource-group-name>、<application-insights-resource-name><access-token>、<application-type>、<azure-region-name>、<log-analytics-workspace-name>
PUT https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Insights/components/<application-insights-resource-name>?api-version=2020-02-02
Authorization: Bearer <access-token>
Content-Type: application/json
{
"kind": "<application-type>",
"location": "<azure-region-name>",
"properties": {
"Application_Type": "<application-type>",
"WorkspaceResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>"
}
}
有关使用 REST API 创建 Application Insights 资源和Log Analytics工作区的详细信息,请参阅 Application Insights 的 REST API 文档和 Log Analytics。
下面介绍如何使用 Bicep 模板创建新的 Application Insights 资源。
创建模板
创建新的 .bicep 文件(例如 my-template.bicep),将以下内容复制到其中:
param name string
param type string
param regionId string
param requestSource string
param workspaceResourceId string
resource appInsights 'Microsoft.Insights/components@2020-02-02' = {
name: name
location: regionId
tags: tagsArray
kind: 'other'
properties: {
Application_Type: type
Request_Source: requestSource
WorkspaceResourceId: workspaceResourceId
}
}
创建参数文件
创建新的 .bicepparam 文件(例如 my-parameters.bicepparam),将以下内容复制到其中,并将占位符 <application-insights-resource-name>、 <application-type>、 <azure-region-name>、 <subscription-id>、 <resource-group-name>以及 <log-analytics-workspace-name> 替换为特定值:
using 'my-template.bicep'
param name string = '<application-insights-resource-name>'
param type string = '<application-type>'
param regionId string = '<azure-region-name>'
param requestSource string = 'CustomDeployment'
param workspaceResourceId string = '/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.operationalinsights/workspaces/<log-analytics-workspace-name>'
使用模板创建新的 Application Insights 资源
在 PowerShell 中,使用 $Connect-AzAccount登录到 Azure。
使用 Set-AzContext "<subscription ID>" 将上下文设置为某个订阅。
运行新的部署来新建 Application Insights 资源:
New-AzResourceGroupDeployment -ResourceGroupName <your-resource-group> -TemplateFile my-template.bicep -TemplateParameterFile my-parameters.bicepparam
-
-ResourceGroupName 是您要在其中创建新资源的组。
-
-TemplateFile 必须在自定义参数前出现。
-
-TemplateParameterFile 是参数文件的名称。
可以添加其他参数。 可在模板的参数部分找到说明。
下面介绍如何使用 ARM 模板创建新的 Application Insights 资源。
创建模板
创建新的 .json 文件(例如 ,my-template.json),并将以下内容复制到其中:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string",
"metadata": {
"description": "Name of Application Insights resource."
}
},
"type": {
"type": "string",
"metadata": {
"description": "Type of app you are deploying. This field is for legacy reasons and will not impact the type of Application Insights resource you deploy."
}
},
"regionId": {
"type": "string",
"metadata": {
"description": "Which Azure region to deploy the resource to. This must be a valid Azure regionId."
}
},
"tagsArray": {
"type": "object",
"metadata": {
"description": "See documentation on tags: https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources."
}
},
"requestSource": {
"type": "string",
"metadata": {
"description": "Source of Azure Resource Manager deployment"
}
},
"workspaceResourceId": {
"type": "string",
"metadata": {
"description": "Log Analytics workspace ID to associate with your Application Insights resource."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/components",
"apiVersion": "2020-02-02",
"name": "[parameters('name')]",
"location": "[parameters('regionId')]",
"tags": "[parameters('tagsArray')]",
"kind": "other",
"properties": {
"Application_Type": "[parameters('type')]",
"Request_Source": "[parameters('requestSource')]",
"WorkspaceResourceId": "[parameters('workspaceResourceId')]"
}
}
]
}
注意
有关资源属性的详细信息,请参阅属性值。
不会使用 Flow_Type 和 Request_Source,但出于完整性,已将其包含在此示例中。
创建参数文件
创建新的 .json 文件(例如, my-parameters.json),将以下内容复制到其中,并将占位符 <application-insights-resource-name>、 <application-type>、 <azure-region-name>、 <subscription-id>、 <resource-group-name>以及 <log-analytics-workspace-name> 替换为特定值:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"value": "<application-insights-resource-name>"
},
"type": {
"value": "<application-type>"
},
"regionId": {
"value": "<azure-region-name>"
},
"tagsArray": {
"value": {}
},
"requestSource": {
"value": "CustomDeployment"
},
"workspaceResourceId": {
"value": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.operationalinsights/workspaces/<log-analytics-workspace-name>"
}
}
}
使用模板创建新的 Application Insights 资源
在 PowerShell 中,使用 $Connect-AzAccount登录到 Azure。
使用 Set-AzContext "<subscription ID>" 将上下文设置为某个订阅。
运行新的部署来新建 Application Insights 资源:
New-AzResourceGroupDeployment -ResourceGroupName <your-resource-group> -TemplateFile my-template.json -TemplateParameterFile my-parameters.json
-
-ResourceGroupName 是您要在其中创建新资源的组。
-
-TemplateFile 必须在自定义参数前出现。
-
-TemplateParameterFile 是参数文件的名称。
创建 Application Insights 资源后,可以配置监视。
获取连接字符串
connection string标识要与遥测数据关联的资源。 还可以使用它来修改你的资源用作遥测目标的终结点。 必须复制connection string并将其添加到应用程序的代码或环境变量。
获取 Application Insights 资源的连接字符串:
- 在 Azure 门户中打开 Application Insights 资源。
- 在“概要”部分中的“概述”窗格中,查找连接字符串。
- 如果将鼠标悬停在connection string上,将显示一个图标,用于将其复制到剪贴板。
若要获取connection string,请在终端中运行以下命令Azure CLI命令,并将占位符 <application-insights-resource-name> 和 <resource-group-name> 替换为特定值:
az monitor app-insights component show --app <application-insights-resource-name> --resource-group <resource-group-name> --query connectionString --output tsv
有关 az monitor app-insights component show 命令的详细信息,请参阅 Azure CLI 文档。
若要获取connection string,请在终端中运行以下命令Azure PowerShell命令,并将占位符 <resource-group-name> 和 <application-insights-resource-name> 替换为特定值:
Get-AzApplicationInsights -ResourceGroupName <resource-group-name> -Name <application-insights-resource-name> | Select-Object -ExpandProperty ConnectionString
有关 Get-AzApplicationInsights 命令的详细信息,请参阅 Azure PowerShell 文档。
若要检索 Application Insights 资源的详细信息,请使用以下请求,并将占位符 <subscription-id>、<resource-group-name>、<application-insights-resource-name> 和 <access-token> 替换为您的特定值:
GET https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Insights/components/<application-insights-resource-name>?api-version=2015-05-01
Authorization: Bearer <access-token>
在 JSON 响应中查找 properties.connectionString 字段。
有关使用 REST API 检索有关 Application Insights 资源的信息的详细信息,请参阅 REST API 文档。
使用 OpenTelemetry 进行应用程序监视
若要使用 OpenTelemetry 进行应用程序监视,请安装相应的 Azure Monitor OpenTelemetry 发行版,并将connection string指向新创建的资源。
有关如何使用 OpenTelemetry 设置应用程序监视的信息,请参阅特定于语言的以下文档:
自动化仪器
对于监视服务(如 Azure Functions 和 Azure App Service,可以先创建 Application Insights 资源,然后在启用监视时指向它。 或者,可以在启用过程中创建新的 Application Insights 资源。
修改关联的工作区
创建 Application Insights 资源后,可以修改关联的Log Analytics工作区。
在 Application Insights 资源中,选择 Properties>Change workspace>Log Analytics Workspaces。
若要更改Log Analytics工作区,请在终端中运行以下命令Azure CLI命令,并将占位符<application-insights-resource-name>、<resource-group-name>和<log-analytics-workspace-name>替换为特定值:
az monitor app-insights component update --app <application-insights-resource-name> --resource-group <resource-group-name> --workspace <log-analytics-workspace-name>
有关 az monitor app-insights component update 命令的详细信息,请参阅 Azure CLI 文档。
若要更改Log Analytics工作区,请在终端中运行以下 Azure PowerShell 命令,并将占位符 <resource-group-name>、<application-insights-resource-name>、<subscription-id> 和 <log-analytics-workspace-name> 替换为特定值:
Update-AzApplicationInsights -ResourceGroupName <resource-group-name> -Name <application-insights-resource-name> -WorkspaceResourceId /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>
有关 Update-AzApplicationInsights 命令的详细信息,请参阅 Azure PowerShell 文档。
若要使用 REST API 更改Log Analytics工作区,请使用以下请求并将占位符 <subscription-id>、<resource-group-name>、<application-insights-resource-name>、<access-token>、<azure-region-name> 和 <log-analytics-workspace-name> 替换为特定值:
PATCH https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Insights/components/<application-insights-resource-name>?api-version=2020-02-02
Authorization: Bearer <access-token>
Content-Type: application/json
{
"location": "<azure-region-name>",
"properties": {
"WorkspaceResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>"
}
}
有关使用 REST API 修改关联工作区的详细信息,请参阅 REST API 文档。
若要更改Log Analytics工作区,请将以下代码粘贴到模板中,并将占位符<application-insights-resource-name>、<azure-region-name>、<application-type> 和 <log-analytics-workspace-name> 替换为特定值:
param workspaceResourceId string = '/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>'
resource appInsights 'Microsoft.Insights/components@2020-02-02-preview' = {
name: '<application-insights-resource-name>'
location: '<azure-region-name>'
properties: {
Application_Type: '<application-type>'
WorkspaceResourceId: workspaceResourceId
}
}
若要更改Log Analytics工作区,请将以下代码粘贴到模板中,并将占位符<application-insights-resource-name>、<azure-region-name>、<application-type> 和 <log-analytics-workspace-name> 替换为特定值:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Insights/components",
"apiVersion": "2020-02-02-preview",
"name": "<application-insights-resource-name>",
"location": "<azure-region-name>",
"properties": {
"Application_Type": "<application-type>",
"WorkspaceResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>"
}
}
]
}
导出遥测数据
基于工作区的资源不支持旧版连续导出功能。 请改用 诊断设置。
在 Application Insights 资源中,选择“ 诊断设置>添加诊断设置”。
可以选择要存档到存储帐户的所有表或表子集。 还可以将其流式传输到事件中心。
若要使用诊断设置导出遥测数据,请在终端中运行以下命令Azure CLI命令,并将占位符 c1 /> <、 和 替换为特定值:
az monitor diagnostic-settings create --name <diagnostic-setting-name> --resource <application-insights-resource-name> --resource-group <resource-group-name> --resource-type Microsoft.Insights/components --storage-account <storage-account-name>
此示例命令启用诊断设置,并将 Application Insights 资源的所有日志发送到指定的存储帐户。 若要发送指标,请将 --metrics '[{"category": "AllMetrics", "enabled": true}]' 添加到命令。
有关 az monitor diagnostic-settings create 命令的详细信息,请参阅 Azure CLI 文档。
若要使用诊断设置导出遥测数据,请在终端中运行以下命令Azure PowerShell命令,并将占位符<application-insights-resource-id>、<diagnostic-setting-name>和<storage-account-id>替换为特定值:
Set-AzDiagnosticSetting -ResourceId <application-insights-resource-id> -Name <diagnostic-setting-name> -StorageAccountId <storage-account-id> -Enabled $True
此示例命令启用诊断设置,并将 Application Insights 资源的所有指标和日志发送到指定的存储帐户。
有关 Set-AzDiagnosticSetting 命令的详细信息,请参阅 Azure PowerShell 文档。
若要使用诊断设置将遥测导出到Azure存储帐户,请使用以下请求并将占位符<subscription-id>、<resource-group-name>、<application-insights-resource-name>、<diagnostic-setting-name>、<access-token> 和 <storage-account-name> 替换为特定值:
PUT https://management.chinacloudapi.cn//subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<application-insights-resource-name>/providers/Microsoft.Insights/diagnosticSettings/<diagnostic-setting-name>?api-version=2021-05-01-preview
Authorization: Bearer <access-token>
Content-Type: application/json
{
"properties": {
"storageAccountId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>",
"logs": [
{
"category": "AppRequests",
"enabled": true
}
],
"metrics": [
{
"category": "AllMetrics",
"enabled": true
}
]
}
}
此示例调用启用诊断设置,并将 Application Insights 资源的所有指标和日志发送到指定的存储帐户。
有关使用 REST API 创建诊断设置的详细信息,请参阅 REST API 文档。
若要使用诊断设置导出遥测数据,请将以下代码粘贴到模板中,并将占位符<application-insights-resource-name>、<azure-region-name>、<application-type>、<diagnostic-setting-name>、<subscription-id>、以及<resource-group><storage-account-name>替换为特定值:
param appInsightsName string = '<application-insights-resource-name>'
param location string = '<azure-region-name>'
param applicationType string = '<application-type>'
param diagnosticSettingName string = '<diagnostic-setting-name>'
param storageAccountId string = '/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>'
resource appInsights 'Microsoft.Insights/components@2020-02-02' = {
name: appInsightsName
location: location
kind: applicationType
properties: {
Application_Type: applicationType
}
}
resource diagnosticSetting 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: diagnosticSettingName
scope: appInsights
properties: {
storageAccountId: storageAccountId
logs: [
{
category: 'AppRequests'
enabled: true
}
]
metrics: [
{
category: 'AllMetrics'
enabled: true
}
]
}
}
若要使用诊断设置导出遥测数据,请将以下代码粘贴到模板中,并将占位符<application-insights-resource-name>、<azure-region-name>、<application-type>、<diagnostic-setting-name>、<subscription-id>、以及<resource-group><storage-account-name>替换为特定值:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appInsightsName": {
"type": "string",
"defaultValue": "<application-insights-resource-name>"
},
"location": {
"type": "string",
"defaultValue": "<azure-region-name>"
},
"applicationType": {
"type": "string",
"defaultValue": "<application-type>"
},
"diagnosticSettingName": {
"type": "string",
"defaultValue": "<diagnostic-setting-name>"
},
"storageAccountId": {
"type": "string",
"defaultValue": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
}
},
"resources": [
{
"type": "Microsoft.Insights/components",
"apiVersion": "2020-02-02",
"name": "[parameters('appInsightsName')]",
"location": "[parameters('location')]",
"kind": "[parameters('applicationType')]",
"properties": {
"Application_Type": "[parameters('applicationType')]"
}
},
{
"type": "Microsoft.Insights/diagnosticSettings",
"apiVersion": "2021-05-01-preview",
"name": "[parameters('diagnosticSettingName')]",
"scope": "[resourceId('Microsoft.Insights/components', parameters('appInsightsName'))]",
"properties": {
"storageAccountId": "[parameters('storageAccountId')]",
"logs": [
{
"category": "AppRequests",
"enabled": true
}
],
"metrics": [
{
"category": "AllMetrics",
"enabled": true
}
]
}
}
]
}
设置数据保留期
若要为关联的Log Analytics工作区设置数据保留期,请将以下代码粘贴到模板中,并将占位符<log-analytics-workspace-name>、<azure-region-name>、<retention-period-in-days>替换为特定值:
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' = {
name: '<log-analytics-workspace-name>'
location: '<azure-region-name>'
properties: {
retentionInDays: <retention-period-in-days>
}
}
若要为关联的Log Analytics工作区设置数据保留期,请将以下代码粘贴到模板中,并将占位符<log-analytics-workspace-name>、<azure-region-name>、<retention-period-in-days>替换为特定值:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2020-08-01",
"name": "<log-analytics-workspace-name>",
"location": "<azure-region-name>",
"properties": {
"retentionInDays": <retention-period-in-days>
}
}
]
}
设置每日上限
必须为 Application Insights 和基础Log Analytics工作区单独设置每日上限。 有效的每日上限是两个设置的最小值。
注意
目前,Azure不提供通过Azure CLI为 Application Insights 设置每日上限的方法。
若要更改 Log Analytics 的每日上限,请在终端中运行以下 Azure CLI 命令,并将占位符 <resource-group-name>、<log-analytics-workspace-name> 和 <daily-cap-in-gb> 替换为特定值。
az monitor log-analytics workspace update --resource-group <resource-group-name> --workspace-name <log-analytics-workspace-name> --set workspaceCapping.dailyQuotaGb=<daily-cap-in-gb>
有关 az monitor log-analytics workspace update 命令的详细信息,请参阅 Azure CLI 文档。
若要更改 Application Insights 和 Log Analytics 的每日上限,请在终端中运行以下Azure PowerShell命令,并将占位符替换为特定值。
Application Insights
占位符:<resource-group-name>、、 <application-insights-resource-name><daily-cap-in-gb>
Set-AzApplicationInsightsDailyCap -ResourceGroupName <resource-group-name> -Name <application-insights-resource-name> -DailyCapGB <daily-cap-in-gb>
有关 Set-AzApplicationInsightsDailyCap 命令的详细信息,请参阅 Azure PowerShell 文档。
Log Analytics
占位符:<resource-group-name>、、 <log-analytics-workspace-name><daily-cap-in-gb>
Set-AzOperationalInsightsWorkspace -ResourceGroupName <resource-group-name> -Name <log-analytics-workspace-name> -DailyQuotaGb <daily-cap-in-gb>
有关 Set-AzOperationalInsightsWorkspace 命令的详细信息,请参阅 Azure PowerShell 文档。
注意
目前,Azure不提供使用 Azure CLI 设置 Application Insights 每日上限的方法。
若要更改Log Analytics的每日上限,请使用以下请求并将占位符<subscription-id>、<resource-group-name>、<log-analytics-workspace-name>、<access-token>、<azure-region-name> 和 <daily-cap-in-gb> 替换为特定值:
占位符:
PATCH https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>?api-version=2023-09-01
Authorization: Bearer <access-token>
Content-Type: application/json
{
"location": '<azure-region-name>',
"properties": {
"workspaceCapping": {
"dailyQuotaGb": <daily-cap-in-gb>,
},
}
}
有关设置 Log Analytics 每日上限的详细信息,请参阅 REST API 文档
注意
目前,Azure不提供使用 Bicep 模板为 Application Insights 设置每日上限的方法。
若要设置Log Analytics的每日上限,请将以下代码粘贴到模板中,并将占位符<log-analytics-workspace-name>、<azure-region-name>和<daily-cap-in-gb>替换为特定值:
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' = {
name: '<log-analytics-workspace-name>'
location: '<azure-region-name>'
properties: {
dailyQuotaGb: <daily-cap-in-gb>
}
}
注意
目前,Azure不提供使用 ARM 模板为 Application Insights 设置每日上限的方法。
若要设置Log Analytics的每日上限,请将以下代码粘贴到模板中,并将占位符<log-analytics-workspace-name>、<azure-region-name>和<daily-cap-in-gb>替换为特定值:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2023-09-01",
"name": "<log-analytics-workspace-name>",
"location": "<azure-region-name>",
"properties": {
"workspaceCapping": {
"dailyQuotaGb": <daily-cap-in-gb>
}
}
}
]
}
设置定价计划
可以在关联的Log Analytics工作区中设置 Application Insights 资源的定价计划。 有关可用定价计划的详细信息,请参阅 Azure Monitor 日志成本计算和选项。
若要设置定价计划,请在终端中运行以下Azure CLI命令之一,并将占位符<log-analytics-workspace-name>、<azure-region-name>和(如果适用)<capacity-reservation-in-gb>替换为特定值:
Pay-as-you-go
az monitor log-analytics workspace update --resource-group <resource-group-name> --workspace-name <log-analytics-workspace-name> --set PerGB2018
承诺层
az monitor log-analytics workspace update --resource-group <resource-group-name> --workspace-name <log-analytics-workspace-name> --set CapacityReservation --level <capacity-reservation-in-gb>
有关 az monitor log-analytics workspace update 命令的详细信息,请参阅 Azure CLI 文档。
若要设置定价计划,请在终端中运行以下Azure PowerShell命令之一,并将占位符<log-analytics-workspace-name>、<azure-region-name>和(如果适用)<capacity-reservation-in-gb>替换为特定值:
Pay-as-you-go
Set-AzOperationalInsightsWorkspace -ResourceGroupName <resource-group-name> -Name <log-analytics-workspace-name> -Sku perb2018
承诺层
Set-AzOperationalInsightsWorkspace -ResourceGroupName <resource-group-name> -Name <log-analytics-workspace-name> -Sku capacityreservation -SkuCapacity <capacity-reservation-in-gb>
有关 Set-AzOperationalInsightsWorkspace 命令的详细信息,请参阅 Azure PowerShell 文档。
若要使用 REST API 设置定价计划,请使用以下请求之一,并将占位符<subscription-id>、<resource-group-name>、<log-analytics-workspace-name><access-token>和(如果适用)<capacity-reservation-in-gb>替换为特定值:
Pay-as-you-go
PUT https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>/pricingPlans/current?api-version=2017-10-01
Content-Type: application/json
Authorization: Bearer <access-token>
{
"properties": {
"sku": {
"name": "pergb2018"
}
}
}
承诺层
PUT https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.OperationalInsights/workspaces/<log-analytics-workspace-name>/pricingPlans/current?api-version=2017-10-01
Content-Type: application/json
Authorization: Bearer <access-token>
{
"properties": {
"sku": {
"name": "capacityreservation",
"capacityReservationLevel": <capacity-reservation-in-gb>
}
}
}
有关使用 REST API 设置定价计划的详细信息,请参阅 REST API 文档。
若要使用 Bicep 设置定价计划,请将以下代码粘贴到您的模板中,并将占位符 <log-analytics-workspace-name> 和 <azure-region-name> 替换为您的具体值;对于承诺层,还要替换 <capacity-reservation-in-gb>。
Pay-as-you-go
param workspaceName string = '<log-analytics-workspace-name>'
param workspaceRegion string = '<azure-region-name>'
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' = {
name: workspaceName
location: workspaceRegion
properties: {
sku: {
name: 'pergb2018'
}
}
}
承诺层
param workspaceName string = '<log-analytics-workspace-name>'
param workspaceRegion string = '<azure-region-name>'
param capacityReservationLevel int = '<capacity-reservation-in-gb>'
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' = {
name: workspaceName
location: workspaceRegion
properties: {
sku: {
name: 'capacityreservation'
capacityReservationLevel: capacityReservationLevel
}
}
}
有关使用 Bicep 更新 Microsoft.OperationalInsights/workspaces 资源的详细信息,请参阅 模板文档。
若要使用 ARM 模板设置定价计划,请将以下代码粘贴到模板中,并用你的具体值替换占位符 <log-analytics-workspace-name> 和 <azure-region-name>。对于承诺层次,也需替换 <capacity-reservation-in-gb>。
Pay-as-you-go
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string",
"defaultValue": "<log-analytics-workspace-name>"
},
"workspaceRegion": {
"type": "string",
"defaultValue": "<azure-region-name>"
}
},
"resources": [
{
"name": "[parameters('workspaceName')]",
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2020-08-01",
"location": "[parameters('workspaceRegion')]",
"properties": {
"sku": {
"name": "pergb2018"
}
}
}
]
}
承诺层
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string",
"defaultValue": "<log-analytics-workspace-name>"
},
"workspaceRegion": {
"type": "string",
"defaultValue": "<azure-region-name>"
},
"capacityReservationLevel": {
"type": "int",
"defaultValue": <capacity-reservation-in-gb>
}
},
"resources": [
{
"name": "[parameters('workspaceName')]",
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2020-08-01",
"location": "[parameters('workspaceRegion')]",
"properties": {
"sku": {
"name": "capacityreservation",
"capacityReservationLevel": "[parameters('capacityReservationLevel')]"
}
}
}
]
}
有关使用 ARM 模板更新 Microsoft.OperationalInsights/workspaces 资源的详细信息,请参阅 模板文档。
禁用 IP 掩码
默认情况下,Application Insights 不会存储 IP 地址。 若要了解如何禁用 IP 掩码,请参阅 地理位置和 IP 地址处理。
创建其他资源
创建可用性测试
若要使用默认设置创建标准可用性测试,请在终端中运行以下 Azure CLI 命令,并将占位符 <resource-group-name>、<azure-region-name>、<web-test-name>、<url>、<subscription-id> 和 <application-insights-resource-name> 替换为特定值:
az monitor app-insights web-test create --resource-group <resource-group-name> \
--location <azure-region-name> \
--web-test-kind standard \
--name <web-test-name> \
--defined-web-test-name <web-test-name> \
--request-url <url> \
--retry-enabled true \
--ssl-check true \
--ssl-lifetime-check 7 \
--frequency 300 \
--locations Id="us-ca-sjc-azr" \
--locations Id="apac-sg-sin-azr" \
--locations Id="us-il-ch1-azr" \
--locations Id="us-va-ash-azr" \
--locations Id="emea-au-syd-edge" \
--http-verb GET \
--timeout 120 \
--expected-status-code 200 \
--enabled true \
--tags hidden-link:/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<application-insights-resource-name>=Resource
有关 az monitor app-insights web-test create 命令的详细信息,请参阅 Azure CLI 文档。
注意
Web 测试区域(-location)与地理位置(-locations)不同,后者可以选择多个(注意复数形式)。
-location是指创建和托管 Web 测试的Azure区域,而 -locations是指从中执行 Web 测试的地理位置或位置。 有关所有地理位置的完整列表,请参阅 Application Insights 可用性测试。
若要使用默认设置创建标准可用性测试,请在终端中运行以下命令 Azure PowerShell,并将占位符 <resource-group-name>、<azure-region-name>、<web-test-name>、<url>、<subscription-id> 和 <application-insights-resource-name> 替换为特定值:
$geoLocation = @()
$geoLocation += New-AzApplicationInsightsWebTestGeolocationObject -Location "us-ca-sjc-azr"
$geoLocation += New-AzApplicationInsightsWebTestGeolocationObject -Location "apac-sg-sin-azr"
$geoLocation += New-AzApplicationInsightsWebTestGeolocationObject -Location "us-il-ch1-azr"
$geoLocation += New-AzApplicationInsightsWebTestGeolocationObject -Location "us-va-ash-azr"
$geoLocation += New-AzApplicationInsightsWebTestGeolocationObject -Location "emea-au-syd-edge"
New-AzApplicationInsightsWebTest -ResourceGroupName <resource-group-name> `
-Location <azure-region-name> `
-Name <web-test-name> `
-TestName <web-test-name> `
-Kind standard `
-RequestUrl <url> `
-RetryEnabled `
-RuleSslCheck `
-RuleSslCertRemainingLifetimeCheck 7 `
-Frequency 300 `
-GeoLocation $geoLocation `
-RequestHttpVerb GET `
-Timeout 120 `
-RuleExpectedHttpStatusCode 200 `
-Enabled `
-Tag @{"hidden-link:/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<application-insights-resource-name>" = "Resource"}
有关 New-AzApplicationInsightsWebTest 命令的详细信息,请参阅 Azure PowerShell 文档。
注意
Web 测试区域(-Location)不同于可以选择多个区域的地理位置(-GeoLocation)。
-Location是指创建和托管 Web 测试的Azure区域,而 -GeoLocation是指执行 Web 测试的地理位置或位置。 有关所有地理位置的完整列表,请参阅 Application Insights 可用性测试。
若要使用 REST API 使用默认设置创建标准可用性测试,请使用以下请求,并将占位符<subscription-id>、<resource-group-name>、<application-insights-resource-name>、<web-test-name>、<access-token>以及<azure-region-name><url>替换为特定值:
PUT https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<application-insights-resource-name>/webtests/<web-test-name>?api-version=2021-08-01
Content-Type: application/json
Authorization: Bearer <access-token>
{
"location": "<azure-region-name>",
"properties": {
"Name": "<web-test-name>",
"SyntheticMonitorId": "<web-test-name>",
"Enabled": true,
"Frequency": 300,
"Timeout": 120,
"Kind": "standard",
"RetryEnabled": true,
"Request": {
"RequestUrl": "<url>",
"HttpVerb": "GET"
},
"ValidationRules": {
"ExpectedHttpStatusCode": 200,
"SslCheck": true,
"SslCertRemainingLifetimeCheck": 7
},
"Locations": [
{
"Id": "us-ca-sjc-azr"
},
{
"Id": "apac-sg-sin-azr"
},
{
"Id": "us-il-ch1-azr"
},
{
"Id": "us-va-ash-azr"
},
{
"Id": "emea-au-syd-edge"
}
]
},
"Tags": {
"hidden-link:/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<application-insights-resource-name>": "Resource"
}
}
注意
Web 测试区域(-location)不同于地理位置(-Locations),后者可以选择多个(请注意复数形式)。
-location是指创建和托管 Web 测试的Azure区域,而 -Locations是指执行 Web 测试的地理位置或位置。 有关所有地理位置的完整列表,请参阅 Application Insights 可用性测试。
若要详细了解如何使用 REST API 创建和配置 Web 测试,请参阅 REST API 文档。
若要使用 Bicep 创建具有默认设置的标准可用性测试,请将以下代码添加到模板,并将占位符 <web-test-name>、<azure-region-name>、<subscription-id>、<resource-group-name>、<application-insights-resource-name> 和 <url> 替换为特定值:
resource webTest 'microsoft.insights/webtests@2022-06-15' = {
name: '<web-test-name>'
location: '<azure-region-name>'
tags: {
'hidden-link:/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<application-insights-resource-name>': 'Resource'
}
properties: {
SyntheticMonitorId: '<web-test-name>'
Name: '<web-test-name>'
Enabled: true
Frequency: 300
Timeout: 120
Kind: 'standard'
RetryEnabled: true
Locations: [
{
Id: 'us-ca-sjc-azr'
}
{
Id: 'apac-sg-sin-azr'
}
{
Id: 'us-il-ch1-azr'
}
{
Id: 'us-va-ash-azr'
}
{
Id: 'emea-au-syd-edge'
}
]
Request: {
RequestUrl: '<url>'
HttpVerb: 'GET'
}
ValidationRules: {
ExpectedHttpStatusCode: 200
SSLCheck: true
SSLCertRemainingLifetimeCheck: 7
}
}
}
注意
Web 测试区域(location)不同于可以选择多个区域的地理位置(Locations)。
location是指创建和托管 Web 测试的Azure区域,而 Locations是指执行 Web 测试的地理位置或位置。 有关所有地理位置的完整列表,请参阅 Application Insights 可用性测试。
有关使用 Bicep 创建可用性测试的详细信息,请参阅 Microsoft.Insights webtests。
若要使用 ARM 模板创建具有默认设置的标准可用性测试,请将以下代码添加到模板中,并将占位符<web-test-name>、<azure-region-name>、<subscription-id>、<resource-group-name>以及<application-insights-resource-name><url>替换为特定值:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "microsoft.insights/webtests",
"apiVersion": "2022-06-15",
"name": "<web-test-name>",
"location": "<azure-region-name>",
"tags": {
"hidden-link:/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<application-insights-resource-name>": "Resource"
},
"properties": {
"SyntheticMonitorId": "<web-test-name>",
"Name": "<web-test-name>",
"Enabled": true,
"Frequency": 300,
"Timeout": 120,
"Kind": "standard",
"RetryEnabled": true,
"Locations": [
{
"Id": "us-ca-sjc-azr"
},
{
"Id": "apac-sg-sin-azr"
},
{
"Id": "us-il-ch1-azr"
},
{
"Id": "us-va-ash-azr"
},
{
"Id": "emea-au-syd-edge"
}
],
"Request": {
"RequestUrl": "<url>",
"HttpVerb": "GET"
},
"ValidationRules": {
"ExpectedHttpStatusCode": 200,
"SSLCheck": true,
"SSLCertRemainingLifetimeCheck": 7
}
}
}
]
}
注意
Web 测试区域(location)不同于可以选择多个区域的地理位置(Locations)。
location是指创建和托管 Web 测试的Azure区域,而 Locations是指执行 Web 测试的地理位置或位置。 有关所有地理位置的完整列表,请参阅 Application Insights 可用性测试。
有关使用 ARM 模板创建可用性测试的详细信息,请参阅 Microsoft.Insights Webtests。
添加指标警报
小窍门
每个 Application Insights 资源都附带了现成可用的指标。 如果不同的组件向同一个 Application Insights 资源报告,那么基于这些指标发出警报可能没有意义。
若要自动创建指标警报,请参阅指标警报模板一文。
创建更多 Application Insights 资源
应该部署多少个 Application Insights 资源?
部署 Web 应用程序的下一个版本时,不希望将新版本和已发布的版本中的 Application Insights 遥测混合使用。
为了避免混淆,请使用单独的连接字符串将来自不同开发阶段的遥测数据发送到单独的 Application Insights 资源。
如果你的系统是 Azure Cloud Services 的实例,则还有另一种方法来设置单独的连接字符串。
何时使用单个 Application Insights 资源
将单个 Application Insights 资源用于:
- 为部署在一起的应用程序(通常由同一团队开发和管理)简化 DevOps/ITOps 管理。
- 将响应时间和故障率等关键性能指标集中在一个仪表板中(默认情况下)。 如有必要,按指标资源管理器中的角色名分段。
- 当无需在应用程序组件之间进行不同的Azure基于角色的访问控制管理时。
- 当跨组件有相同的指标警报条件、连续导出和计费/配额管理都足够时。
- 一个 API 密钥可以平等地访问所有组件的数据且 10 个 API 密钥就能满足所有组件的需求。
- 可以对所有角色使用相同的智能检测和工作项集成设置时。
注意
如果要整合多个 Application Insights 资源,可以将现有的应用程序组件指向新的、合并的 Application Insights 资源。 存储在旧资源中的遥测数据不会传输到新资源。 仅当新资源中有了足够的遥测数据时才会删除旧资源,这样能保证业务连续性。
其他注意事项
若要激活门户体验,请添加自定义代码以将有意义的值分配给 Cloud_RoleName 属性。 如果没有这些值,门户功能将不起作用。
对于Azure Service Fabric应用程序和经典云服务,SDK 通过从Azure角色环境读取来自动配置服务。 对于不同类型的应用,通常需要显式地进行设置。
实时指标无法按角色名称拆分数据。
版本和发行版本跟踪
发布应用程序的新版本时,希望能够将遥测数据与不同的版本分开。 可以设置 应用程序版本 属性,以便筛选 搜索 和 指标资源管理器 结果。
可通过多种不同的方法设置“应用程序版本”属性。
选项 1: 直接设置版本
将行 telemetryClient.Context.Component.Version = typeof(MyProject.MyClass).Assembly.GetName().Version; 添加到应用程序的初始化代码。
若要确保以一致的方式设置所有 TelemetryClient 实例,请在遥测初始化表达式中将该行换行。
Option 2: 在 BuildInfo.config 中设置版本(仅限 ASP.NET)
Application Insights Web 模块从 BuildLabel 节点中选取版本。 在项目中包括此文件,并记得在 Solution Explorer 中设置 Copy Always 属性。
<?xml version="1.0" encoding="utf-8"?>
<DeploymentEvent xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/DeploymentEvent/2013/06">
<ProjectName>AppVersionExpt</ProjectName>
<Build type="MSBuild">
<MSBuild>
<BuildLabel kind="label">1.0.0.2</BuildLabel>
</MSBuild>
</Build>
</DeploymentEvent>
在Microsoft Build引擎中自动生成 BuildInfo.config。 将以下行添加到 .csproj 文件:
<PropertyGroup>
<GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile>
<IncludeServerNameInBuildInfo>true</IncludeServerNameInBuildInfo>
</PropertyGroup>
此步骤会生成一个名为 yourProjectName 的文件。 发布过程会将此文件重命名为 BuildInfo.config。
生成标签在使用 Visual Studio 进行生成时包含占位符(*AutoGen_...*)。 使用 Microsoft Build 引擎生成时,占位符将填充正确的版本号。
若要允许Microsoft Build引擎生成版本号,请设置 1.0.* 中的 AssemblyReference.cs 等版本。
版本注释
如果使用Azure DevOps,在发布新版本时,可以在图表中添加批注标记。
自动化资源创建过程
可以通过将 Bicep 或 JSON 模板与 Azure Resource Manager 结合使用来自动执行资源创建过程。 可以将多个资源打包在一起,以在一个部署中创建它们。 例如,可以使用可用性测试、指标警报和诊断设置创建 Application Insights 资源,以便将遥测数据发送到Azure Storage帐户。
在 Azure 门户中生成模板
可以从现有资源生成模板。
仅 Application Insights
- 转到 Azure 门户中的 Application Insights 资源。
- 在左侧导航栏的“自动化”下打开“导出”模板。
- (可选):若要使用自己的参数,请取消选中 “包括”参数。
-
下载模板文件或直接在Azure门户中部署它。
多个资源
- 转到你的 Application Insights 资源的资源组。
- 在“ 概述 ”窗格中,标记要包含在模板中的所有资源,然后选择顶部导航栏中的 “导出模板 ”。
- (可选):若要使用自己的参数,请取消选中 “包括”参数。
-
下载模板文件或直接在Azure门户中部署它。
从头开始创建模板
若要了解如何从头开始创建 ARM 模板,请访问 ARM 模板文档 ,其中包含用于 创建模板、 添加资源、 添加参数等的教程。
Application Insights、可用性测试、指标警报、诊断设置和其他资源可以在我们的Azure 资源参考文档的监视器>洞察>节点中找到。
后续步骤