Senden von Azure-Ressourcenprotokolldaten

Azure-Ressourcenprotokolle sind Plattformprotokolle, die Einblicke in Vorgänge bereitstellen, die in einer Azure-Ressource ausgeführt wurden. Der Inhalt dieser Protokolle variiert je nach Azure-Dienst und -Ressourcentyp. Ressourcenprotokolle werden standardmäßig nicht erfasst. In diesem Artikel wird die Diagnoseeinstellung beschrieben, die für jede Azure-Ressource erforderlich ist, um ihre Ressourcenprotokolle an verschiedene Ziele zu senden.

Senden an den Log Analytics-Arbeitsbereich

Senden Sie Ressourcenprotokolle an einen Log Analytics-Arbeitsbereich, um die Features von Azure Monitor-Protokollen zu aktivieren, die Folgendes ermöglichen:

  • Korrelieren von Ressourcenprotokolldaten mit anderen von Azure Monitor gesammelten Überwachungsdaten
  • Konsolidieren von Protokolleinträgen mehrerer Azure-Ressourcen, -Abonnements und -Mandanten an einem einzigen Ort zur gemeinsamen Analyse
  • Verwenden von Protokollabfragen zum Ausführen komplexer Analysen und Erhalten tiefer Einblicke in Protokolldaten
  • Verwenden von Warnungen für die Protokollsuche mit komplexer Warnungslogik

Erstellen Sie eine Diagnoseeinstellung, um Ressourcenprotokolle an einen Log Analytics-Arbeitsbereich zu senden. Diese Daten werden in Tabellen gespeichert, wie es unter Struktur von Azure Monitor-Protokollen beschrieben ist. Welche Tabellen von Ressourcenprotokollen verwendet werden, hängt von dem von der Ressource verwendeten Sammlungstyp ab:

  • Azure-Diagnose: Alle Daten werden in die Tabelle AzureDiagnostics geschrieben.
  • Ressourcenspezifisch: Daten werden für jede Kategorie der Ressource in einzelne Tabellen geschrieben.

Modus „Ressourcenspezifisch“

In diesem Modus werden individuelle Tabellen in dem ausgewählten Arbeitsbereich für die einzelnen Kategorien erstellt, die in der Diagnoseeinstellung ausgewählt werden. Diese Methode wird aus den folgenden Gründen empfohlen:

  • Die Arbeit mit den Daten in Protokollabfragen wird erheblich vereinfacht.
  • Sie bietet eine bessere Erkennbarkeit von Schemas und deren Struktur.
  • Die Leistung wird sowohl im Hinblick auf Erfassungslatenz als auch auf Abfragezeiten verbessert.
  • Sie bietet die Möglichkeit, Berechtigungen für die rollenbasierte Zugriffssteuerung in Azure für eine bestimmte Tabelle zu gewähren.

Alle Azure-Dienste werden letztendlich zum ressourcenspezifischen Modus migriert.

Im folgenden Beispiel werden drei Tabellen erstellt:

  • Tabelle Service1AuditLogs

    Ressourcenanbieter Category A B C
    Dienst 1 AuditLogs x1 y1 z1
    Dienst 1 AuditLogs x5 y5 z5
    ...
  • Tabelle Service1ErrorLogs

    Ressourcenanbieter Category D E F
    Dienst 1 ErrorLogs q1 w1 e1
    Dienst 1 ErrorLogs q2 w2 e2
    ...
  • Tabelle Service2AuditLogs

    Ressourcenanbieter Category G H I
    Dienst 2 AuditLogs j1 k1 l1
    Dienst 2 AuditLogs j3 k3 l3
    ...

Modus „Azure-Diagnose“

In diesem Modus werden alle Daten aus einer beliebigen Diagnoseeinstellung in der Tabelle AzureDiagnostics gesammelt. Diese Legacymethode wird heute von den meisten Azure-Diensten genutzt. Da mehrere Ressourcentypen Daten an dieselbe Tabelle senden, stellt deren Schema die Obermenge der Schemas aller erfassten einzelnen Datentypen dar. Ausführliche Informationen zur Struktur dieser Tabelle und ihrer Funktionsweise bei dieser potenziell großen Anzahl von Spalten finden Sie in der AzureDiagnostics-Referenz.

