Weiterleiten von Azure Automation-Diagnoseprotokollen an Azure Monitor

Azure Automation kann Runbookauftragsstatus und Auftragsdatenströme an Ihren Log Analytics-Arbeitsbereich senden. Dieser Prozess umfasst keine Arbeitsbereichsverknüpfung. Zudem ist er vollständig unabhängig und ermöglicht ihnen einfache Untersuchungen. Auftragsprotokolle und -streams werden im Azure-Portal oder mit PowerShell für einzelne Aufträge angezeigt. Azure Monitor-Protokolle für Ihr Automation-Konto ermöglichen Ihnen Folgendes:

  • Beschaffen von Erkenntnisse über den Status Ihrer Automation-Aufträge
  • Lösen Sie basierend auf Ihrem Runbookauftragsstatus (beispielsweise „Fehler“ oder „Angehalten“) das Senden einer E-Mail oder einer Warnung aus.
  • Schreiben Sie erweiterte Abfragen für Ihre Auftragsdatenströme.
  • Korrelieren Sie Aufträge über Automation-Konten hinweg.
  • Verwenden von angepassten Ansichten und Suchabfragen zum Visualisieren von Runbookergebnissen, Runbookauftragsstatus und anderen wichtigen Schlüsselindikatoren oder Metriken über ein Azure-Dashboard
  • Abrufen der Überwachungsprotokolle im Zusammenhang mit Automation-Konten, Runbooks und anderen Erstellungs-, Änderungs- und Löschvorgängen für Ressourcen

Mithilfe von Azure Monitor-Protokolle können Sie Protokolle aus unterschiedlichen Ressourcen im selben Arbeitsbereich konsolidieren, wo Sie mit Abfragen analysiert werden können, um die gesammelten Daten schnell abzurufen, zu konsolidieren und zu analysieren. Sie können Abfragen mit Log Analytics im Azure-Portal erstellen und testen und die Daten dann entweder mit diesen Tools direkt analysieren oder Abfragen zur Verwendung mit Visualisierungen oder Warnungsregeln speichern.

Azure Monitor verwendet eine Version der Kusto-Abfragesprache (Kusto Query Language, KQL), die von Azure Data Explorer verwendet wird und für einfache Protokollabfragen geeignet ist. Zudem bietet es erweiterte Funktionen wie Aggregationen, Verknüpfungen und intelligente Analysen. Sie können die Abfragesprache schnell erlernen, indem Sie mehrere Lektionen nutzen.

Azure Automation-Diagnoseeinstellungen

Dank der Unterstützung für Automation-Diagnoseeinstellungen können Sie die folgenden Plattformprotokolle und Metrikdaten weiterleiten:

Datentypen Beschreibung
Auftragsprotokolle Status des Runbookauftrags im Automation-Konto.
Auftragsdatenströme Status der Auftragsstreams im Runbook, das im Automation-Konto definiert ist.
DSCNodeStatus Status des DSC-Knotens.
AuditEvent Alle Ressourcenprotokolle, die Kundeninteraktionen mit Daten oder die Einstellungen des Azure Automation-Dienstes aufzeichnen.
metrics Aufträge gesamt, Updates gesamt, Ausführungen von Bereitstellungscomputern, Updatebereitstellungsausführungen gesamt

Konfigurieren von Diagnoseeinstellungen im Azure-Portal

