Plan tabeli pomocniczej umożliwia pozyskiwanie i przechowywanie danych w obszarze roboczym usługi Log Analytics przy niskich kosztach.
Oto film wideo, w ramach którego wyjaśniono niektóre zastosowania i zalety planu tabeli pomocniczej:
Dzienniki Azure Monitor obsługują plan pomocniczy dla tabel niestandardowych opartych na regułach zbierania danych (DCR), do których wysyłasz dane zbierane za pomocą agenta Azure Monitor Agent lub interfejsu Logs ingestion API.
W tym artykule wyjaśniono, jak utworzyć nową tabelę niestandardową z planem pomocniczym w obszarze roboczym usługi Log Analytics i skonfigurować regułę zbierania danych, która wysyła dane do tej tabeli. Aby uzyskać więcej informacji na temat pojęć dotyczących planu pomocniczego, zobacz Plany tabel dzienników usługi Azure Monitor.
Wymagania wstępne
Aby utworzyć tabelę niestandardową i zebrać dane dziennika, potrzebne są następujące elementy:
- Obszar roboczy usługi Log Analytics, w którym masz co najmniej prawa współautora.
- Punkt końcowy zbierania danych (DCE).
- Konfigurowanie tabeli z planem pomocniczym jest możliwe tylko dla nowych tabel. Po utworzeniu tabeli z planem pomocniczym nie można zmienić planu tabeli.
Uwaga / Notatka
Dzienniki pomocnicze są ogólnie dostępne dla wszystkich regionów chmury publicznej z wyjątkiem Centralnego Kataru i niedostępne dla chmur Azure Government lub chmur w Chinach.
Tworzenie tabeli niestandardowej przy użyciu planu pomocniczego
Aby utworzyć tabelę niestandardową korzystając z planu pomocniczego w portalu Azure:
Z menu Obszarów roboczych usługi Log Analytics wybierz pozycję Tabele.
Wybierz Utwórz.
Na karcie Podstawy określ nazwę i, opcjonalnie, opis tabeli. Portal automatycznie dodaje sufiks _CL do nazwy tabeli.
W sekcji Plan tabeli wybierz opcję Pomocniczy/Lake.
Wybierz pozycję Dalej i wykonaj pozostałe kroki, aby skonfigurować schemat i zbieranie danych. Aby uzyskać szczegółowe instrukcje dotyczące pozostałych kroków, zobacz Dodawanie lub usuwanie tabel i kolumn w dziennikach usługi Azure Monitor.
Dedykowane polecenie Azure CLI nie jest dostępne dla tej operacji. Wywołaj interfejs API REST bezpośrednio przy użyciu polecenia az rest.
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
resourceGroupName="myResourceGroup"
workspaceName="myWorkspace"
tableName_CL="myTable_CL"
apiVersion="2025-07-01"
providers="Microsoft.OperationalInsights/workspaces/$workspaceName/tables/$tableName_CL"
resourceId="/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/$providers"
payloadFile="./my-table.json"
az account set --subscription $subscriptionId
az rest \
--method put \
--uri "$resourceId?api-version=$apiVersion" \
--body @"$payloadFile"
Rozwiń, aby wyświetlić plik my-table.json.
{
"properties": {
"schema": {
"name": "myTable_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "dateTime"
},
{
"name": "StringProperty",
"type": "string"
},
{
"name": "IntProperty",
"type": "int"
},
{
"name": "LongProperty",
"type": "long"
},
{
"name": "RealProperty",
"type": "real"
},
{
"name": "BooleanProperty",
"type": "boolean"
},
{
"name": "DateTimeProperty",
"type": "dateTime"
}
]
},
"totalRetentionInDays": 365,
"plan": "Auxiliary"
}
}
Dedykowane polecenie cmdlet programu Azure PowerShell nie jest dostępne dla tej operacji. Wywołaj interfejs API REST bezpośrednio przy użyciu polecenia Invoke-AzRestMethod.
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$resourceGroupName = "myResourceGroup"
$workspaceName = "myWorkspace"
$tableName_CL = "myTable_CL"
$apiVersion = "2025-07-01"
$providers = "Microsoft.OperationalInsights/workspaces/$workspaceName/tables/$tableName_CL"
$resourceId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/$providers"
$payloadFile = "./my-table.json"
Set-AzContext -Subscription $subscriptionId
$restParams = @{
Method = "PUT"
Path = "$resourceId?api-version=$apiVersion"
Payload = Get-Content -Raw -Path $payloadFile
}
Invoke-AzRestMethod @restParams
Rozwiń, aby wyświetlić plik my-table.json.
{
"properties": {
"schema": {
"name": "myTable_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "dateTime"
},
{
"name": "StringProperty",
"type": "string"
},
{
"name": "IntProperty",
"type": "int"
},
{
"name": "LongProperty",
"type": "long"
},
{
"name": "RealProperty",
"type": "real"
},
{
"name": "BooleanProperty",
"type": "boolean"
},
{
"name": "DateTimeProperty",
"type": "dateTime"
}
]
},
"totalRetentionInDays": 365,
"plan": "Auxiliary"
}
}
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName_CL}?api-version={apiVersion}
Authorization: Bearer {accessToken}
Content-Type: application/json
{
"properties": {
"schema": {
"name": "{tableName_CL}",
"columns": [
{"name": "TimeGenerated",
"type": "dateTime"},
{"name": "StringProperty",
"type": "string"},
{"name": "IntProperty",
"type": "int"},
{"name": "LongProperty",
"type": "long"},
{"name": "RealProperty",
"type": "real"},
{"name": "BooleanProperty",
"type": "boolean"},
{"name": "DateTimeProperty",
"type": "dateTime"}
]
},
"totalRetentionInDays": 365,
"plan": "Auxiliary"
}
}
Uwaga / Notatka
- Kolumna
TimeGenerated obsługuje tylko format ISO 8601 z 6 miejscami dziesiętnymi na potrzeby precyzji (mikrosekund). Aby uzyskać więcej informacji, zobacz obsługiwany format daty/godziny ISO 8601.
- Tabele z planem pomocniczym nie obsługują kolumn z danymi dynamicznymi.
W poniższym przykładzie języka Bicep użyto typu zasobu Microsoft.OperationalInsights workspaces/tables.
param workspaceName string = 'myWorkspace'
param tableName_CL string = 'myTable_CL'
resource workspace 'Microsoft.OperationalInsights/workspaces@2025-07-01' existing = {
name: workspaceName
}
resource table 'Microsoft.OperationalInsights/workspaces/tables@2025-07-01' = {
parent: workspace
name: tableName_CL
properties: {
schema: {
name: tableName_CL
columns: [
{
name: 'TimeGenerated'
type: 'dateTime'
}
{
name: 'StringProperty'
type: 'string'
}
{
name: 'IntProperty'
type: 'int'
}
{
name: 'LongProperty'
type: 'long'
}
{
name: 'RealProperty'
type: 'real'
}
{
name: 'BooleanProperty'
type: 'boolean'
}
{
name: 'DateTimeProperty'
type: 'dateTime'
}
]
}
totalRetentionInDays: 365
plan: 'Auxiliary'
}
}
W poniższym przykładzie ARM (JSON) użyto typu zasobu Microsoft.OperationalInsights workspaces/tables.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string",
"defaultValue": "myWorkspace"
},
"tableName_CL": {
"type": "string",
"defaultValue": "myTable_CL"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces/tables",
"apiVersion": "2025-07-01",
"name": "[format('{0}/{1}', parameters('workspaceName'), parameters('tableName_CL'))]",
"properties": {
"schema": {
"name": "[parameters('tableName_CL')]",
"columns": [
{
"name": "TimeGenerated",
"type": "dateTime"
},
{
"name": "StringProperty",
"type": "string"
},
{
"name": "IntProperty",
"type": "int"
},
{
"name": "LongProperty",
"type": "long"
},
{
"name": "RealProperty",
"type": "real"
},
{
"name": "BooleanProperty",
"type": "boolean"
},
{
"name": "DateTimeProperty",
"type": "dateTime"
}
]
},
"totalRetentionInDays": 365,
"plan": "Auxiliary"
}
}
]
}
| Zmienna |
Przykładowa wartość |
Purpose |
| gospodarz |
management.azure.com |
Niejawny punkt końcowy usługi ARM |
| subscriptionId |
aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e |
Dane wejściowe użytkownika |
| resourceGroupName |
myResourceGroup |
Dane wejściowe użytkownika |
| nazwa_obszaru roboczego |
myWorkspace |
Dane wejściowe użytkownika |
| tableName_CL |
myTable_CL |
Dane wejściowe użytkownika |
| apiVersion (wersja interfejsu api) |
2025-07-01 |
Referencja |
Wysyłanie danych do tabeli przy użyciu planu pomocniczego
Istnieje wiele sposobów ładowania danych do niestandardowej tabeli w ramach planu Auxiliary:
- Agent usługi Azure Monitor (AMA)
- API do przetwarzania dzienników
- Przekształcenie obszaru roboczego
Korzystanie z usługi AMA
Jeśli używasz tej metody, tabela niestandardowa musi mieć tylko dwie kolumny — TimeGenerated (typ datetime) i RawData (typ string). Reguła zbierania danych wysyła każdy wpis dziennika do kolumny RawData, a usługa Azure Monitor automatycznie wypełnia kolumnę TimeGenerated wraz z czasem przetwarzania dziennika.
Aby uzyskać więcej informacji na temat korzystania z usługi AMA, zobacz następujące artykuły:
Użyj interfejsu API pozyskiwania dzienników
Ta metoda ściśle naśladuje kroki opisane w samouczku Samouczek: wysyłanie danych do usługi Azure Monitor przy użyciu interfejsu API pozyskiwania dzienników.
Utwórz tabelę niestandardową w ramach planu pomocniczego zgodnie z opisem w tym artykule.
Utwórz aplikację Microsoft Entra.
Utwórz regułę zbierania danych. Oto przykładowy szablon ARM dla elementu kind: Direct. Ten typ DCR nie wymaga DCE, ponieważ zawiera punkt końcowy logsIngestion.
-
myWorkspace to nazwa obszaru roboczego usługi Log Analytics.
-
myTable_CL to nazwa tabeli.
-
columns zawiera te same kolumny, które są ustawiane podczas tworzenia tabeli.
W poniższym przykładzie Azure CLI użyto polecenia az monitor data-collection rule create.
subscriptionId="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
resourceGroupName="myResourceGroup"
dataCollectionRuleName="myDataCollectionRule"
ruleFile="./my-dcr.json"
az account set --subscription "$subscriptionId"
az extension add --name monitor-control-service
az monitor data-collection rule create \
--resource-group "$resourceGroupName" \
--name "$dataCollectionRuleName" \
--rule-file "$ruleFile"
Uwaga / Notatka
Polecenia Azure CLI używają punktu końcowego usługi Azure Resource Manager z bieżącego kontekstu Azure CLI, więc nie trzeba określać elementu management.azure.com w składni polecenia.
Rozwiń, aby wyświetlić plik my-dcr.json.
{
"location": "eastus",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-myTable": {
"columns": [
{
"name": "TimeGenerated",
"type": "dateTime"
},
{
"name": "StringProperty",
"type": "string"
},
{
"name": "IntProperty",
"type": "int"
},
{
"name": "LongProperty",
"type": "long"
},
{
"name": "RealProperty",
"type": "real"
},
{
"name": "BooleanProperty",
"type": "boolean"
},
{
"name": "DateTimeProperty",
"type": "dateTime"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.OperationalInsights/workspaces/myWorkspace",
"name": "myWorkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-myTable"
],
"transformKql": "source",
"destinations": [
"myWorkspace"
],
"outputStream": "Custom-myTable_CL"
}
]
}
}
W poniższym przykładzie programu PowerShell użyto polecenia cmdlet New-AzDataCollectionRule .
$subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
$resourceGroupName = "myResourceGroup"
$dataCollectionRuleName = "myDataCollectionRule"
$jsonFilePath = ".\my-dcr.json"
Select-AzSubscription -SubscriptionId $subscriptionId
$dataCollectionRuleParams = @{
Name = $dataCollectionRuleName
ResourceGroupName = $resourceGroupName
JsonFilePath = $jsonFilePath
}
New-AzDataCollectionRule @dataCollectionRuleParams
Uwaga / Notatka
Polecenia cmdlet programu Azure PowerShell używają punktu końcowego usługi Azure Resource Manager z aktualnego kontekstu Az, więc nie trzeba określać management.azure.com w składni poleceń cmdlet.
Rozwiń, aby wyświetlić plik my-dcr.json.
{
"location": "eastus",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-myTable": {
"columns": [
{
"name": "TimeGenerated",
"type": "dateTime"
},
{
"name": "StringProperty",
"type": "string"
},
{
"name": "IntProperty",
"type": "int"
},
{
"name": "LongProperty",
"type": "long"
},
{
"name": "RealProperty",
"type": "real"
},
{
"name": "BooleanProperty",
"type": "boolean"
},
{
"name": "DateTimeProperty",
"type": "dateTime"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.OperationalInsights/workspaces/myWorkspace",
"name": "myWorkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-myTable"
],
"transformKql": "source",
"destinations": [
"myWorkspace"
],
"outputStream": "Custom-myTable_CL"
}
]
}
}
Uwaga / Notatka
Następujące wywołanie REST używa przykładowych wartości.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/dataCollectionRules/{dataCollectionRuleName}?api-version={apiVersion}
Authorization: Bearer {accessToken}
Content-Type: application/json
{
"location": "<location>",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"<Custom-tableName>": {
"columns": [
{
"name": "TimeGenerated",
"type": "dateTime"
},
{
"name": "StringProperty",
"type": "string"
},
{
"name": "IntProperty",
"type": "int"
},
{
"name": "LongProperty",
"type": "long"
},
{
"name": "RealProperty",
"type": "real"
},
{
"name": "BooleanProperty",
"type": "boolean"
},
{
"name": "DateTimeProperty",
"type": "dateTime"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName>",
"name": "<workspaceName>"
}
]
},
"dataFlows": [
{
"streams": [
"<Custom-tableName>"
],
"transformKql": "source",
"destinations": [
"myWorkspace"
],
"outputStream": "<Custom-tableName_CL>"
}
]
}
}
W poniższym przykładzie Bicep użyto typu zasobu Microsoft.Insights dataCollectionRules.
@description('Specifies the name of the data collection rule to create.')
param dataCollectionRuleName string = 'myDataCollectionRule'
@description('Specifies the region in which to create the data collection rule. The must be the same region as the destination Log Analytics workspace.')
param location string = 'eastus'
@description('The Azure resource ID of the Log Analytics workspace in which you created a custom table with the Auxiliary plan.')
param workspaceResourceId string = '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.OperationalInsights/workspaces/myWorkspace'
resource dataCollectionRule 'Microsoft.Insights/dataCollectionRules@2025-07-01' = {
name: dataCollectionRuleName
location: location
kind: 'Direct'
properties: {
streamDeclarations: {
'Custom-myTable': {
columns: [
{
name: 'TimeGenerated'
type: 'dateTime'
}
{
name: 'StringProperty'
type: 'string'
}
{
name: 'IntProperty'
type: 'int'
}
{
name: 'LongProperty'
type: 'long'
}
{
name: 'RealProperty'
type: 'real'
}
{
name: 'BooleanProperty'
type: 'boolean'
}
{
name: 'DateTimeProperty'
type: 'dateTime'
}
]
}
}
destinations: {
logAnalytics: [
{
workspaceResourceId: workspaceResourceId
name: 'myWorkspace'
}
]
}
dataFlows: [
{
streams: [
'Custom-myTable'
]
transformKql: 'source'
destinations: [
'myWorkspace'
]
outputStream: 'Custom-myTable_CL'
}
]
}
}
output dataCollectionRuleId string = dataCollectionRule.id
Poniższy przykład ARM (JSON) używa typu zasobu Microsoft.Insights dataCollectionRules.
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataCollectionRuleName": {
"type": "string",
"defaultValue": "myDataCollectionRule",
"metadata": {
"description": "Specifies the name of the data collection rule to create."
}
},
"location": {
"type": "string",
"defaultValue": "eastus",
"metadata": {
"description": "Specifies the region in which to create the data collection rule. The must be the same region as the destination Log Analytics workspace."
}
},
"workspaceResourceId": {
"type": "string",
"defaultValue": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.OperationalInsights/workspaces/myWorkspace",
"metadata": {
"description": "The Azure resource ID of the Log Analytics workspace in which you created a custom table with the Auxiliary plan."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"name": "[parameters('dataCollectionRuleName')]",
"location": "[parameters('location')]",
"apiVersion": "2025-07-01",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-myTable": {
"columns": [
{
"name": "TimeGenerated",
"type": "dateTime"
},
{
"name": "StringProperty",
"type": "string"
},
{
"name": "IntProperty",
"type": "int"
},
{
"name": "LongProperty",
"type": "long"
},
{
"name": "RealProperty",
"type": "real"
},
{
"name": "BooleanProperty",
"type": "boolean"
},
{
"name": "DateTimeProperty",
"type": "dateTime"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[parameters('workspaceResourceId')]",
"name": "myWorkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-myTable"
],
"transformKql": "source",
"destinations": [
"myWorkspace"
],
"outputStream": "Custom-myTable_CL"
}
]
}
}
],
"outputs": {
"dataCollectionRuleId": {
"type": "string",
"value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
}
}
}
| Zmienna |
Przykładowa wartość |
Purpose |
| gospodarz |
management.azure.com |
Niejawny punkt końcowy usługi ARM |
| subscriptionId |
aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e |
Dane wejściowe użytkownika |
| resourceGroupName |
myResourceGroup |
Dane wejściowe użytkownika |
| dataCollectionRuleName |
myDataCollectionRule |
Dane wejściowe użytkownika |
| lokalizacja |
eastus |
Dane wejściowe użytkownika |
| Niestandardowa-nazwa_tabeli |
Custom-myTable |
Dane wejściowe użytkownika |
| Niestandardowa-tableName_CL |
Niestandardowe-myTable_CL |
Dane wejściowe użytkownika |
| apiVersion (wersja interfejsu api) |
2025-07-01 |
Referencja |
Udziel aplikacji uprawnienia do korzystania z DCR.
Wysyłanie danych przy użyciu przykładowego kodu.
Ostrzeżenie
Podczas przetwarzania dzienników do warstwy pomocniczej usługi Azure Monitor unikaj przesyłania pojedynczego ładunku zawierającego znaczniki czasu TimeGenerated obejmujące ponad 30 minut w ramach jednego wywołania API. To wywołanie interfejsu API może prowadzić do następującego kodu błędu przetwarzania RecordsTimeRangeIsMoreThan30Minutes. Jest to znane ograniczenie , które jest usuwane.
Ograniczenie to nie dotyczy dzienników pomocniczych korzystających z przekształceń.
Aby uzyskać więcej informacji, zobacz następujące artykuły:
Treści powiązane