Azure-Ressourcenprotokolle

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 Protokollwarnungen 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 vorherigen Beispiel werden drei Tabellen erstellt:

  • Tabelle Service1AuditLogs

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

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

    Ressourcenanbieter Category G H I
    Service2 AuditLogs j1 k1 l1
    Service2 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 ressourcenspezifischen Modus. 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 Blob des Typs „PT1H.json“ enthält ein JSON-Blob mit Ereignissen, die innerhalb der in der Blob-URL angegebenen Stunde (Beispiel: h=12) aufgetreten sind. Während der aktuellen Stunde werden Ereignisse an die Datei „PT1H.json“ angefügt, sobald sie auftreten. Der Minutenwert (m=00) ist immer „00“, da Ressourcenprotokollereignisse stundenweise in einzelne Blobs unterteilt 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

Die Protokolle werden in das Blob geschrieben, das sich auf den Zeitpunkt bezieht, zu dem das Protokoll generiert wurde, nicht auf den Zeitpunkt, zu dem es empfangen wurde. Das bedeutet, dass zur vollen Stunde sowohl die Blobs der vorherigen Stunde als auch die Blobs der aktuellen Stunde neue Schreibvorgänge empfangen können.

{"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