Sie können Diagnoseeinstellungen im Azure-Portal über das Menü für die Automation-Kontoressource konfigurieren.

  1. Klicken Sie im Menü des Automation-Kontos unter Überwachung auf Diagnoseeinstellungen.

    Screenshot showing selection of diagnostic setting option.

  2. Klicken Sie auf Diagnoseeinstellung hinzufügen.

    Screenshot showing selection of add diagnostic setting.

  3. Geben Sie unter Name der Diagnoseeinstellung einen Einstellungsnamen ein, falls noch kein Einstellungsname vorhanden ist.

    Sie können auch alle Kategorien von Protokollen und Metriken anzeigen.

    Screenshot showing all categories of logs and metrics.

    • Zu routende Protokolle und Metriken: Wählen Sie für Protokolle eine Kategoriegruppe aus oder aktivieren Sie die einzelnen Kontrollkästchen für jede Kategorie von Daten, die Sie an die angegebenen Ziele senden möchten. Wählen Sie AllMetrics, wenn Sie Metriken in Azure Monitor-Protokollen speichern möchten.

    • Zieldetails: Aktivieren Sie das Kontrollkästchen für jedes Ziel. Abhängig von den einzelnen aktivierten Kontrollkästchen werden die jeweiligen Optionen angezeigt, damit Sie zusätzliche Informationen hinzufügen können.

      Screenshot showing selections in destination details section.

      • Log Analytics: Geben Sie die Abonnement-ID und den Namen des Arbeitsbereichs ein. Wenn Sie noch nicht über einen Arbeitsbereich verfügen, müssen Sie einen Arbeitsbereich erstellen, bevor Sie fortfahren können.

      • Event Hubs: Legen Sie die folgenden Kriterien fest:

        • Abonnement: Das gleiche Abonnement wie das des Event Hubs.
        • Event Hub-Namespace: Erstellen Sie einen Event Hub, wenn Sie noch keinen besitzen.
        • Name des Event Hubs (optional): Wenn Sie keinen Namen angeben, wird ein Event Hub für jede Protokollkategorie erstellt. Wenn Sie mehrere Kategorien senden, geben Sie einen Namen an, um die Anzahl der erstellten Event Hubs zu beschränken. Ausführliche Informationen dazu finden Sie unter Kontingente und Grenzwerte in Azure Event Hubs.
        • Event Hub-Richtlinie (optional): Eine Richtlinie definiert die Berechtigungen für den Streamingmechanismus. Weitere Informationen finden Sie unter Event Hubs-Feature.
      • Speicher: Wählen Sie das Abonnement, das Speicherkonto und die Aufbewahrungsrichtlinie aus. Screenshot showing the storage account.

      • Partnerintegration: Sie müssen zunächst eine Partnerintegration in Ihrem Abonnement installieren. Die Konfigurationsoptionen variieren je nach Partner. Weitere Informationen finden Sie unter Azure Monitor-Integration.

  4. Klicken Sie auf Speichern.

Nach einigen Augenblicken wird die neue Einstellung in der Liste der Einstellungen für diese Ressource angezeigt, und Protokolle werden an die angegebenen Ziele gestreamt, sobald neue Ereignisdaten generiert werden. Zwischen dem ausgegebenen Ereignis und seiner Darstellung im Log Analytics-Arbeitsbereich kann ein Zeitunterschied von 15 Minuten bestehen.

Abfragen der Protokolle

So fragen Sie die generierten Protokolle ab:

  1. Klicken Sie in Ihrem Automation-Konto unter Überwachung auf Protokolle.

  2. Klicken Sie unter Alle Abfragen auf Automation-Aufträge.

    Screenshot showing how to navigate to select Automation jobs.

  3. Wählen Sie eine der Abfragen aus, die Sie ausführen möchten, und klicken Sie auf Ausführen.

  4. Schließen Sie zum Ausführen einer benutzerdefinierten Abfrage das Fenster Abfragen, fügen Sie ihre benutzerdefinierte Abfrage in das neue Abfragefenster ein und klicken Sie auf Ausführen.

    Die Ausgabe der Abfrage wird im Bereich Ergebnisse angezeigt.

  5. Klicken Sie auf Neue Warnungsregel, um eine Azure Monitor-Warnung für diese Abfrage zu konfigurieren.

    Screenshot showing how to query logs.

Protokolldatensätze in Azure Monitor

Bei der Azure Automation-Diagnose werden die folgenden Typen von Datensätzen in Azure Monitor-Protokollen erstellt, gekennzeichnet als AzureDiagnostics. Die Tabellen in den nachfolgenden Abschnitten sind Beispiele für Datensätze, die von Azure Automation generiert werden, und für die Datentypen, die in Protokollsuchergebnissen angezeigt werden.

Auftragsprotokolle

Eigenschaft BESCHREIBUNG
TimeGenerated Ausführungsdatum und -uhrzeit des Runbookauftrags.
RunbookName_s Name(n) des Runbooks.
Caller_s Aufrufer, der den Vorgang initiiert hat. Mögliche Werte sind entweder eine E-Mail-Adresse oder, bei geplanten Aufträgen, ein System.
Tenant_g GUID (Globally Unique Identifier), die den Mandanten für den Aufrufer identifiziert.
JobId_g Die GUID, der den Runbookauftrag identifiziert.
ResultType Status des Runbookauftrags. Dabei sind folgende Werte möglich:
- Neu
- Erstellt
- Gestartet
- Beendet
- Ausgesetzt
- Fehler
- Abgeschlossen
Kategorie Klassifizierung des Datentyps. Für Automation lautet der Wert „JobLogs“.
Vorgangsname Der Typ des in Azure ausgeführten Vorgangs. Für Automation lautet der Wert „Job“.
Ressource Name des Automation-Kontos
SourceSystem Das System, das Azure Monitor-Protokolle verwenden, um die Daten zu erfassen. Für Azure-Diagnose ist der Wert immer „Azure“.
ResultDescription Ergebniszustand des Runbookauftrags. Dabei sind folgende Werte möglich:
- Auftrag gestartet
- Fehler beim Ausführen des Auftrags
- Auftrag abgeschlossen
CorrelationId Korrelations-GUID des Runbookauftrags.
ResourceId Ressourcen-ID für das Azure Automation-Konto des Runbooks.
SubscriptionId Azure-Abonnement-GUID für das Automation-Konto.
ResourceGroup Name der Ressourcengruppe für das Automation-Konto.
ResourceProvider Name des Ressourcenanbieters Der Wert lautet „MICROSOFT.AUTOMATION“.
ResourceType Ressourcentyp: Der Wert lautet „AUTOMATIONACCOUNTS“.

