你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Monitor 日志中添加或删除表和列
使用数据收集规则,你可以筛选和转换日志数据,然后再将数据发送到 Azure 表或自定义表。 本文介绍如何创建自定义表并将自定义列添加到 Log Analytics 工作区中的表。
重要
每当更新表架构时,务必更新向表发送数据的数据收集规则。 在数据收集规则中定义的表架构决定了 Azure Monitor 如何将数据流式传输到目标表。 进行表架构更改时,Azure Monitor 不会自动更新数据收集规则。
先决条件
若要创建自定义表,你需要:
Log Analytics 工作区,你在其中至少拥有参与者权限。
数据收集终结点 (DCE)。
一个 JSON 文件,其中至少包含自定义表的一条示例记录。 这将如下所示:
[
{
"TimeGenerated": "supported_datetime_format",
"<column_name_1>": "<column_name_1_value>",
"<column_name_2>": "<column_name_2_value>"
},
{
"TimeGenerated": "supported_datetime_format",
"<column_name_1>": "<column_name_1_value>",
"<column_name_2>": "<column_name_2_value>"
},
{
"TimeGenerated": "supported_datetime_format",
"<column_name_1>": "<column_name_1_value>",
"<column_name_2>": "<column_name_2_value>"
}
]
Log Analytics 工作区的所有表必须具有名为 TimeGenerated
的列。 如果示例数据具有名为 TimeGenerated
的列,则此值将用于标识记录的引入时间。 否则,会在表的 DCR 中的转换中添加一个 TimeGenerated
列。 有关 TimeGenerated
格式的信息,请参阅支持的日期/时间格式。
创建自定义表
Azure 表具有预定义的架构。 若要将日志数据存储在不同的架构中,请使用数据收集规则来定义如何收集数据、转换数据以及将数据发送到 Log Analytics 工作区中的自定义表。 若要使用辅助计划创建自定义表,请参阅“使用辅助计划(预览版)设置表”。
重要
自定义表的后缀为“_CL”;例如,tablename_CL。 Azure 门户会自动将 _CL 后缀添加到表名。 使用其他方法创建自定义表时,需要自行添加 _CL 后缀。 数据收集规则内数据流属性中的 tablename_CL 必须与 Log Analytics 工作区中的 tablename_CL 名称匹配。
警告
表名用于计费目的,因此它们不应包含敏感信息。
若要使用 Azure 门户创建自定义表模板,请执行以下操作:
从“Log Analytics 工作区”菜单中,选择“表”。
选择“创建”,然后选择“新的自定义日志(基于 DCR)”。
指定名称,并根据需要指定表的说明。 无需将 _CL 后缀添加到自定义表的名称中 - 它会自动添加到在门户中指定的名称中。
从“数据收集规则”下拉列表中选择现有的数据收集规则,或选择“创建新的数据收集规则”并指定新数据收集规则的“订阅”、“资源组”和“名称”。
选择一个数据收集终结点,然后选择“下一步”。
选择“浏览文件”,找到具有新表的示例数据的 JSON 文件。
如果示例数据不包含 TimeGenerated
列,那么你将收到一条消息,显示正在使用此列创建转换。
如果要在将日志数据引入到表中之前对其进行转换,请执行以下操作:
选择“转换编辑器”。
使用转换编辑器可以为传入数据流创建转换。 这是针对每个传入记录运行的 KQL 查询。 Azure Monitor 日志将查询结果存储在目标表中。
选择“运行”以查看结果。
选择“应用”以保存转换并查看即将创建的表的架构。 选择“下一步”继续 。
验证最终详细信息,然后选择“创建”以保存自定义日志。
使用表 - 更新 PATCH API,通过以下 PowerShell 代码创建自定义表。 此代码创建名为 MyTable_CL 的表,其中包含两列。 修改此架构以收集不同的表。
选择 Azure 门户中的“Cloud Shell”按钮,确保环境设置为“PowerShell”。
复制以下 PowerShell 代码,并将 Path 参数替换为 Invoke-AzRestMethod
命令中工作区的相应值。 将其粘贴到 Cloud Shell 提示符下以运行它。
$tableParams = @'
{
"properties": {
"schema": {
"name": "MyTable_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "RawData",
"type": "String"
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/MyTable_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
删除表
Azure Monitor 日志中有多种类型的表。 你可以删除不是 Azure 表的任何表,但在删除表时数据会发生什么情况,对于每种类型的表都是不同的。
有关详细信息,请参阅删除 Log Analytics 工作区中的表时数据会发生什么情况。
若要从 Azure 门户中删除表,请执行以下操作:
在“Log Analytics 工作区”菜单中,选择“表”。
按名称搜索要删除的表,或在“类型”字段中选择“搜索结果”。
依次选择要删除的表、表右侧的省略号 (...)、“删除”,然后键入“是”来确认删除。
使用 PowerShell 删除表:
选择 Azure 门户中的“Cloud Shell”按钮,确保环境设置为“PowerShell”。
复制以下 PowerShell 代码,并将 Path 参数替换为 Invoke-AzRestMethod
命令中工作区的相应值。 将其粘贴到 Cloud Shell 提示符下以运行它。
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/NewCustom_CL?api-version=2021-12-01-preview" -Method DELETE
添加或删除自定义列
可以修改自定义表的架构,并将自定义列添加到标准表,或者从标准表中删除列。
注意
列名必须以字母开头,最多可包含 45 个字母数字字符和下划线 (_
)。 _ResourceId
、id
、_ResourceId
、_SubscriptionId
、TenantId
、Type
、UniqueId
和 Title
是保留的列名。
若要将自定义列添加到 Log Analytics 工作区中的表,或者要删除列,请执行以下操作:
从“Log Analytics 工作区”菜单中,选择“表”。
选择要编辑的表右侧的省略号 (...),然后选择“编辑架构”。
此时会打开“架构编辑器”屏幕。
向下滚动到“架构编辑器”屏幕的“自定义列”部分。
若要添加新列,请执行以下操作:
- 选择“添加列”。
- 设置列名和说明(可选),然后从“类型”下拉列表中选择预期的值类型。
- 选择“保存”,以保存新列。
若要删除列,请选择要删除的列左侧的“删除”图标。
若要向 Azure 表或自定义表添加新列,请运行:
$tableParams = @'
{
"properties": {
"schema": {
"name": "<TableName>",
"columns": [
{
"name": ""<ColumnName>",
"description": "First custom column",
"type": "string",
"isDefaultDisplay": true,
"isHidden": false
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/<TableName>?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
PUT
调用将返回更新的表属性,其中应包括新添加的列。
示例
运行以下命令,将名为 Custom1_CF
的自定义列添加到 Azure Heartbeat
表:
$tableParams = @'
{
"properties": {
"schema": {
"name": "Heartbeat",
"columns": [
{
"name": "Custom1_CF",
"description": "The second custom column",
"type": "datetime",
"isDefaultDisplay": true,
"isHidden": false
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/Heartbeat?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
现在,若要删除新添加的列并添加另一列,请运行:
$tableParams = @'
{
"properties": {
"schema": {
"name": "Heartbeat",
"columns": [
{
"name": "Custom2_CF",
"description": "The second custom column",
"type": "datetime",
"isDefaultDisplay": true,
"isHidden": false
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/Heartbeat?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
若要删除表中所有自定义列,请运行:
$tableParams = @'
{
"properties": {
"schema": {
"name": "Heartbeat",
"columns": [
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/Heartbeat?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
后续步骤
了解有关以下方面的详细信息: