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.

Abbildung: Übersicht über die Protokollerfassungs-API

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.

Screenshot: Protokollerfassungsendpunkt in einer DCR

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.

Screenshot einer Datensammlungsregel mit der unveränderlichen ID.

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.

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 _CFaufweisen.

Einschränkungen

Informationen zu Einschränkungen der Protokollerfassungs-API finden Sie unter Azure Monitor-Diensteinschränkungen.

Nächste Schritte