Auftragsdatenströme

Eigenschaft BESCHREIBUNG
TimeGenerated Datum und Uhrzeit, an dem bzw. um die der Runbookauftrag ausgeführt wurde.
RunbookName_s Der Name des Runbooks.
Caller_s Aufrufer, der den Vorgang initiiert hat. Mögliche Werte sind entweder eine E-Mail-Adresse oder, bei geplanten Aufträgen, ein System.
StreamType_s Typ des Auftragsstreams. Dabei sind folgende Werte möglich:
- Status
- Ausgabe
- Warnung
- Fehler
- Debuggen
- Ausführlich
Tenant_g Die GUID, die den Mandanten für den Aufrufer identifiziert.
JobId_g Die GUID, der den Runbookauftrag identifiziert.
ResultType Der Status des Runbookauftrags. Dabei sind folgende Werte möglich:
– In Bearbeitung
Kategorie Klassifizierung des Datentyps. Für Automation lautet der Wert „JobStreams“.
Vorgangsname Der Typ des in Azure ausgeführten Vorgangs. Für Automation lautet der Wert „Job“.
Ressource Name des Automation-Kontos.
SourceSystem Das System, das Azure Monitor-Protokolle verwenden, um die Daten zu erfassen. Für Azure-Diagnose ist der Wert immer „Azure“.
ResultDescription Die Beschreibung, die den Ausgabedatenstrom des Runbooks enthält.
CorrelationId Korrelations-GUID des Runbookauftrags.
ResourceId Ressourcen-ID für das Azure Automation-Konto des Runbooks.
SubscriptionId Azure-Abonnement-GUID für das Automation-Konto.
ResourceGroup Name der Ressourcengruppe für das Automation-Konto.
ResourceProvider Ressourcenanbieter. Der Wert lautet „MICROSOFT.AUTOMATION“.
ResourceType Ressourcentyp: Der Wert lautet „AUTOMATIONACCOUNTS“.

Überwachen von Ereignissen

Eigenschaft BESCHREIBUNG
TenantID Die GUID, die den Mandanten für den Aufrufer identifiziert.
TimeGenerated (UTC) Datum und Uhrzeit, an dem bzw. um die der Runbookauftrag ausgeführt wird.
Kategorie AuditEvent
ResourceGroup Ressourcengruppenname des Automation-Kontos.
Subscription Id (Abonnement-ID) Azure-Abonnement-GUID für das Automation-Konto.
ResourceProvider MICROSOFT.AUTOMATION
Ressource Name des Automation-Kontos
ResourceType AUTOMATIONACCOUNTS
Vorgangsname Mögliche Werte sind „Update“, „Create“, „Delete“.
ResultType Status des Runbookauftrags. Möglicher Wert: „Completed“.
CorrelationId Korrelations-GUID des Runbookauftrags.
ResultDescription Ergebniszustand des Runbookauftrags. Mögliche Werte sind „Update“, „Create“, „Delete“.
Tenant_g Die GUID, die den Mandanten für den Aufrufer identifiziert.
SourceSystem System, das Azure Monitor-Protokolle zur Datenerfassung verwendet. Für Azure-Diagnose ist der Wert immer „Azure“.
clientInfo_IpAddress_s {scrubbed}
clientInfo_PrincipalName_s {scrubbed}
clientInfo_TenantId_g Mandanten-ID des Clients.
clientInfo_Issuer_s
clientInfo_ObjectId_g Objekt-ID des Clients.
clientInfo_AppId_g AppID des Clients.
clientInfo_ClientRequestId_g RequestID des Clients
targetResources_Resource_s „Account“, „Job“, „Credential“, „Connections“, „Variables“, „Runbook“.
Typ AzureDiagnostics
_ResourceId Ressourcen-ID für das Azure Automation-Konto des Runbooks.

Anzeigen von Automation-Protokollen in Azure Monitor-Protokollen

Nachdem Sie damit begonnen haben, Ihre Automation-Auftragsstreams und -protokolle an Azure Monitor-Protokolle zu senden, sehen wir uns nun an, wie Sie diese Protokolle in Azure Monitor-Protokollen verwenden können.

Führen Sie die folgende Abfrage aus, um die Protokolle anzuzeigen: kusto AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION"

Beispielabfragen für Auftragsprotokolle und Auftragsstreams

Durchführen einer Suche nach allen Aufträgen, die mit Fehlern abgeschlossen wurden

Neben Szenarien wie die Erstellung von Warnungen für Fehler können Sie auch ermitteln, wenn ein Runbookauftrag einen Fehler ohne Abbruch aufweist. In diesen Fällen erzeugt PowerShell einen Fehlerdatenstrom, die Fehler ohne Abbruch führen jedoch nicht dazu, dass der Auftrag unterbrochen wird oder fehlschlägt.

  1. Klicken Sie in Ihrem Log Analytics-Arbeitsbereich auf Protokolle.
  2. Geben Sie in das Abfragefeld Folgendes ein:
    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" | summarize AggregatedValue = count () by JobId_g. 
    
  3. Klicken Sie auf Suchen.

Anzeigen von Auftragsdatenströmen für einen Auftrag

Wenn Sie einen Auftrag debuggen, sollten Sie ggf. auch einen Blick in die Auftragsdatenströme werfen. Mit der folgenden Abfrage werden alle Datenströme für einen einzelnen Auftrag mit der GUID 2ebd22ea-e05e-4eb9-9d76-d73cbd4356e0 abgerufen:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and JobId_g == "2ebd22ea-e05e-4eb9-9d76-d73cbd4356e0"
| sort by TimeGenerated asc
| project ResultDescription

Historischen Auftragsstatus anzeigen

Abschließend sollten Sie Ihren Auftragsverlauf visualisieren. Sie können die folgende Abfrage verwenden, um nach dem Statusverlauf Ihrer Aufträge zu suchen.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and ResultType != "started"
| summarize AggregatedValue = count() by ResultType, bin(TimeGenerated, 1h)

Log Analytics Historical Job Status Chart

Durchführen einer Suche nach Protokollen, die Fehler in den Automatisierungsaufträgen melden

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" 
| where StreamType_s == "Error" 
| project TimeGenerated, Category, JobId_g, OperationName, RunbookName_s, ResultDescription, _ResourceId 

Durchführen einer Suche nach abgeschlossenen Azure Automation-Aufträgen

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and ResultType == "Completed" 
| project TimeGenerated, RunbookName_s, ResultType, _ResourceId, JobId_g

Durchführen einer Suche nach fehlerhaften, angehaltenen oder beendeten Azure Automation-Aufträgen

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Stopped" or ResultType == "Suspended") 
| project TimeGenerated, RunbookName_s, ResultType, _ResourceId, JobId_g 

Auflisten aller Runbooks und Aufträge, die erfolgreich mit Fehlern abgeschlossen wurden

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" 
| project TimeGenerated, RunbookName_s, StreamType_s, _ResourceId, ResultDescription, JobId_g 

Senden einer E-Mail, wenn ein Runbookauftrag mit einem Fehler abgebrochen oder angehalten wird

In den folgenden Schritten wird erläutert, wie Sie E-Mail-Warnungen in Azure Monitor einrichten, damit Sie benachrichtigt werden, wenn bei einem Runbookauftrag ein Fehler auftritt.

Um eine Warnungsregel zu erstellen, erstellen Sie eine Protokollsuche nach den Runbookauftragsdatensätzen, die die Warnung wie unter Abfragen der Protokolle beschrieben aufrufen sollen. Klicken Sie auf +Neue Warnungsregel, um die Warnungsregel zu konfigurieren.

  1. Klicken Sie in Ihrem Automation-Konto unter Überwachung auf Protokolle.

  2. Erstellen Sie eine Protokollsuchabfrage für Ihre Warnung, indem Sie ein Suchkriterium in das Abfragefeld eingeben.

    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Suspended")   
    

    Sie können auch eine Gruppierung nach Runbookname vornehmen, indem Sie Folgendes verwenden:

    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and     Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Suspended") | summarize AggregatedValue = count() by RunbookName_s 
    
  3. Klicken Sie oben auf der Seite auf +Neue Warnungsregel, um den Bildschirm Warnungsregel erstellen zu öffnen. Weitere Informationen zu den Konfigurationsoptionen für Warnungen finden Sie unter Protokollwarnungen in Azure.

Azure Automation-Diagnoseüberwachungsprotokolle

Sie können nun auch Überwachungsprotokolle an den Azure Monitor-Arbeitsbereich senden. Auf diese Weise können Unternehmen wichtige Automatisierungskontoaktivitäten für Sicherheit und Compliance überwachen. Wenn sie über die Azure-Diagnose-Einstellungen aktiviert sind, können Sie Telemetrie zu Erstellungs-, Aktualisierungs- und Löschvorgängen für automatisierungsbasierte Runbooks, Aufträge und Automatisierungsressourcen wie Verbindung, Anmeldeinformationen, Variable und Zertifikat sammeln. Sie können die Warnungen für Überwachungsprotokollbedingungen auch als Teil Ihrer Sicherheitsüberwachungsanforderungen konfigurieren.

Unterschied zwischen Aktivitätsprotokollen und Überwachungsprotokollen

Ein Aktivitätsprotokoll ist ein Plattformprotokoll in Azure, das Einblicke in Ereignisse auf Abonnementebene bietet. Das Aktivitätsprotokoll für das Automation-Konto enthält Informationen dazu, wann eine Automatisierungsressource geändert, erstellt oder gelöscht wurde. Der Name oder die ID der Ressource wird jedoch nicht erfasst.

Überwachungsprotokolle für Automation-Konten erfassen den Namen und die ID der Ressource (z. B. Automatisierungsvariable, Anmeldeinformationen, Verbindung) zusammen mit dem Typ des Vorgangs, der für die Ressource ausgeführt wird, und Azure Automation würde einige Details bereinigen (z. B. Client-IP-Daten, die der DSGVO-Konformität entsprechen).

Aktivitätsprotokolle enthalten Details wie etwa Client-IP-Daten, da es sich bei einem Aktivitätsprotokoll um ein Plattformprotokoll handelt, das detaillierte Diagnose- und Überwachungsinformationen für Azure-Ressourcen bereitstellt. Sie werden automatisch für Aktivitäten generiert, die in ARM auftreten, und an den Ressourcenanbieter des Aktivitätsprotokolls übertragen. Da Aktivitätsprotokolle Teil der Azure-Überwachung sind, werden einige Clientdaten angezeigt, um Einblicke in die Clientaktivität zu bieten.  

Beispielabfragen für Überwachungsprotokolle

Abfrage zum Anzeigen von Automation-Ressourcenüberwachungsprotokollen

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" 

Abfrage zum Überwachen von Aktualisierungs-, Erstellungs- oder Löschvorgängen von Variablen

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s == "Variable" 

Abfrage zum Überwachen von Runbookvorgängen wie Erstellungs-, Entwurfs- oder Aktualisierungsvorgängen

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Runbook" 

Abfrage zum Überwachen der Erstellung, Aktualisierung oder Löschung von Zertifikaten

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Certificate" 

Abfrage zum Überwachen der Erstellung, Aktualisierung oder Löschung von Anmeldeinformationen

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Credential" 

Filtern der Auftragsstatusausgabe, die in eine JSON-Objekt konvertiert wurde

Kürzlich haben wir das Verhalten geändert, wie die Automation-Protokolldaten in die AzureDiagnostics-Tabelle im Log Analytics-Dienst geschrieben werden, in der die JSON-Eigenschaften nicht mehr in separate Felder aufgeschlüsselt werden. Wenn Sie das Runbook so konfiguriert haben, dass Objekte im Ausgabestream im JSON-Format als separate Spalten formatiert werden, müssen Sie Ihre Abfragen so neu konfigurieren, dass dieses Feld in ein JSON-Objekt analysiert wird, um auf diese Eigenschaften zuzugreifen. Dies erfolgt mithilfe von parse json, um auf ein bestimmtes JSON-Element in einem bekannten Pfad zuzugreifen.

Ein Runbook formatiert z. B. die ResultDescription-Eigenschaft im Ausgabestream im JSON-Format mit mehreren Feldern. Um nach dem Status Ihrer Aufträge zu suchen, die sich in einem fehlerhaften Zustand befinden, der in einem Feld namens Status angegeben wird, verwenden Sie diese Beispielabfrage, um ResultDescription mit einem Status von Failed zu durchsuchen:

AzureDiagnostics
| where Category == 'JobStreams'
| extend jsonResourceDescription = parse_json(ResultDescription)
| where jsonResourceDescription.Status == 'Failed'

Log Analytics Historical Job Stream JSON format

Nächste Schritte