Sehen Sie sich das folgende Beispiel an, in dem Diagnoseeinstellungen für die folgenden Datentypen im gleichen Arbeitsbereich gesammelt werden:

  • Überwachungsprotokolle von Dienst 1 weisen ein Schema auf, das sich aus den Spalten A, B und C zusammensetzt.
  • Fehlerprotokolle von Dienst 1 weisen ein Schema auf, das sich aus den Spalten D, E und F zusammensetzt.
  • Überwachungsprotokolle von Dienst 2 weisen ein Schema auf, das sich aus den Spalten G, H und I zusammensetzt.

Die AzureDiagnostics-Tabelle sieht wie im folgenden Beispiel aus:

ResourceProvider Category A B C D E F G H I
Microsoft.Service1 AuditLogs x1 y1 z1
Microsoft.Service1 ErrorLogs q1 w1 e1
Microsoft.Service2 AuditLogs j1 k1 l1
Microsoft.Service1 ErrorLogs q2 w2 e2
Microsoft.Service2 AuditLogs j3 k3 l3
Microsoft.Service1 AuditLogs x5 y5 z5
...

Auswählen des Sammlungsmodus

Die meisten Azure-Ressourcen schreiben Daten entweder im Modus Azure-Diagnose oder im Modus Ressourcenspezifisch in den Arbeitsbereich, ohne dass Sie eine Auswahl treffen können. Weitere Informationen finden Sie unter Allgemeine und dienstspezifische Schemas für Azure-Ressourcenprotokolle.

Alle Azure-Dienste verwenden letztendlich den Modus „Ressourcenspezifisch“. Im Rahmen dieses Übergangs können Sie bei einigen Ressourcen einen Modus in der Diagnoseeinstellung auswählen. Wählen Sie den ressourcenspezifischen Modus für alle neuen Diagnoseeinstellungen aus, da dieser Modus eine einfachere Verwaltung der Daten ermöglicht. Außerdem können Sie auf diese Weise komplexe Migrationen zu einem späteren Zeitpunkt vermeiden.

Screenshot that shows the Diagnostics settings mode selector.

Hinweis

Ein Beispiel für das Festlegen des Sammlungsmodus mithilfe einer Azure Resource Manager-Vorlage finden Sie unter Beispiele für Resource Manager-Vorlagen für Diagnoseeinstellungen in Azure Monitor.

Sie können eine vorhandene Diagnoseeinstellung in den Modus „Ressourcenspezifisch“ ändern. In diesem Fall verbleiben Daten, die bereits gesammelt wurden, in der Tabelle AzureDiagnostics, bis sie gemäß Ihrer Aufbewahrungseinstellung für den Arbeitsbereich entfernt werden. Neue Daten werden in der dedizierten Tabelle gesammelt. Verwenden Sie den union-Operator, um Daten in beiden Tabellen abzufragen.

Sehen Sie regelmäßig im Blog Azure-Updates nach, ob Ankündigungen für Azure-Dienste vorliegen, die den ressourcenspezifischen Modus unterstützen.

Senden an Azure Event Hubs

Senden Sie Ressourcenprotokolle an einen Event Hub, um sie außerhalb von Azure senden zu können. Beispielsweise können Ressourcenprotokolle an eine SIEM-Lösung eines Drittanbieters oder andere Lösungen für die Protokollanalyse gesendet werden. Ressourcenprotokolle von Event Hubs werden im JSON-Format mit einem records-Element genutzt, das die Datensätze in jeder Nutzlast enthält. Das Schema hängt wie unter Allgemeine und dienstspezifische Schemas für Azure-Ressourcenprotokolle beschrieben vom Ressourcentyp ab.

Die folgenden Beispielausgabedaten stammen aus Azure Event Hubs für ein Ressourcenprotokoll:

{
    "records": [
        {
            "time": "2019-07-15T18:00:22.6235064Z",
            "workflowId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330013509921957/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Error",
            "operationName": "Microsoft.Logic/workflows/workflowActionCompleted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T17:58:55.048482Z",
                "endTime": "2016-07-15T18:00:22.4109204Z",
                "status": "Failed",
                "code": "BadGateway",
                "resource": {
                    "subscriptionId": "00000000-0000-0000-0000-000000000000",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330013509921957",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "29a9862f-969b-4c70-90c4-dfbdc814e413",
                    "clientTrackingId": "08587330013509921958"
                }
            }
        },
        {
            "time": "2019-07-15T18:01:15.7532989Z",
            "workflowId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330012106702630/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Information",
            "operationName": "Microsoft.Logic/workflows/workflowActionStarted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T18:01:15.5828115Z",
                "status": "Running",
                "resource": {
                    "subscriptionId": "00000000-0000-0000-0000-000000000000",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330012106702630",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "042fb72c-7bd4-439e-89eb-3cf4409d429e",
                    "clientTrackingId": "08587330012106702632"
                }
            }
        }
    ]
}

Senden an Azure Storage

Senden Sie Ressourcenprotokolle zur Aufbewahrung für die Archivierung an Azure Storage. Nach dem Einrichten der Diagnoseeinstellung wird im Speicherkonto ein Speichercontainer erstellt, sobald ein Ereignis in einer der aktivierten Protokollkategorien auftritt.

Hinweis

Eine alternative Strategie zur Archivierung besteht darin, das Ressourcenprotokoll an einen Log Analytics-Arbeitsbereich mit einer Archivierungsrichtlinie zu senden.

Die Blobs im Container verwenden die folgende Benennungskonvention:

insights-logs-{log category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/RESOURCEGROUPS/{resource group name}/PROVIDERS/{resource provider name}/{resource type}/{resource name}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

Das Blob für eine Netzwerksicherheitsgruppe könnte einen Namen aufweisen, der dem folgenden Beispiel ähnelt:

insights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUP/TESTNSG/y=2016/m=08/d=22/h=18/m=00/PT1H.json

Jedes PT1H.json-Blob enthält ein JSON-Objekt mit Ereignissen aus Protokolldateien, die während der in der Blob-URL angegebenen Stunde empfangen wurden. Während der aktuellen Stunde werden die Ereignisse, sobald sie empfangen werden, an die Datei PT1H.json angehängt, unabhängig davon, wann sie erzeugt wurden. Der Minutenwert in der URL, m=00, ist immer 00, da Blobs pro Stunde erstellt werden.

Innerhalb der Datei „PT1H.json“ wird jedes Ereignis im folgenden Format gespeichert. Hierbei wird ein gemeinsames Schema der obersten Ebene verwendet, das jedoch wie unter Allgemeine und dienstspezifische Schemas für Azure-Ressourcenprotokolle beschrieben für jeden Azure-Dienst eindeutig ist.

Hinweis

Protokolle werden basierend auf der Zeit, zu der das Protokoll empfangen wurde, in Blobs geschrieben, unabhängig von der Zeit, zu der das Protokoll erzeugt wurde. Dies bedeutet, dass ein bestimmtes Blob Protokolldaten enthalten kann, die außerhalb der in der BLOB-URL angegebenen Stunde liegt. Wenn eine Datenquelle wie Application Insights das Hochladen veralteter Telemetriedaten unterstützt, kann ein Blob Daten aus den letzten 48 Stunden enthalten.
Zu Beginn einer neuen Stunde ist es möglich, dass vorhandene Protokolle weiterhin in das Blob der vorherigen Stunde geschrieben werden, während neue Protokolle in das Blob der neuen Stunde geschrieben werden.

{"time": "2016-07-01T00:00:37.2040000Z","systemId": "46cdbb41-cb9c-4f3d-a5b4-1d458d827ff1","category": "NetworkSecurityGroupRuleCounter","resourceId": "/SUBSCRIPTIONS/s1id1234-5679-0123-4567-890123456789/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/TESTNSG","operationName": "NetworkSecurityGroupCounters","properties": {"vnetResourceGuid": "{12345678-9012-3456-7890-123456789012}","subnetPrefix": "10.3.0.0/24","macAddress": "000123456789","ruleName": "/subscriptions/ s1id1234-5679-0123-4567-890123456789/resourceGroups/testresourcegroup/providers/Microsoft.Network/networkSecurityGroups/testnsg/securityRules/default-allow-rdp","direction": "In","type": "allow","matchedConnections": 1988}}

Azure Monitor – integrierte Partnerlösungen

Ressourcenprotokolle können auch an Partnerlösungen gesendet werden, die vollständig in Azure integriert sind. Eine Liste dieser Lösungen und Details zur Konfiguration finden Sie unter Erweitern von Azure mit Lösungen von Partnern.

Nächste Schritte