Verwenden von Logstash zum Streamen von Protokollen mit der HTTP-Datensammlungs-API (Legacy)

Wichtig

Die Datenerfassung mithilfe des Logstash-Ausgabe-Plug-Ins befindet sich zurzeit in der öffentlichen Vorschauphase. Dieses Feature wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Hinweis

Eine neuere Version des Logstash-Plug-Ins kann Protokolle aus externen Datenquellen über die auf Datensammlungsregeln basierende API in benutzerdefinierte und Standardtabellen weiterleiten. Das neue Plug-In ermöglicht die vollständige Kontrolle über das Ausgabeschema, darunter auch über die Konfiguration der Spaltennamen und -typen.

Mithilfe des Ausgabe-Plug-Ins von Microsoft Sentinel für die Logstash-Datensammlungs-Engine können Sie nun jeden gewünschten Protokolltyp über Logstash direkt an Ihren Log Analytics-Arbeitsbereich in Microsoft Sentinel senden. Ihre Protokolle werden an eine benutzerdefinierte Tabelle gesendet, die Sie mithilfe des Ausgabe-Plug-Ins festlegen. Diese Version des Plug-Ins verwendet die HTTP-Datensammlungs-API.

Weitere Informationen zum Arbeiten mit der Logstash-Datensammlungs-Engine finden Sie unter Erste Schritte mit Logstash.

Übersicht

Architektur und Hintergrund

Diagram of the Logstash architecture.

Die Logstash-Engine besteht aus drei Komponenten:

  • Eingabe-Plug-Ins: Angepasste Sammlung von Daten aus verschiedenen Quellen.
  • Filter-Plug-Ins: Bearbeitung und Normalisierung von Daten gemäß angegebener Kriterien.
  • Ausgabe-Plug-Ins: Angepasstes Senden gesammelter und verarbeiteter Daten an verschiedene Ziele.

Hinweis

  • Microsoft unterstützt nur das von Microsoft Sentinel bereitgestellte Logstash-Ausgabe-Plug-In, das hier beschrieben wird. Die aktuelle Version dieses Plug-Ins ist v1.0.0, veröffentlicht am 25.08.2020. Für Probleme im Zusammenhang mit dem Ausgabe-Plug-In können Sie ein Supportticket erstellen.

  • Logstash-Ausgabe-Plug-Ins von Drittanbietern für Microsoft Sentinel, andere Logstash-Plug-Ins oder Komponenten eines anderen Typs werden von Microsoft nicht unterstützt.

  • Das Logstash-Ausgabe-Plug-In von Microsoft Sentinel unterstützt nur Logstash-Versionen von 7.0 bis 7.17.10 und von 8.0 bis 8.9 sowie 8.11. Wenn Sie Logstash 8 verwenden, wird empfohlen, Elastic Common Schema (ECS) in der Pipeline zu deaktivieren.

Das Microsoft Sentinel-Ausgabe-Plug-In für Logstash sendet JSON-formatierte Daten mithilfe der HTTP-Datensammler-REST-API von Log Analytics an Ihren Log Analytics-Arbeitsbereich. Die Daten werden in benutzerdefinierten Protokollen erfasst.

Bereitstellen des Microsoft Sentinel-Ausgabe-Plug-Ins in Logstash

Schritt 1: Installation

Das Microsoft Sentinel-Ausgabe-Plug-In ist in der Logstash-Sammlung verfügbar.

Schritt 2: Konfiguration

Fügen Sie anhand der Informationen im Logstash-Dokument zur Struktur einer Konfigurationsdatei das Microsoft Sentinel-Ausgabe-Plug-In mit den folgenden Schlüsseln und Werten zur Konfiguration hinzu: (Die ordnungsgemäße Konfigurationsdateisyntax ist unterhalb der Tabelle angegeben.)

