In diesem Artikel wird erläutert, wie Sie eine benutzerdefinierte Tabelle mithilfe einer Beispieldatensammlungsregel (DATA Collection Rule, DCR) erstellen und Tabellenschemas mit benutzerdefinierten Spalten verwalten.
Datensammlungsregeln (Data Collection Rules, DCRs) steuern, wie Azure Monitor Daten sammelt. Sie ermöglichen es Ihnen, Protokolldaten zu filtern und zu transformieren, bevor sie eine Azure oder benutzerdefinierte Tabelle erreicht.
Benutzerdefinierte Spalten erweitern das Schema einer Tabelle, um Änderungen in der Datenquelle oder den Analyseanforderungen Ihrer Organisation zu berücksichtigen. Wenn Sie ein Tabellenschema aktualisieren, aktualisieren Sie alle DCRs, die Daten an diese Tabelle senden.
Voraussetzungen
| Maßnahme |
Berechtigung erforderlich |
| Verwalten einer Tabelle |
Berechtigung Microsoft.OperationalInsights/workspaces/* im Log Analytics-Arbeitsbereich oder höher. Zum Beispiel durch die privilegierte integrierte Rolle Log Analytics contributor bereitgestellt. |
Zum Aufnehmen von Daten in die Tabelle benötigen Sie möglicherweise die folgenden Elemente:
- Datensammlungsendpunkt (DCE). Weitere Informationen finden Sie unter DCE.
- Ein Beispiel für mindestens einen Datensatz der Quelldaten in einer JSON-Datei. Verwenden Sie dieses Beispiel, um benutzerdefinierte Tabellen im Portal zu erstellen, z. B. wenn Sie Text- und JSON-Datenquellen aus virtuellen Computern sammeln.
Berücksichtigen Sie diese zusätzlichen Anforderungen:
- Alle Tabellen in einem Log Analytics Arbeitsbereich müssen eine
TimeGenerated Spalte aufweisen, die die Aufnahmezeit des Datensatzes identifiziert. Wenn die Spalte fehlt, fügt Azure Monitor sie automatisch der Transformation in Ihrem DCR für die Tabelle hinzu. Weitere Informationen finden Sie unter unterstützten Datetime-Formaten.
- Hilfs-/Lake Table-Pläne unterstützen ausschließlich die Spalte
TimeGenerated im ISO-8601-Format mit einer Präzision von sechs Dezimalstellen (Mikrosekunden). Weitere Informationen finden Sie unter unterstütztes ISO 8601-Datumsformat.
Erstellen einer benutzerdefinierten Tabelle
Azure-Tabellen verfügen über vordefinierte Schemas. Um Protokolldaten in einem anderen Schema zu speichern, verwenden Sie Datensammlungsregeln, die definieren, wie die Daten gesammelt, transformiert und an eine benutzerdefinierte Tabelle in Ihrem Log Analytics-Arbeitsbereich gesendet werden. Wenn Sie eine benutzerdefinierte Tabelle erstellen, wählen Sie basierend auf Ihren Datennutzungs- und Kostenanforderungen einen Tabellenplan (Analytics (Standard), Basic oder Auxiliary / Lake) aus.
Benutzerdefinierte Tabellen haben ein Suffix von _CL; beispiel: tablename_CL. Das Azure-Portal fügt dem Tabellennamen automatisch das _CL Suffix hinzu. Wenn Sie eine benutzerdefinierte Tabelle mithilfe einer anderen Methode erstellen, müssen Sie das _CL Suffix selbst hinzufügen.
tablename_CL in den Eigenschaften von DataFlows-Streams muss dem Namen tablename_CL im Log Analytics-Arbeitsbereich entsprechen.
Warnung
Azure Tabellennamen für die Abrechnung verwendet, schließen Sie daher keine vertraulichen Informationen in den Namen ein.
So erstellen Sie eine benutzerdefinierte Tabelle mithilfe des Azure Portals:
Wählen Sie im Menü "Log Analytics-Arbeitsbereiche" die Option "Tabellen" aus.
Wählen Sie "Erstellen" aus.
Geben Sie einen Namen und optional eine Beschreibung für die Tabelle ein. Sie müssen das _CL Suffix nicht zum Namen der benutzerdefinierten Tabelle hinzufügen. Das Portal fügt das Suffix automatisch dem von Ihnen angegebenen Namen hinzu.
Wählen Sie unter "Tabellenplan" die Option "Analyse" (Standard), " Einfach" oder " Hilfs-/See" aus.
Wählen Sie eine vorhandene Datensammlungsregel aus dem Dropdownmenü " Datensammlungsregel " aus, oder wählen Sie " Neue Datensammlungsregel erstellen " aus, und geben Sie die Abonnement-, Ressourcengruppe und den Namen für die neue Datensammlungsregel an.
Wählen Sie einen Datensammlungsendpunkt und dann "Weiter" aus. Wenn Sie einen DCR ausgewählt haben, der bereits einem DCE zugeordnet ist, ist dieses Dropdown nicht verfügbar.
Wählen Sie "Nach Dateien suchen" aus, und suchen Sie die JSON-Datei mit den Beispieldaten für ihre neue Tabelle. Der folgende Screenshot verwendet eine JSON-Beispieldatei aus dem Skript im Lernprogramm: Senden von Daten an Azure Monitor Protokolle.
Wenn Ihre Beispieldaten keine Spalte enthalten TimeGenerated , erhalten Sie eine Meldung, dass das Portal eine Transformation mit dieser Spalte erstellt.
Wenn Sie Protokolldaten vor der Aufnahme in die Tabelle transformieren möchten:
Wählen Sie den Transformations-Editor aus.
Mit dem Transformations-Editor können Sie eine Transformation für den eingehenden Datenstrom erstellen. Die Transformation ist eine Kusto Query Language (KQL)-Abfrage, die für jeden eingehenden Datensatz ausgeführt wird. Azure Monitor-Protokolle speichert die Ergebnisse der Abfrage in der Zieltabelle.
Wählen Sie "Ausführen" aus, um die Ergebnisse anzuzeigen.
Wählen Sie "Übernehmen" aus, um die Transformation zu speichern und das Schema der neuen Tabelle anzuzeigen. Wählen Sie Weiteraus.
Überprüfen Sie die endgültigen Details, und wählen Sie "Erstellen" aus, um das benutzerdefinierte Protokoll zu speichern.
In den folgenden Azure CLI Beispielen werden die az monitor log-analytics workspace table create Befehle und az monitor data-collection rule create Befehle verwendet. Im Beispiel für den Auxiliary-Tarif wird az rest verwendet, um den REST-API-Vorgang Tables aufzurufen.
- Erstellen Sie die benutzerdefinierte Tabelle. In diesem Beispiel wird eine benutzerdefinierte Tabelle mit dem
Analytics Plan erstellt. Anschließend wird ein DCR erstellt, der definiert, wie Daten aus der Datenquelle erfasst und an die benutzerdefinierte Tabelle gesendet werden.
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName_CL="<TableName>_CL"
# Create the custom table
az monitor log-analytics workspace table create \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName_CL" \
--plan Analytics \
--columns TimeGenerated=datetime RawData=string
Um eine benutzerdefinierte Tabelle mit dem Auxiliary Plan zu erstellen, verwenden Sie den az rest Befehl, um eine PUT Anforderung an die REST-API für die Protokollverwaltung zu senden. Der Anforderungstext gibt das Tabellenschema und den Tabellenplan an.
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName_CL="<TableName>_CL"
apiVersion="<ApiVersion>"
payloadFile="./my-table.json"
# Get the subscription ID from the current Azure CLI context
subscriptionId=$(az account show --query id --output tsv)
# Build the request URL
path="/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
provider="Microsoft.OperationalInsights/workspaces/$workspaceName/tables/$tableName_CL"
url="$path/providers/$provider"
# Create the custom table
az rest \
--method put \
--url "$url?api-version=$apiVersion" \
--body @"$payloadFile"
Note
In diesem Beispiel werden alle unterstützten Spaltendatentypen mit Ausnahme guidaufgeführt. Log Analytics speichert und fragt GUIDs als Typ string ab, auch wenn Sie die Spalte als guid definieren.
Erweitern, um die my-table.json Datei anzuzeigen.
{
"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"
},
{
"name": "DynamicProperty",
"type": "dynamic"
}
]
},
"totalRetentionInDays": 365,
"plan": "Auxiliary"
}
}
Erstellen Sie eine Datensammlungsregel, die Daten aus Ihrer Datenquelle sammelt und an die benutzerdefinierte Tabelle sendet. In diesem Beispiel wird die Befehlsgruppe "az monitor data-collection rule command group" verwendet, um einen DCR zu erstellen, der Daten aus einer Syslog-Quelle sammelt und an die benutzerdefinierte Tabelle sendet, die Sie im vorherigen Schritt erstellt haben.
resourceGroupName="<ResourceGroupName>"
dataCollectionRuleName="<DataCollectionRuleName>"
ruleFile="./my-dcr.json"
az extension add --name monitor-control-service
az monitor data-collection rule create \
--resource-group "$resourceGroupName" \
--name "$dataCollectionRuleName" \
--rule-file "$ruleFile"
Note
Azure CLI Befehle verwenden den Azure Resource Manager Endpunkt aus dem aktuellen CLI-Kontext. Daher müssen management.azure.com nicht in der Befehlssyntax angegeben werden.
Erweitern, um die my-dcr.json Datei anzuzeigen.
{
"location": "<Location>",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-<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"
},
{
"name": "DynamicProperty",
"type": "dynamic"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<WorkspaceName>",
"name": "<WorkspaceName>"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-<TableName>_CL"
],
"transformKql": "source",
"destinations": [
"<WorkspaceName>"
],
"outputStream": "Custom-<TableName>_CL"
}
]
}
}
In den folgenden Azure PowerShell Beispielen wird das New-AzOperationalInsightsTable Cmdlet verwendet. Im Beispiel für den Auxiliary-Plan wird Invoke-AzRestMethod verwendet, um den REST-API-Vorgang Tables aufzurufen.
- Erstellen Sie die Tabelle. In diesem Beispiel wird eine benutzerdefinierte Tabelle mit dem
Analytics Plan erstellt.
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName_CL = "<TableName>_CL"
$payloadFile = ".\my-table.json"
# Define parameters for New-AzOperationalInsightsTable
$newAzOperationalInsightsTableParams = @{
ResourceGroupName = $resourceGroupName
WorkspaceName = $workspaceName
TableName = $tableName_CL
RetentionInDays = 31
TotalRetentionInDays = 365
Plan = 'Analytics'
Description = 'My custom table created with PowerShell'
Payload = Get-Content -Raw -Path $payloadFile
Column = @{'TimeGenerated'='DateTime'; 'RawData'='String'}
}
New-AzOperationalInsightsTable @newAzOperationalInsightsTableParams
Um eine benutzerdefinierte Tabelle mit dem Auxiliary Plan zu erstellen, verwenden Sie den Invoke-AzRestMethod Befehl, um eine PUT Anforderung an die REST-API für die Protokollverwaltung zu senden. Der Anforderungstext gibt das Tabellenschema und den Tabellenplan an.
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName_CL = "<TableName>_CL"
$apiVersion = "<ApiVersion>"
$payloadFile = ".\my-table.json"
# Get the subscription ID from the current Azure PowerShell context
$subscriptionId = (Get-AzContext).Subscription.Id
# Build the request URL
$path = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$provider = "Microsoft.OperationalInsights/workspaces/$workspaceName/tables/$tableName_CL"
$url = "$path/providers/$provider"
# Define parameters for Invoke-AzRestMethod
$invokeAzRestMethodParams = @{
Method = "PUT"
Path = "$url?api-version=$apiVersion"
Payload = Get-Content -Raw -Path $payloadFile
}
# Create the custom table
Invoke-AzRestMethod @invokeAzRestMethodParams
Note
In diesem Beispiel werden alle unterstützten Spaltendatentypen mit Ausnahme guidaufgeführt. Log Analytics speichert und fragt GUIDs als Typ string ab, auch wenn Sie die Spalte als guid definieren.
Erweitern, um die my-table.json Datei anzuzeigen.
{
"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"
},
{
"name": "DynamicProperty",
"type": "dynamic"
}
]
},
"totalRetentionInDays": 365,
"plan": "Auxiliary"
}
}
Erstellen Sie eine Datensammlungsregel, die Daten aus Ihrer Datenquelle sammelt und an die benutzerdefinierte Tabelle sendet. In diesem PowerShell-Beispiel wird das Cmdlet New-AzDataCollectionRule verwendet, um einen DCR zu erstellen, der Daten aus einer Syslog-Quelle sammelt und an die benutzerdefinierte Tabelle sendet, die Sie im vorherigen Schritt erstellt haben.
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$dataCollectionRuleName = "<DataCollectionRuleName>"
$jsonFilePath = ".\my-dcr.json"
$newAzDataCollectionRuleParams = @{
Name = $dataCollectionRuleName
ResourceGroupName = $resourceGroupName
JsonFilePath = $jsonFilePath
}
New-AzDataCollectionRule @dataCollectionRuleParams
Note
Azure PowerShell Cmdlets den Azure Resource Manager Endpunkt aus dem aktuellen Az-Kontext verwenden, sodass management.azure.com nicht in der Cmdlet-Syntax angegeben werden muss.
Erweitern, um die my-dcr.json Datei anzuzeigen.
{
"location": "<Location>",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-<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"
},
{
"name": "DynamicProperty",
"type": "dynamic"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<WorkspaceName>",
"name": "<WorkspaceName>"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-<TableName>_CL"
],
"transformKql": "source",
"destinations": [
"<WorkspaceName>"
],
"outputStream": "Custom-<TableName>_CL"
}
]
}
}
In den folgenden REST-Beispielen werden die REST-API-Vorgänge Tables und Datenerfassungsregeln verwendet.
- Erstellen Sie die Tabelle. In diesem Beispiel wird eine benutzerdefinierte Tabelle mit
"plan": "Auxiliary" in der Anfrage-Payload erstellt.
Note
In diesem Beispiel werden alle unterstützten Spaltendatentypen mit Ausnahme guidaufgeführt. Log Analytics speichert und fragt GUIDs als Typ string ab, auch wenn Sie die Spalte als guid definieren.
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"},
{"name": "DynamicProperty",
"type": "dynamic"}
]
},
"totalRetentionInDays": 365,
"plan": "Auxiliary"
}
}
Erstellen Sie eine Datensammlungsregel. Hier ist ein Beispiel, bei dem kind auf Direct gesetzt ist. Dieser DCR-Typ erfordert keinen Datensammlungsendpunkt (DATA Collection Endpoint, DCE), da er einen eigenen logsIngestion Endpunkt erstellt.
-
<WorkspaceName> ist der Name Ihres Log Analytics-Arbeitsbereichs.
-
<TableName>_CL ist der Name Ihrer Tabelle.
-
columns enthält die gleichen Spalten, die Sie beim Erstellen der Tabelle definiert haben.
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>_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"
},
{
"name": "DynamicProperty",
"type": "dynamic"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<WorkspaceName>",
"name": "<WorkspaceName>"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-<TableName>_CL"
],
"transformKql": "source",
"destinations": [
"<WorkspaceName>"
],
"outputStream": "Custom-<TableName>_CL"
}
]
}
}
Erstellen Sie die Tabelle mithilfe des folgenden Bicep-Beispiels. Im Beispiel wird der Ressourcentyp Microsoft.OperationalInsights workspaces/tables verwendet, um eine Hilfstabelle mit einem benutzerdefinierten Schema zu erstellen.
Das Beispiel listet alle unterstützten Spaltendatentypen außer guid auf. Log Analytics speichert und fragt GUIDs als Typ string ab, auch wenn Sie die Spalte als guid definieren.
param workspaceName string = '<WorkspaceName>'
param tableName_CL string = '<TableName>_CL'
resource workspace 'Microsoft.OperationalInsights/workspaces@<ApiVersion>' existing = {
name: workspaceName
}
resource table 'Microsoft.OperationalInsights/workspaces/tables@<ApiVersion>' = {
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'
}
{
name: 'DynamicProperty'
type: 'dynamic'
}
]
}
totalRetentionInDays: 365
plan: 'Auxiliary'
}
}
Erstellen Sie eine DCR mithilfe des folgenden Bicep-Beispiels, das den Ressourcentyp Microsoft.Insights dataCollectionRules verwendet.
@description('Specifies the name of the data collection rule to create.')
param dataCollectionRuleName string = '<DataCollectionRuleName>'
@description('Specifies the region in which to create the data collection rule. It must be the same region as the destination Log Analytics workspace.')
param location string = '<Location>'
@description('Specifies the ID of the subscription that contains the Log Analytics workspace.')
param subscriptionId string = '<SubscriptionId>'
@description('Specifies the name of the resource group that contains the Log Analytics workspace.')
param resourceGroupName string = '<ResourceGroupName>'
@description('Specifies the name of the Log Analytics workspace in which you created a custom table with the Auxiliary plan.')
param workspaceName string = '<WorkspaceName>'
var workspaceResourceId = resourceId(
subscriptionId,
resourceGroupName,
'Microsoft.OperationalInsights/workspaces',
workspaceName
)
resource dataCollectionRule 'Microsoft.Insights/dataCollectionRules@<ApiVersion>' = {
name: dataCollectionRuleName
location: location
kind: 'Direct'
properties: {
streamDeclarations: {
'Custom-<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'
}
{
name: 'DynamicProperty'
type: 'dynamic'
}
]
}
}
destinations: {
logAnalytics: [
{
workspaceResourceId: workspaceResourceId
name: workspaceName
}
]
}
dataFlows: [
{
streams: [
'Custom-<TableName>_CL'
]
transformKql: 'source'
destinations: [
workspaceName
]
outputStream: 'Custom-<TableName>_CL'
}
]
}
}
output dataCollectionRuleId string = dataCollectionRule.id
- Erstellen Sie die Tabelle mithilfe des folgenden Beispiels Azure Resource Manager Vorlage (ARM-Vorlage). In diesem JSON-Beispiel wird der Ressourcentyp Microsoft.OperationalInsights workspaces/tables verwendet, um eine Tabelle vom Typ Auxiliary / Lake mit einem benutzerdefinierten Schema zu erstellen.
Note
In diesem Beispiel werden alle unterstützten Spaltendatentypen mit Ausnahme guidaufgeführt. Log Analytics speichert und fragt GUIDs als Typ string ab, auch wenn Sie die Spalte als guid definieren.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string",
"defaultValue": "<WorkspaceName>"
},
"tableName_CL": {
"type": "string",
"defaultValue": "<TableName>_CL"
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces/tables",
"apiVersion": "<ApiVersion>",
"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"
},
{
"name": "DynamicProperty",
"type": "dynamic"
}
]
},
"totalRetentionInDays": 365,
"plan": "Auxiliary"
}
}
]
}
Erstellen Sie eine Datensammlungsregel, die Daten aus Ihrer Datenquelle sammelt und an die benutzerdefinierte Tabelle sendet. Im folgenden ARM-Vorlagenbeispiel wird der Ressourcentyp Microsoft.Insights dataCollectionRules verwendet.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataCollectionRuleName": {
"type": "string",
"defaultValue": "<DataCollectionRuleName>",
"metadata": {
"description": "Specifies the name of the data collection rule to create."
}
},
"location": {
"type": "string",
"defaultValue": "<Location>",
"metadata": {
"description": "Specifies the region in which to create the data collection rule. It must be the same region as the destination Log Analytics workspace."
}
},
"subscriptionId": {
"type": "string",
"defaultValue": "<SubscriptionId>",
"metadata": {
"description": "Specifies the ID of the subscription that contains the Log Analytics workspace."
}
},
"resourceGroupName": {
"type": "string",
"defaultValue": "<ResourceGroupName>",
"metadata": {
"description": "Specifies the name of the resource group that contains the Log Analytics workspace."
}
},
"workspaceName": {
"type": "string",
"defaultValue": "<WorkspaceName>",
"metadata": {
"description": "Specifies the name of the Log Analytics workspace in which you created a custom table with the Auxiliary plan."
}
}
},
"variables": {
"workspaceResourceId": "[resourceId(parameters('subscriptionId'), parameters('resourceGroupName'), 'Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"name": "[parameters('dataCollectionRuleName')]",
"location": "[parameters('location')]",
"apiVersion": "<ApiVersion>",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-<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"
},
{
"name": "DynamicProperty",
"type": "dynamic"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[variables('workspaceResourceId')]",
"name": "[parameters('workspaceName')]"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-<TableName>_CL"
],
"transformKql": "source",
"destinations": [
"[parameters('workspaceName')]"
],
"outputStream": "Custom-<TableName>_CL"
}
]
}
}
],
"outputs": {
"dataCollectionRuleId": {
"type": "string",
"value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
}
}
}
Löschen einer Tabelle
Sie können Azure Tabellen nicht löschen. Wie Azure Daten entfernt, wenn Sie eine andere Tabelle löschen, hängt vom Tabellentyp ab.
Weitere Informationen finden Sie unter Was geschieht mit Daten, wenn Sie eine Tabelle in einem Log Analytics-Arbeitsbereich löschen.
So löschen Sie eine Tabelle im Azure-Portal:
Wählen Sie im Menü "Log Analytics-Arbeitsbereich " die Option "Tabellen" aus.
Suchen Sie nach den Tabellen, die Sie nach Namen löschen möchten, oder wählen Sie die Suchergebnisse im Feld "Typ " aus.
Wählen Sie die Tabelle aus, die Sie löschen möchten, wählen Sie die Auslassungspunkte ( ... ) rechts neben der Tabelle aus, wählen Sie "Löschen" aus, und bestätigen Sie den Löschvorgang, indem Sie "Ja" eingeben.
Im folgenden Azure CLI Beispiel wird der az monitor log-analytics workspace table delete Befehl verwendet.
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName_CL="<TableName>_CL"
# Delete the table
az monitor log-analytics workspace table delete \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName_CL" \
--yes
Das folgende Azure PowerShell-Beispiel verwendet Invoke-AzRestMethod, um den REST-API-Vorgang Tables aufzurufen.
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName_CL = "<TableName>_CL"
$apiVersion = "<ApiVersion>"
# Get the subscription ID from the current Azure PowerShell context
$subscriptionId = (Get-AzContext).Subscription.Id
# Build the request URL
$path = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$provider = "Microsoft.OperationalInsights/workspaces/$workspaceName/tables/$tableName_CL"
$url = "$path/providers/$provider"
# Define parameters for Invoke-AzRestMethod
$invokeAzRestMethodParams = @{
Method = "DELETE"
Path = "$url?api-version=$apiVersion"
}
# Delete the table
Invoke-AzRestMethod @invokeAzRestMethodParams
Das folgende REST-Beispiel verwendet den REST-API-Vorgang Tables.
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}_CL?api-version={apiVersion}
Authorization: Bearer {accessToken}
Hinzufügen oder Löschen einer benutzerdefinierten Spalte
Mit benutzerdefinierten Tabellen können Sie das Schema ändern, indem Sie nach dem Erstellen der Tabelle Spalten hinzufügen oder löschen. In Azure Tabellen können Sie nur benutzerdefinierte Spalten hinzufügen und löschen.
Wichtig
Wenn Sie ein Tabellenschema aktualisieren, müssen Sie alle Datensammlungsregeln aktualisieren , die Daten an die Tabelle senden. Das Tabellenschema, das Sie in Ihrer Datensammlungsregel definieren, bestimmt, wie Azure Monitor Daten an die Zieltabelle streamt. Azure Monitor aktualisiert datensammlungsregeln nicht automatisch, wenn Sie Tabellenschemaänderungen vornehmen.
Verwenden Sie beim Definieren von Spaltennamen für benutzerdefinierte Tabellen die folgenden Regeln:
- Spaltennamen müssen mit einem Buchstaben (A-Z oder a-z) beginnen.
- Verwenden Sie nach dem ersten Zeichen nur Buchstaben, Ziffern oder Unterstriche.
- Verwenden Sie keine Leerzeichen, Punkte, Striche oder andere Interpunktion in Spaltennamen.
- Nicht-ASCII-Buchstaben (z. B. Æ, É, Ö) werden in Spaltennamen nicht unterstützt.
- Bei Spaltennamen wird bei Analytics- und Basic-Tabellen nur die Groß-/Kleinschreibung beachtet. Die Erfassung der Hilfsprotokolltabelle legt Daten mit doppelten Spaltennamen ab, wenn der einzige Unterschied groß ist.
- Spaltennamen müssen 2 bis 45 Zeichen lang sein.
- Benutzerdefinierte Spaltennamen in Azure Tabellen müssen in
_CF enden.
- Der GUID-Typ ist eine logische Anmerkung, die Werte werden jedoch als Zeichenfolgen gespeichert und abgefragt. Weitere Informationen finden Sie unter Column-Datentypen in Azure Monitor Logs.
- Verwenden Sie keine Namen, die mit System- oder reservierten Spalten kollidieren, einschließlich
id, BilledSize, IsBillable, InvalidTimeGenerated, TenantId, Title, Type, UniqueId, _ItemId, _ResourceGroup, _ResourceId, _SubscriptionId, _TimeReceived.
Diese Schemaregeln sind strenger als allgemeine Kusto-Bezeichnerregeln. Kusto kann bei Abfragen auf ungewöhnliche Eigenschaftennamen verweisen, das benutzerdefinierte Tabellenschema akzeptiert jedoch nur Buchstaben, Ziffern und Unterstriche für Spaltennamen.
So fügen Sie zu einer Tabelle in Ihrem Log Analytics-Arbeitsbereich eine benutzerdefinierte Spalte hinzu oder löschen Sie eine Spalte:
Wählen Sie im Menü "Log Analytics-Arbeitsbereiche" die Option "Tabellen" aus.
Wählen Sie das Auslassungszeichen ( ... ) rechts von der Tabelle, die Sie bearbeiten möchten, und wählen Sie Schema bearbeiten.
Diese Aktion öffnet den Bildschirm "Schema-Editor ".
Scrollen Sie nach unten zum Abschnitt "Benutzerdefinierte Spalten " des Bildschirms "Schema-Editor ".
So fügen Sie eine neue Spalte hinzu:
- Wählen Sie "Spalte hinzufügen" aus.
- Legen Sie den Spaltennamen und die Beschreibung (optional) fest, und wählen Sie den erwarteten Werttyp aus der Dropdownliste "Typ " aus.
- Wählen Sie "Speichern" aus, um die neue Spalte zu speichern.
Um eine Spalte zu löschen, wählen Sie das Symbol "Löschen " links neben der Spalte aus, die Sie löschen möchten.
Im folgenden Azure CLI Beispiel wird der az monitor log-analytics workspace table update Befehl verwendet.
So fügen Sie eine benutzerdefinierte Spalte hinzu:
# Set variables
resourceGroupName="<ResourceGroupName>"
workspaceName="<WorkspaceName>"
tableName="<TableName>"
# Add the custom column
az monitor log-analytics workspace table update \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName" \
--columns Custom1_CF=string
Verwenden Sie zum Löschen einer benutzerdefinierten Spalte die REST-API oder den PowerShell-Ansatz. Der CLI-Befehl update fügt Spalten hinzu, unterstützt jedoch das Löschen von Spalten nicht.
Die folgenden Azure PowerShell Beispiele verwenden Invoke-AzRestMethod, um den Rest-API-Vorgang "Tables" aufzurufen.
Hinzufügen einer benutzerdefinierten Spalte
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$workspaceName = "<WorkspaceName>"
$tableName = "<TableName>"
$apiVersion = "<ApiVersion>"
$payloadFile = ".\add-column.json"
# Get the subscription ID from the current Azure PowerShell context
$subscriptionId = (Get-AzContext).Subscription.Id
# Build the request URL
$path = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$provider = "Microsoft.OperationalInsights/workspaces/$workspaceName/tables/$tableName"
$url = "$path/providers/$provider"
# Define parameters for Invoke-AzRestMethod
$invokeAzRestMethodParams = @{
Method = "PUT"
Path = "$url?api-version=$apiVersion"
Payload = Get-Content -Raw -Path $payloadFile
}
# Add the custom column
Invoke-AzRestMethod @invokeAzRestMethodParams
Erweitern, um die add-column.json Datei anzuzeigen.
{
"properties": {
"schema": {
"name": "<TableName>",
"columns": [
{
"name": "Custom1_CF",
"type": "string",
"description": "First custom column"
}
]
}
}
}
Der PUT Aufruf gibt die aktualisierten Tabelleneigenschaften zurück, die die neu hinzugefügte Spalte enthalten.
Ersetzen einer benutzerdefinierten Spalte
Um eine Spalte zu löschen und eine weitere hinzuzufügen, senden Sie eine PUT Anforderung, die nur die Spalten enthält, die Sie behalten möchten. Das folgende Beispiel ersetzt Custom1_CF durch Custom2_CF:
Erweitern, um die replace-column.json Datei anzuzeigen.
{
"properties": {
"schema": {
"name": "<TableName>",
"columns": [
{
"name": "Custom2_CF",
"type": "datetime",
"description": "Replacement custom column"
}
]
}
}
}
Alle benutzerdefinierten Spalten löschen
Um alle benutzerdefinierten Spalten aus einer Tabelle zu löschen, senden Sie eine PUT Anforderung mit einem leeren columns Array:
Erweitern, um die delete-all-columns.json Datei anzuzeigen.
{
"properties": {
"schema": {
"name": "<TableName>",
"columns": []
}
}
}
Die folgenden REST-Beispiele verwenden den REST-API-Vorgang Tables.
Um eine benutzerdefinierte Spalte hinzuzufügen, senden Sie eine PUT Anforderung mit dem aktualisierten Schema. Fügen Sie die neue Spalte in das columns Array ein. Die Anforderung gibt die aktualisierten Tabelleneigenschaften zurück.
Wenn Sie eine benutzerdefinierte Spalte löschen möchten, senden Sie dieselbe PUT Anforderung, lassen Sie die Spalte jedoch aus dem columns Array aus. Um alle benutzerdefinierten Spalten zu löschen, senden Sie ein leeres columns Array.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}?api-version={apiVersion}
Authorization: Bearer {accessToken}
Content-Type: application/json
{
"properties": {
"schema": {
"name": "<TableName>",
"columns": [
{"name": "<ColumnName>",
"type": "string",
"description": "Custom column description"}
]
}
}
}
Verwandte Inhalte