Protokollerfassungs-API in Azure Monitor
Mit der Protokollerfassungs-API in Azure Monitor können Sie Daten entweder mit einem REST-API-Aufruf oder den Clientbibliotheken an einen Log Analytics-Arbeitsbereich senden. Mit der API können Sie Daten an unterstützte Azure-Tabellen oder an von Ihnen erstellte benutzerdefinierte Tabellen senden. Sie können auch das Schema von Azure-Tabellen mit benutzerdefinierten Spalten erweitern, um zusätzliche Daten zu akzeptieren.
Grundlegender Vorgang
Daten können von jeder Anwendung, die einen REST-API-Aufruf ausführen kann, an die Protokollerfassungs-API gesendet werden. Dabei kann es sich um eine von Ihnen erstellte benutzerdefinierte Anwendung oder um eine Anwendung oder einen Agenten handeln, der weiß, wie man Daten an die API sendet. Sie gibt eine Datensammlungsregel (Data Collection Rule, DCR) an, die die Zieltabelle und den Arbeitsbereich und die Anmeldeinformationen einer App-Registrierung mit Zugriff auf die angegebene DCR enthält. Sie sendet die Daten an einen von der DCR angegebenen Endpunkt oder an einen Datensammlungsendpunkt (Data Collection Endpoint, DCE),, wenn Sie eine private Verbindung verwenden.
Die von Ihrer Anwendung an die API gesendeten Daten müssen in JSON formatiert sein und der von der DCR erwarteten Struktur entsprechen. Sie müssen nicht unbedingt mit der Struktur der Zieltabelle übereinstimmen, da die DCR eine Transformation durchführen kann, um die Daten so umzuwandeln, dass sie mit der Struktur der Tabelle kompatibel sind. Sie können die Zieltabelle und den Arbeitsbereich ändern, indem Sie die DCR bearbeiten, ohne eine Änderung am API-Aufruf oder an den Quelldaten vorzunehmen.
Konfiguration
In der folgenden Tabelle werden die einzelnen Komponenten in Azure beschrieben, die Sie konfigurieren müssen, bevor Sie die Protokollerfassungs-API verwenden können.
Hinweis
Ein PowerShell-Skript, das die Konfiguration dieser Komponenten automatisiert, finden Sie unter Beispielcode zum Senden von Daten an Azure Monitor mithilfe der Protokollerfassungs-API.
Komponente | Funktion |
---|---|
App-Registrierung und geheimer Schlüssel | Die Anwendungsregistrierung wird verwendet, um den API-Aufruf zu authentifizieren. Der unten beschriebenen DCR muss die Berechtigung erteilt werden. Der API-Aufruf enthält die Anwendungs-ID (Client-ID) und Verzeichnis-ID (Mandanten-ID) der Anwendung und den Wert eines geheimen Anwendungsschlüssels. Siehe Erstellen einer Microsoft Entra-Anwendung und eines Dienstprinzipals mit Zugriff auf Ressourcen und Erstellen eines neuen Anwendungsgeheimnisses. |
Tabelle im Log Analytics-Arbeitsbereich | Die Tabelle im Log Analytics-Arbeitsbereich muss vorhanden sein, bevor Sie Daten an diese senden können. Sie können eine der unterstützten Azure-Tabellen verwenden oder eine benutzerdefinierte Tabelle mit einer der verfügbaren Methoden erstellen. Wenn Sie das Azure-Portal zum Erstellen der Tabelle verwenden, wird die DCR für Sie erstellt, einschließlich einer Transformation, falls erforderlich. Bei jeder anderen Methode müssen Sie die DCR manuell erstellen, wie im nächsten Abschnitt beschrieben. Siehe Erstellen einer benutzerdefinierten Tabelle. |
Datensammlungsregel (Data Collection Rule, DCR) | Azure Monitor verwendet die Datensammlungsregel (Data Collection Rule, DCR), um die Struktur der eingehenden Daten zu verstehen und zu entscheiden, was mit ihnen geschehen soll. Wenn die Struktur der Tabelle und die eingehenden Daten nicht übereinstimmen, kann die DCR eine Transformation durchführen, um die Quelldaten in Übereinstimmung mit der Zieltabelle zu konvertieren. Sie können mithilfe der Transformation auch Quelldaten filtern und andere Berechnungen oder Konvertierungen durchführen. Wenn Sie eine benutzerdefinierte Tabelle mithilfe des Azure-Portals erstellen, werden DCR und die Transformation basierend auf den von Ihnen bereitgestellten Beispieldaten erstellt. Wenn Sie eine vorhandene Tabelle verwenden oder eine benutzerdefinierte Tabelle mit einer anderen Methode erstellen, müssen Sie die DCR manuell mithilfe von Details im folgenden Abschnitt erstellen. Sobald Ihre DCR erstellt ist, müssen Sie der Anwendung, die Sie im ersten Schritt erstellt haben, Zugriff darauf gewähren. Wählen Sie im Azure-Portal im Menü Überwachen die Option Datensammlungsregeln aus und dann die von Ihnen erstellte DCR aus. Wählen Sie Zugriffssteuerung (IAM) für die Datensammlungsregel und dann Rollenzuweisung hinzufügen aus, um die Rolle Monitoring Metrics Publisher hinzuzufügen. |
Endpunkt
Der REST-API-Endpunkt für die Protokollerfassungs-API kann entweder ein Datensammlungsendpunkt (DCE) oder der DCR-Protokollerfassungsendpunkt sein.
Der DCR-Protokollerfassungsendpunkt wird generiert, wenn Sie eine DCR für die direkte Erfassung erstellen. Um diesen Endpunkt abzurufen, öffnen Sie die DCR in der JSON-Ansicht im Azure-Portal. Möglicherweise müssen Sie die API-Version in die aktuelle Version ändern, damit die Endpunkte angezeigt werden.
Ein DCE ist nur erforderlich, wenn Sie eine private Verbindung mit einem Log Analytics-Arbeitsbereich herstellen oder wenn die DCR den Protokollerfassungsendpunkt nicht enthält. Dies kann der Fall sein, wenn Sie eine ältere DCR verwenden oder die DCR ohne den Parameter "kind": "Direct"
erstellt haben. Ausführlichere Informationen finden Sie weiter unten unter Datensammlungsregel (Data Collection Rule, DCR).
Hinweis
Die Eigenschaft logsIngestion
wurde am 31. März 2024 hinzugefügt. Vor diesem Datum war ein DCE für die Protokollerfassungs-API erforderlich. Bestehenden DCRs können keine neuen Endpunkte hinzugefügt werden. Sie können jedoch weiterhin vorhandene DCRs mit vorhandenen DCEs verwenden. Wenn Sie zu einem DCR-Endpunkt wechseln möchten, müssen Sie eine neue DCR erstellen, die die bestehende ersetzt. Eine DCR mit Endpunkten kann auch einen DCE verwenden. In diesem Fall können Sie auswählen, ob der DCE oder die DCR-Endpunkte für die einzelnen Clients verwendet werden sollen, die die DCR verwenden.
Datensammlungsregel (Data Collection Rule, DCR)
Wenn Sie über das Azure-Portal in einem Log Analytics-Arbeitsbereich eine benutzerdefinierte Tabelle erstellen, wird eine DCR erstellt, die mit der Protokollerfassungs-API verwendet werden kann. Wenn Sie Daten an eine Tabelle senden, die bereits vorhanden ist, müssen Sie die DCR manuell erstellen. Beginnen Sie mit der Beispiel-DCR unten, und ersetzen Sie die Werte für die folgenden Parameter in der Vorlage. Verwenden Sie eine der unter Erstellen und Bearbeiten von Datensammlungsregeln (DCRs) in Azure Monitor beschriebenen Methoden, um die DCR zu erstellen.
Parameter | Beschreibung |
---|---|
region |
Region zum Erstellen der DCR. Sie muss mit der Region des Log Analytics-Arbeitsbereichs und dem DCE übereinstimmen, sofern Sie einen verwenden. |
dataCollectionEndpointId |
Ressourcen-ID Ihres DCE. Entfernen Sie diesen Parameter, wenn Sie den DCR-Erfassungspunkt verwenden. |
streamDeclarations |
Ändern Sie die Spaltenliste auf die Spalten in Ihren eingehenden Daten. Sie müssen den Namen des Datenstroms nicht ändern, da dies nur mit dem streams -Namen in dataFlows übereinstimmen muss. |
workspaceResourceId |
Ressourcen-ID Ihres Log Analytics-Arbeitsbereichs. Sie müssen den Namen nicht ändern, da dies nur mit dem destinations -Namen in dataFlows übereinstimmen muss. |
transformKql |
KQL-Abfrage, die auf die eingehenden Daten angewendet werden soll. Wenn das Schema der eingehenden Daten mit dem Schema der Tabelle übereinstimmt, können Sie source für die Transformation verwenden, die die eingehenden Daten unverändert übergibt. Verwenden Sie andernfalls eine Abfrage, die die Daten so transformiert, dass sie mit dem Zieltabellenschema übereinstimmen. |
outputStream |
Name der Tabelle zum Senden der Daten. Fügen Sie für eine benutzerdefinierte Tabelle das Präfix Benutzerdefiniert/e/r<Tabellenname> hinzu. Fügen Sie für eine integrierte Tabelle das Präfix Microsoft-<Tabellenname> hinzu. |
{
"location": "eastus",
"dataCollectionEndpointId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Insights/dataCollectionEndpoints/dce-eastus",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-MyTable": {
"columns": [
{
"name": "Time",
"type": "datetime"
},
{
"name": "Computer",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "string"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/cefingestion/providers/microsoft.operationalinsights/workspaces/my-workspace",
"name": "LogAnalyticsDest"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-MyTable"
],
"destinations": [
"LogAnalyticsDest"
],
"transformKql": "source",
"outputStream": "Custom-MyTable_CL"
}
]
}
}
Clientbibliotheken
Zusätzlich zu einem REST-API-Aufruf können Sie die folgenden Clientbibliotheken verwenden, um Daten an die Protokollerfassungs-API zu senden. Für die Bibliotheken sind dieselben Komponenten erforderlich, die in der Konfiguration beschrieben sind. Beispiele für die Verwendung dieser Bibliotheken finden Sie im Beispielcode zum Senden von Daten an Azure Monitor mithilfe der Protokollerfassungs-API.
REST-API-Aufruf
Um Daten mit einem REST API-Aufruf an Azure Monitor zu senden, führen Sie einen POST-Aufruf über HTTP durch. Details, die für diesen Aufruf erforderlich sind, werden in diesem Abschnitt beschrieben.
URI
Der URI enthält die Region, den DCE- oder DCR-Erfassungsendpunkt, die DCR-ID und den Datenstromnamen. Außerdem gibt er die API-Version an.
Der URI verwendet das folgende Format:
{Endpoint}/dataCollectionRules/{DCR Immutable ID}/streams/{Stream Name}?api-version=2023-01-01
Zum Beispiel:
https://my-dce-5kyl.eastus-1.ingest.monitor.azure.com/dataCollectionRules/dcr-000a00a000a00000a000000aa000a0aa/streams/Custom-MyTable?api-version=2023-01-01
DCR Immutable ID
wird für die DCR bei ihrer Erstellung generiert. Sie können sie aus der Übersichtsseite für die DCR im Azure-Portal abrufen.
Stream Name
verweist auf den Stream Name
in der DCR, der die benutzerdefinierten Daten verarbeiten soll.
Headers
Die folgende Tabelle beschreibt die Kopfzeilen für Ihren API-Aufruf.
Header | Erforderlich? | Beschreibung |
---|---|---|
Authorization | Ja | Bearertoken, das über den Flow für Clientanmeldeinformationen abgerufen wurde. Verwenden Sie den Tokengruppenwert für Ihre Cloud: Öffentliche Azure-Cloud - https://monitor.azure.com Microsoft Azure operated by 21Vianet Cloud - https://monitor.azure.cn Azure US Government Cloud - https://monitor.azure.us |
Content-Type | Ja | application/json |
Content-Encoding | Nein | gzip |
x-ms-client-request-id | Nein | GUID im Zeichenfolgenformat. Dies ist eine Anforderungs-ID, die von Microsoft zur Problembehandlung verwendet werden kann. |
Body
Der Text des Aufrufs enthält die benutzerdefinierten Daten, die an Azure Monitor gesendet werden sollen. Die Daten müssen in Form eines JSON-Arrays mit einer Elementstruktur vorliegen, die mit dem vom Stream in der DCR erwarteten Format kompatibel ist. Wenn ein einzelnes Element innerhalb des API-Aufrufs gesendet werden muss, sollten die Daten als Einelementarray gesendet werden.
Beispiel:
[
{
"TimeGenerated": "2023-11-14 15:10:02",
"Column01": "Value01",
"Column02": "Value02"
}
]
Stellen Sie sicher, dass der Anforderungstext ordnungsgemäß in UTF-8 codiert ist, um Probleme mit der Datenübertragung zu vermeiden.
Beispiel
Ein Beispiel für den API-Aufruf mit PowerShell finden Sie unter Beispielcode zum Senden von Daten an Azure Monitor mithilfe der Protokollerfassungs-API.
Unterstützte Tabellen
Daten, die an die Erfassungs-API gesendet werden, können an die folgenden Tabellen gesendet werden:
Tabellen | BESCHREIBUNG |
---|---|
Benutzerdefinierte Tabellen | Jede von Ihnen erstellte benutzerdefinierte Tabelle in Ihrem Log Analytics-Arbeitsbereich. Die Zieltabelle muss existieren, bevor Sie Daten an sie senden können. Benutzerdefinierte Tabellen müssen das Suffix _CL aufweisen. |
Azure-Tabellen | Die folgenden Azure-Tabellen werden derzeit unterstützt. Weitere Tabellen können dieser Liste hinzugefügt werden, sobald die Unterstützung für sie implementiert ist. |
- ADAssessmentRecommendation
- ADSecurityAssessmentRecommendation
- Anomalien
- ASimAuditEventLogs
- ASimAuthenticationEventLogs
- ASimDhcpEventLogs
- ASimDnsActivityLogs
- ASimDnsAuditLogs
- ASimFileEventLogs
- ASimNetworkSessionLogs
- ASimProcessEventLogs
- ASimRegistryEventLogs
- ASimUserManagementActivityLogs
- ASimWebSessionLogs
- AWSCloudTrail
- AWSCloudWatch
- AWSGuardDuty
- AWSVPCFlow
- AzureAssessmentRecommendation
- CommonSecurityLog
- DeviceTvmSecureConfigurationAssessmentKB
- DeviceTvmSoftwareVulnerabilitiesKB
- ExchangeAssessmentRecommendation
- ExchangeOnlineAssessmentRecommendation
- GCPAuditLogs
- GoogleCloudSCC
- SCCMAssessmentRecommendation
- SCOMAssessmentRecommendation
- SecurityEvent
- SfBAssessmentRecommendation
- SfBOnlineAssessmentRecommendation
- SharePointOnlineAssessmentRecommendation
- SPAssessmentRecommendation
- SQLAssessmentRecommendation
- StorageInsightsAccountPropertiesDaily
- StorageInsightsDailyMetrics
- StorageInsightsHourlyMetrics
- StorageInsightsMonthlyMetrics
- StorageInsightsWeeklyMetrics
- Syslog
- UCClient
- UCClientReadinessStatus
- UCClientUpdateStatus
- UCDeviceAlert
- UCDOAggregatedStatus
- UCDOStatus
- UCServiceUpdateStatus
- UCUpdateAlert
- WindowsClientAssessmentRecommendation
- WindowsEvent
- WindowsServerAssessmentRecommendation
Hinweis
Spaltennamen müssen mit einem Buchstaben beginnen und können aus bis zu 45 alphanumerischen Zeichen und Unterstrichen (_
) bestehen. _ResourceId
, id
, _ResourceId
, _SubscriptionId
, TenantId
, Type
, UniqueId
und Title
sind reservierte Spaltennamen. Benutzerdefinierte Spalten, die Sie einer Azure-Tabelle hinzufügen, müssen das Suffix _CF
aufweisen.
Einschränkungen
Informationen zu Einschränkungen der Protokollerfassungs-API finden Sie unter Azure Monitor-Diensteinschränkungen.
Nächste Schritte
- Einführung in ein Tutorial zum Senden von Daten an Azure Monitor-Protokolle mit der Protokollerfassungs-API auf dem Azure-Portal
- Arbeiten Sie das Tutorial zum Senden benutzerdefinierter Protokolle mithilfe von Resource Manager-Vorlagen und der REST-API durch.
- Hier erhalten Sie Anleitungen zu den Clientbibliotheken für die Protokollerfassungs-API für .NET, Java, JavaScript oder Python.