Feldname Datentyp Beschreibung
workspace_id Zeichenfolge Geben Sie die ID-GUID Ihres Arbeitsbereichs ein (siehe Tipp).
workspace_key Zeichenfolge Geben Sie die GUID für den Primärschlüssel des Arbeitsbereichs ein (siehe Tipp).
custom_log_table_name Zeichenfolge Legen Sie den Namen der Tabelle fest, in der die Protokolle erfasst werden. Es kann nur ein Tabellenname pro Ausgabe-Plug-In konfiguriert werden. Die Protokolltabelle wird in Microsoft Sentinel im Bereich Protokolle unter Tabellen in der Kategorie Benutzerdefinierte Protokolle mit dem Suffix _CL angezeigt.
endpoint Zeichenfolge Optionales Feld. Dies ist standardmäßig der Log Analytics-Endpunkt. Verwenden Sie dieses Feld, um einen alternativen Endpunkt festzulegen.
time_generated_field Zeichenfolge Optionales Feld. Diese Eigenschaft überschreibt das standardmäßige Feld TimeGenerated in Log Analytics. Geben Sie den Namen des Zeitstempelfelds in der Datenquelle ein. Die Daten im Feld müssen dem ISO 8601-Format (YYYY-MM-DDThh:mm:ssZ) entsprechen.
key_names array Geben Sie eine Liste der Ausgabeschemafelder in Log Analytics ein. Jedes Listenelement muss in einfache Anführungszeichen eingeschlossen, die Elemente müssen durch Kommas getrennt und die gesamte Liste muss in eckige Klammern eingeschlossen werden. Ein Beispiel sehen Sie unten.
plugin_flush_interval number Optionales Feld. Geben Sie einen Wert an, um das maximale Intervall (in Sekunden) zwischen den Nachrichtenübertragungen an Log Analytics zu definieren. Der Standardwert ist 5.
amount_resizing boolean „true“ oder „false“. Aktivieren oder deaktivieren Sie den automatischen Skalierungsmechanismus, der die Größe des Nachrichtenpuffers entsprechend der Menge der empfangenen Protokolldaten anpasst.
max_items number Optionales Feld. Gilt nur, wenn amount_resizing auf „false“ festgelegt ist. Hiermit können Sie eine Obergrenze für die Nachrichtenpuffergröße (in Datensätzen) festlegen. Der Standardwert ist „2000“.
azure_resource_id Zeichenfolge Optionales Feld. Definiert die ID der Azure-Ressource, in der sich die Daten befinden.
Der Wert der Ressourcen-ID ist besonders hilfreich, wenn Sie die rollenbasierte Zugriffssteuerung (RBAC) im Ressourcenkontext verwenden, um nur Zugriff auf bestimmte Daten bereitzustellen.

Tipp

  • Sie finden die Arbeitsbereichs-ID und den Primärschlüssel in der Arbeitsbereichsressource unter Agent-Verwaltung.
  • Da die Speicherung von Anmeldeinformationen und anderen vertraulichen Informationen in Klartext in Konfigurationsdateien jedoch nicht den bewährten Sicherheitspraktiken entspricht, wird Ihnen dringend empfohlen, den Logstash-Schlüsselspeicher zu verwenden, um Ihre Arbeitsbereichs-ID und den Primärschlüssel des Arbeitsbereichs sicher in die Konfiguration aufzunehmen. Eine Anleitung hierzu finden Sie in der Dokumentation zu Elastic.

Beispielkonfigurationen

Hier sind einige Beispielkonfigurationen, in denen einige verschiedene Optionen verwendet werden.

  • Eine einfache Konfiguration, die eine Filebeat-Eingabepipe verwendet:

      input {
          beats {
              port => "5044"
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "<your workspace id>"
            workspace_key => "<your workspace key>"
            custom_log_table_name => "tableName"
          }
      }
    
  • Eine einfache Konfiguration, die eine TCP-Eingabepipe verwendet:

      input {
          tcp {
              port => "514"
              type => syslog #optional, will effect log type in table
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "<your workspace id>"
            workspace_key =>  "<your workspace key>"
            custom_log_table_name => "tableName"
          }
      }
    
  • Eine erweiterte Konfiguration:

      input {
          tcp {
              port => 514
              type => syslog
          }
      }
      filter {
          grok {
              match => { "message" => "<%{NUMBER:PRI}>1 (?<TIME_TAG>[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}T[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})[^ ]* (?<HOSTNAME>[^ ]*) %{GREEDYDATA:MSG}" }
          }
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
              workspace_id => "<WS_ID>"
              workspace_key => "${WS_KEY}"
              custom_log_table_name => "logstashCustomTable"
              key_names => ['PRI','TIME_TAG','HOSTNAME','MSG']
              plugin_flush_interval => 5
          }
      } 
    
  • Eine erweiterte Konfiguration zum Analysieren eines benutzerdefinierten Zeitstempels und einer JSON-Zeichenfolge aus unstrukturierten Textdaten und zum Protokollieren einer ausgewählten Gruppe von Feldern in Log Analytics mit dem extrahierten Zeitstempel:

      # Example log line below:
      # Mon Nov 07 20:45:08 2022: { "name":"_custom_time_generated", "origin":"test_microsoft", "sender":"test@microsoft.com", "messages":1337}
      # take an input
      input {
          file {
              path => "/var/log/test.log"
          }
      }
      filter {
      # extract the header timestamp and the Json section
          grok {
              match => {
                  "message" => ["^(?<timestamp>.{24}):\s(?<json_data>.*)$"]
              }
          }
      # parse the extracted header as a timestamp
      date {
          id => 'parse_metric_timestamp'
              match => [ 'timestamp', 'EEE MMM dd HH:mm:ss yyyy' ]
              timezone => 'Europe/Rome'
              target => 'custom_time_generated'
          }
      json {
          source => "json_data"
          }
      }
      # output to a file for debugging (optional)
      output {
          file {
              path => "/tmp/test.txt"
              codec => line { format => "custom format: %{message} %{custom_time_generated} %{json_data}"}
          }
      }
      # output to the console output for debugging (optional)
      output {
          stdout { codec => rubydebug }
      }
      # log into Log Analytics
      output {
          microsoft-logstash-output-azure-loganalytics {
              workspace_id => '[REDACTED]'
              workspace_key => '[REDACTED]'
              custom_log_table_name => 'RSyslogMetrics'
              time_generated_field => 'custom_time_generated'
              key_names => ['custom_time_generated','name','origin','sender','messages']
          }
      }
    

    Hinweis

    Besuchen Sie das GitHub-Repository für Ausgabe-Plug-Ins, um mehr über seine innere Funktionsweise, Konfiguration und Leistungseinstellungen zu erfahren.

Schritt 3: Neustarten von Logstash

Schritt 4: Anzeigen eingehender Protokolle in Microsoft Sentinel

  1. Überprüfen Sie, ob Nachrichten an das Ausgabe-Plug-In gesendet werden.

  2. Klicken Sie im Microsoft Sentinel-Navigationsmenü auf Protokolle. Erweitern Sie unter der Überschrift Tabellen die Kategorie Benutzerdefinierte Protokolle. Suchen Sie den Namen der von Ihnen in der Konfiguration angegebenen Tabelle (mit dem Suffix _CL), und klicken Sie darauf.

    Screenshot of log stash custom logs.

  3. Zum Anzeigen von Datensätzen in der Tabelle fragen Sie die Tabelle ab. Verwenden Sie dazu den Tabellennamen als Schema.

    Screenshot of a log stash custom logs query.

Überwachen der Ausgabe-Plug-In-Überwachungsprotokolle

Zum Überwachen der Konnektivität und Aktivität des Microsoft Sentinel-Ausgabe-Plug-Ins aktivieren Sie die entsprechende Logstash-Protokolldatei. Informationen zum Speicherort der Protokolldatei finden Sie im Dokument zum Logstash-Verzeichnislayout.

Wenn in dieser Protokolldatei keine Daten angegeben sind, generieren und senden Sie einige Ereignisse lokal (über die Eingabe- und Filter-Plug-Ins), um sicherzustellen, dass das Ausgabe-Plug-In Daten empfängt. Microsoft Sentinel unterstützt nur Probleme im Zusammenhang mit dem Ausgabe-Plug-In.

Nächste Schritte

In diesem Dokument haben Sie erfahren, wie Sie Logstash zum Verbinden externer Datenquellen mit Microsoft Sentinel verwenden. Weitere Informationen zu Microsoft Sentinel finden Sie in den folgenden Artikeln: