Log Analytics 工作区以两种状态保留数据:
-
分析保留期:在此状态下,数据可用于监视、故障排除和准实时分析。
-
长期保留:在此低成本状态下,可通过 搜索作业获取分析和基本数据。 辅助数据在其总保留期内仍可查询。
本文介绍日志分析工作区如何保留数据,以及如何管理工作区中各表的数据保留。
分析、长期保留率和总保留率
默认情况下,Log Analytics 工作区中的所有表会将数据保留 30 天,但默认保留时间为 90 天的日志表除外。 属于 Analytics 计划的表使您的数据在此分析保留期内可用于实时查询。 所有表计划都可以通过查询或搜索作业检索存储的数据,并且数据可用于基于表计划的可视化效果、警报和其他功能和服务。
将采用 Analytics 计划的表的分析保留期延长至最长两年。 基本计划表的查询期固定为 30 天,而辅助计划表可以查询总保留期。 但是,基本表和辅助表都有其他注意事项。 有关详细信息,请参阅 基本表和辅助表中的查询数据。
注意
可以使用 API 或 CLI 将 Analytics 表的分析保留期减少到 4 天。 但是,由于引入价格中包含 31 天的分析保留期,因此将保留期降低到 31 天以下不会降低成本。
若要将同一表中的数据保留超过默认保留期,请将表的总保留期延长至最多 12 年。 分析数据在 Analytics 保留期结束后,会在配置的总保留期的剩余时间内继续保留在表中。 当查询不包含辅助表时,运行搜索作业,以检索分析保留期后的分析数据或 30 多天前的基本数据。 辅助数据在其总保留期内仍可查询。
保留期修改的工作原理
缩短表的总保留期时,Azure Monitor 日志会等待 30 天,然后删除数据,因此,如果配置中出现错误,你可以还原更改并避免数据丢失。
增加总保留期时,新的保留期将应用于已引入表中且尚未删除的所有数据。
当更改包含现有数据的表的长期保留期设置时,更改会立即生效。
Example:
- 你有一个现有的 Analytics 表,其保留期为 180 天,并且没有长期保留。
- 将分析保留期更改为 90 天,而不会更改总保留期 180 天。
- Azure Monitor 会自动将剩余的 90 天总保留期视为低成本的长期保留,这样,超过 90-180 天的数据就不会丢失。
所需的权限
| 操作 |
所需的权限 |
| 为 Log Analytics 工作区中的 Analytics 表配置默认分析保留期 |
对 Log Analytics 工作区具备 Microsoft.OperationalInsights/workspaces/write 和 microsoft.operationalinsights/workspaces/tables/write 权限,例如由 Log Analytics Contributor 内置角色 所提供的权限。 |
| 按表获取 Log Analytics 工作区的保留期设置 |
对 Log Analytics 工作区具有 Microsoft.OperationalInsights/workspaces/tables/read 权限,该权限由 Log Analytics 读者内置角色 提供,例如。 |
Log Analytics 工作区中 Analytics 表的默认保留期为 30 天。 通过修改工作区级数据保留设置,将 Analytics 表的默认分析周期更改为两年。 基本表和辅助表只有一个总保持期,默认情况下为 30 天。
更改默认工作区级别的数据保留期设置会自动影响工作区中仍应用了默认设置的所有分析表。 如果已更改特定表的分析保留期,则更改工作区默认数据保留设置时,该表不会受到影响。
重要
保留期为 30 天的工作区可能会将数据保留 31 天。 如果需要将数据保留 30 天以符合隐私策略,请使用 API 将默认工作区保留期配置为 30 天,并将工作区属性更新 immediatePurgeDataOn30Days 为 true。 使用 工作区 - 更新 API 进行此操作。
以下示例将工作区的默认分析保留期设置为 30 天。 REST 示例还支持在 30 天后立即删除。
若要在 Log Analytics 工作区中设置 Analytics 表的默认分析保留期,请执行以下作:
从 Azure 门户的“Log Analytics 工作区”菜单中选择你的工作区。
在 “设置” 部分中,选择左窗格中的 “使用情况”和“估计成本 ”。
选择页面顶部的数据保留。
移动滑块以增加或减少天数,然后选择“确定”。
以下Azure CLI示例使用az monitor log-analytics workspace update命令。 它使用 --retention-time 参数设置默认分析保留期。
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
retentionInDays="30"
# Update the default workspace retention
az monitor log-analytics workspace update \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--retention-time "$retentionInDays"
注意
Azure CLI命令使用当前 CLI 上下文中的Azure 资源管理器终结点,因此无需在命令语法中指定 management.chinacloudapi.cn。
以下Azure PowerShell示例使用 Set-AzOperationalInsightsWorkspace cmdlet。 它使用 -RetentionInDays 参数设置默认分析保留期。
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$retentionInDays = 30
# Define parameters for Set-AzOperationalInsightsWorkspace
$setAzOperationalInsightsWorkspaceParams = @{
ResourceGroupName = $resourceGroupName
Name = $workspaceName
RetentionInDays = $retentionInDays
}
# Update the default workspace retention
Set-AzOperationalInsightsWorkspace @setAzOperationalInsightsWorkspaceParams
注意
Azure PowerShell cmdlet 使用当前 Az 上下文中的Azure 资源管理器终结点,因此无需在 cmdlet 语法中指定management.chinacloudapi.cn。
以下 REST 示例使用 Workspaces - Update REST API 操作。 它设置 Log Analytics 工作区中 Analytics 表的默认分析保留期。
它还可确保在 30 天后立即删除数据,并且不可恢复。
PATCH https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}?api-version={apiVersion}
Authorization: Bearer {accessToken}
Content-Type: application/json
{
"properties": {
"retentionInDays": 30,
"features": {
"immediatePurgeDataOn30Days": true
}
}
}
请求正文属性:
请求正文包含下表中的值。
| 名称 |
类型 |
说明 |
properties.retentionInDays |
整数 |
工作区数据保留期(以天为单位)。 允许的值根据每个定价计划确定。 请参阅定价层文档了解详细信息。 |
properties.features.immediatePurgeDataOn30Days |
布尔 |
指示数据是否在 30 天后立即删除且不可恢复的标志。 仅当工作区保留期设置为 30 天时适用。 |
响应示例:
状态代码:200
{
"properties": {
"retentionInDays": 30,
"features": {
"legacy": 0,
"searchVersion": 1,
"immediatePurgeDataOn30Days": true
}
}
}
注意
Bicep 部署是创建或更新操作,而不是局部 PATCH 操作。 对于仅保留更新,请使用Azure CLI、Azure PowerShell或 REST 选项卡。
以下Bicep示例使用Microsoft.OperationalInsights/workspaces资源类型。
此模板包括工作区资源声明及其默认保留设置。 在使用它更新现有工作区之前:
- 将
workspaceName 和 azureRegion 设置为现有工作区的名称和区域。
- 使用参数
retentionInDays 设置为 properties.retentionInDays30. 不要仅用此成员替换现有的 properties 对象。
- 保留工作区的标识、SKU、位置、标记、网络设置、所有其他属性以及维护定义中的现有数组条目。
- 保持
properties.features.immediatePurgeDataOn30Days 不变。 REST 选项卡显示单独的即时删除行为。
- 不要在现有工作区上部署此示例不变。 它显示保留设置,而不是工作区的完整配置。
param workspaceName string = '<WorkspaceName>'
param azureRegion string = '<AzureRegion>'
param retentionInDays int = 30
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@<ApiVersion>' = {
name: workspaceName
location: azureRegion
properties: {
retentionInDays: retentionInDays
}
}
注意
ARM 模板部署是创建或更新操作,而不是部分 PATCH 操作。 对于仅保留更新,请使用Azure CLI、Azure PowerShell或 REST 选项卡。
以下 ARM 模板示例使用 Microsoft.OperationalInsights/workspaces 资源类型。
此模板包括工作区资源声明及其默认保留设置。 在使用它更新现有工作区之前:
- 将
workspaceName 和 azureRegion 设置为现有工作区的名称和区域。
- 使用参数
retentionInDays 设置为 properties.retentionInDays30. 不要仅用此成员替换现有的 properties 对象。
- 保留工作区的标识、SKU、位置、标记、网络设置、所有其他属性以及维护定义中的现有数组条目。
- 保持
properties.features.immediatePurgeDataOn30Days 不变。 REST 选项卡显示单独的即时删除行为。
- 不要在现有工作区上部署此示例不变。 它显示保留设置,而不是工作区的完整配置。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string",
"defaultValue": "<WorkspaceName>"
},
"azureRegion": {
"type": "string",
"defaultValue": "<AzureRegion>"
},
"retentionInDays": {
"type": "int",
"defaultValue": 30
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "<ApiVersion>",
"name": "[parameters('workspaceName')]",
"location": "[parameters('azureRegion')]",
"properties": {
"retentionInDays": "[parameters('retentionInDays')]"
}
}
]
}
默认情况下,具有 Analytics 数据计划的所有表都继承 Log Analytics 工作区的默认保留设置 ,并且没有长期保留。 可以将分析表的数据保留期延长至最多 730 天,但这会产生额外费用。
若要为采用任何数据计划的表增加长期保留期,请将总保留期设置为最多 12 年(4,383 天)。
以下示例将 Analytics 表的分析保留期设置为 30 天,并将总保留期设置为两年(730 天),其中 700 天为长期保留期。 对于基本表和辅助表,仅设置总保留期; retentionInDays 为只读。
若要在 Azure 门户中修改表的保留期设置,请执行以下操作:
从日志分析工作区菜单中,选择表。
“表格”屏幕列出了工作区中的所有表格。
选择要配置的表的上下文菜单,然后选择“管理表”。
在表配置屏幕的 数据保留设置 部分配置分析数据保留和总数据保留设置。
以下Azure CLI示例使用az monitor log-analytics workspace table update命令。 它使用 --retention-time 和 --total-retention-time 参数修改表的保留设置。
设置自定义保留期:
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName="<TableName>"
retentionInDays="30"
totalRetentionInDays="730"
# Update the table retention settings
az monitor log-analytics workspace table update \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName" \
--retention-time "$retentionInDays" \
--total-retention-time "$totalRetentionInDays"
重置为工作区默认值:
若要继承工作区的分析保留期并将总保留期设置为同一时间段,请同时设置 --retention-time 和 --total-retention-time 设置为 -1。 这会删除表的单独长期保留期;它不会将总保留期设置为零。
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName="<TableName>"
retentionInDays="-1"
totalRetentionInDays="-1"
# Update the table retention settings
az monitor log-analytics workspace table update \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName" \
--retention-time "$retentionInDays" \
--total-retention-time "$totalRetentionInDays"
注意
Azure CLI命令使用当前 CLI 上下文中的Azure 资源管理器终结点,因此无需在命令语法中指定 management.chinacloudapi.cn。
以下Azure PowerShell示例使用 Update-AzOperationalInsightsTable cmdlet。 它使用 -RetentionInDays 和 -TotalRetentionInDays 参数修改表的保留设置。
设置自定义保留期:
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName = "<TableName>"
$retentionInDays = 30
$totalRetentionInDays = 730
# Define parameters for Update-AzOperationalInsightsTable
$updateAzOperationalInsightsTableParams = @{
ResourceGroupName = $resourceGroupName
WorkspaceName = $workspaceName
TableName = $tableName
RetentionInDays = $retentionInDays
TotalRetentionInDays = $totalRetentionInDays
}
# Update the table retention settings
Update-AzOperationalInsightsTable @updateAzOperationalInsightsTableParams
重置为工作区默认值:
若要继承工作区的分析保留期并将总保留期设置为同一时间段,请同时设置 -RetentionInDays 和 -TotalRetentionInDays 设置为 -1。 这会删除表的单独长期保留期;它不会将总保留期设置为零。
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName = "<TableName>"
$retentionInDays = -1
$totalRetentionInDays = -1
# Define parameters for Update-AzOperationalInsightsTable
$updateAzOperationalInsightsTableParams = @{
ResourceGroupName = $resourceGroupName
WorkspaceName = $workspaceName
TableName = $tableName
RetentionInDays = $retentionInDays
TotalRetentionInDays = $totalRetentionInDays
}
# Update the table retention settings
Update-AzOperationalInsightsTable @updateAzOperationalInsightsTableParams
注意
Azure PowerShell cmdlet 使用当前 Az 上下文中的Azure 资源管理器终结点,因此无需在 cmdlet 语法中指定management.chinacloudapi.cn。
以下 REST 示例使用 Tables - Update REST API 操作。 它修改特定表的保留设置。
可以使用 PUT 或 PATCH,这二者具有以下差异:
- 如果你未设置非 null 值,PUT API 会将 和
retentionInDays 设置为默认值。
- PATCH API 不会更改 或
retentionInDays 值(如果你未指定值)。
PATCH https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}?api-version={apiVersion}
Authorization: Bearer {accessToken}
Content-Type: application/json
{
"properties": {
"retentionInDays": 30,
"totalRetentionInDays": 730
}
}
请求正文属性:
请求正文包含下表中的值。
| 名称 |
类型 |
说明 |
properties.retentionInDays |
整数 |
分析保留期,从 4 到 730 天。 将其设置为 -1 以继承工作区保留期。 此属性是基本表和辅助表的只读属性。 从 PATCH 请求中省略它以使其保持不变。 |
properties.totalRetentionInDays |
整数 |
总保留期,包括长期保留。 REST API 范围为 4 到 4,383 天。 将其设置为 -1 以使用 retentionInDays,且不单独设置长期保留期。 从 PATCH 请求中省略它以使其保持不变。 |
示例响应:
状态代码:200
{
"properties": {
"retentionInDays": 30,
"totalRetentionInDays": 730,
"archiveRetentionInDays": 700
}
}
注意
Bicep 部署是创建或更新操作,而不是局部 PATCH 操作。 保留现有表的架构、计划和其他设置。 使用 REST 选项卡执行仅用于保留设置的 PATCH。
以下Bicep示例使用Microsoft.OperationalInsights/workspaces/tables资源类型。
此模板包括表资源声明及其保留设置。 在使用它更新现有表之前:
- 将
workspaceName 和 tableName 设置为现有工作区和表的名称。
- 对于 Analytics 表,请仅按如下所示编辑
properties.retentionInDays 和 properties.totalRetentionInDays。
- 对于基本表和辅助表,请从此示例中删除
properties.retentionInDays 及其参数。 对于这些套餐,只能设置 properties.totalRetentionInDays;retentionInDays 为只读。
- 保留表的架构定义,包括你所维护的定义中的所有列数组条目、计划以及其他所有设置。 不要仅用包含保留成员的对象替换现有的
properties 对象。
- 不要在现有表上部署此示例不变。 其中不包括表格的全部配置。
- 不要更新现有工作区。
- 将父工作区保留为
existing 引用。 不要将您正在更新的表格标记为 existing。
param workspaceName string = '<WorkspaceName>'
param tableName string = '<TableName>'
param retentionInDays int = 30
param totalRetentionInDays int = 730
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@<ApiVersion>' existing = {
name: workspaceName
}
resource workspaceTable 'Microsoft.OperationalInsights/workspaces/tables@<ApiVersion>' = {
parent: logAnalyticsWorkspace
name: tableName
properties: {
retentionInDays: retentionInDays
totalRetentionInDays: totalRetentionInDays
}
}
注意
ARM 模板部署是创建或更新操作,而不是部分 PATCH 操作。 保留现有表的架构、计划和其他设置。 使用 REST 选项卡执行仅用于保留设置的 PATCH。
以下 ARM 模板示例使用 Microsoft.OperationalInsights/workspaces/tables 资源类型。
此模板包括表资源声明及其保留设置。 在使用它更新现有表之前:
- 将
workspaceName 和 tableName 设置为现有工作区和表的名称。
- 对于 Analytics 表,请仅按如下所示编辑
properties.retentionInDays 和 properties.totalRetentionInDays。
- 对于基本表和辅助表,请从此示例中删除
properties.retentionInDays 及其参数。 对于这些套餐,只能设置 properties.totalRetentionInDays;retentionInDays 为只读。
- 保留表的架构定义,包括你所维护的定义中的所有列数组条目、计划以及其他所有设置。 不要仅用包含保留成员的对象替换现有的
properties 对象。
- 不要在现有表上部署此示例不变。 其中不包括表格的全部配置。
- 不要更新现有工作区。
- 保留表的现有工作区限定资源名称及其完整定义的其余部分。 不要添加工作区资源声明。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string",
"defaultValue": "<WorkspaceName>"
},
"tableName": {
"type": "string",
"defaultValue": "<TableName>"
},
"retentionInDays": {
"type": "int",
"defaultValue": 30
},
"totalRetentionInDays": {
"type": "int",
"defaultValue": 730
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces/tables",
"apiVersion": "<ApiVersion>",
"name": "[format('{0}/{1}', parameters('workspaceName'), parameters('tableName'))]",
"properties": {
"retentionInDays": "[parameters('retentionInDays')]",
"totalRetentionInDays": "[parameters('totalRetentionInDays')]"
}
}
]
}
按表获取保留设置
检索表的保留设置,或列出工作区中所有表的设置。
若要在 Azure 门户中查看表的保留期设置,请在“Log Analytics 工作区”菜单中选择“表”。
表 屏幕页面显示工作区中所有表的分析数据保留期和数据总保留期。
以下Azure CLI示例使用az monitor log-analytics workspace table show命令。 它检索表的保留设置。
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName="<TableName>"
# Retrieve the table retention settings
az monitor log-analytics workspace table show \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName"
注意
Azure CLI命令使用当前 CLI 上下文中的Azure 资源管理器终结点,因此无需在命令语法中指定 management.chinacloudapi.cn。
以下Azure PowerShell示例使用 Get-AzOperationalInsightsTable cmdlet。 它检索表的保留设置。
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName = "<TableName>"
# Define parameters for Get-AzOperationalInsightsTable
$getAzOperationalInsightsTableParams = @{
ResourceGroupName = $resourceGroupName
WorkspaceName = $workspaceName
TableName = $tableName
}
# Retrieve the table retention settings
Get-AzOperationalInsightsTable @getAzOperationalInsightsTableParams
注意
Azure PowerShell cmdlet 使用当前 Az 上下文中的Azure 资源管理器终结点,因此无需在 cmdlet 语法中指定management.chinacloudapi.cn。
以下 REST 示例使用 Tables - Get REST API 操作。 它检索表的保留设置。
GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}?api-version={apiVersion}
Authorization: Bearer {accessToken}
以下 REST 示例使用 Tables - List By Workspace REST API 操作。 它检索工作区中所有表的保留设置。
GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables?api-version={apiVersion}
Authorization: Bearer {accessToken}
删除 Log Analytics 工作区中的表时数据会发生什么情况?
Log Analytics 工作区可以包含多个表类型。 删除表时发生的情况因每个表而异:
| 表类型 |
数据保留 |
建议 |
恢复 |
| Azure 表 |
Azure 表保存来自 Azure 资源或解决方案的日志。 停止从资源或解决方案发送数据时,数据将保留在工作区中,直到为表定义的保留期结束,并相应地收费。 |
若要降低费用, 请将表级保留期设置为 四天,这是支持的最低期限。 如果删除的表与应删除的解决方案(例如 Sentinel)相关联,则在经过四天的保留期后删除该解决方案。 |
启用解决方案。 数据恢复受表的保留期限制。 |
自定义日志表 (table_CL) |
自定义日志表保存从日志引入API或者已弃用的HTTP数据收集器API生成的日志。 删除表时,表名称将保留 15 天。 在 Analytics 或 Basic 计划中删除表不会删除数据。 表保留期在 15 天后转为工作区保留期,保留费用按照表保留期计算。 删除辅助 计划中的表之后,将在15天后永久性地删除数据。 |
若要尽量减少费用,请将 表级保留 期设置为四天,并在剪裁数据四天后删除该表。 |
分析 或 基本 计划:创建具有相同名称和架构的表。 数据恢复受表的保留期限制。
辅助 计划:在软删除期间创建具有相同名称和架构的表。 |
搜索结果表 (table_SRCH) |
立即永久删除表和数据。 |
|
|
还原表(table_RST) |
删除为还原预配的热缓存,但不会删除源表数据。 |
|
|
默认保留期为 90 天的日志表
默认情况下,Usage 和 AzureActivity 表中的数据会免费保留至少 90 天。 如果将工作区保留期延长至 90 天以上,则也会延长这些表的保留期。 这些表格同样不会产生数据摄取费用。
与 Application Insights 资源相关的表也会将数据保留 90 天,不收取任何费用。 可以单独调整其中每个表的保留期:
AppAvailabilityResults
AppBrowserTimings
AppDependencies
AppExceptions
AppEvents
AppMetrics
AppPageViews
AppPerformanceCounters
AppRequests
AppSystemEvents
AppTraces
定价模型
分析和长期保留是根据 GB 数据量计算的,并保留数据的天数。 数据保留的费用每天结算(按照 UTC 时区的日期计算)。 设置为 _IsBillable == false 的日志数据不受引入或保留费用的影响。
如需了解更多信息,请参阅以下文章:
相关内容
了解有关以下方面的详细信息: