Udostępnij przez


[Przestarzałe] Użyj Logstash do przesyłania dzienników strumieniowo za pomocą interfejsu API zbierania danych HTTP (starsza wersja)

Ważne

Zbieranie dzienników z wielu urządzeń jest teraz obsługiwane przez format Common Event Format (CEF) za pośrednictwem AMA, Syslog za pośrednictwem AMA lub dzienników niestandardowych za pośrednictwem łącznika danych AMA w usłudze Microsoft Sentinel. Aby uzyskać więcej informacji, zobacz Znajdowanie łącznika danych usługi Microsoft Sentinel.

Ważne

Pozyskiwanie danych przy użyciu wtyczki wyjściowej Logstash jest obecnie dostępne w publicznej wersji zapoznawczej. Ta funkcja jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Uwaga

Nowsza wersja wtyczki Logstash może przekazywać dzienniki z zewnętrznych źródeł danych do niestandardowych i standardowych tabel przy użyciu interfejsu API opartego na protokole DCR. Nowa wtyczka umożliwia pełną kontrolę nad schematem wyjściowym, w tym konfiguracją nazw i typów kolumn.

Korzystając z wtyczki wyjściowej usługi Microsoft Sentinel dla aparatu zbierania danych usługi Logstash, możesz wysłać dowolny typ dziennika bezpośrednio do obszaru roboczego usługi Log Analytics w usłudze Microsoft Sentinel. Dzienniki zostaną wysłane do tabeli niestandardowej, której definicję tworzysz za pomocą wtyczki wyjściowej. Ta wersja wtyczki korzysta z interfejsu API zbierania danych HTTP.

Aby dowiedzieć się więcej na temat pracy z silnikiem zbierania danych Logstash, zobacz Wprowadzenie do Logstash.

Omówienie

Architektura i tło

Diagram architektury usługi Logstash.

Aparat Logstash składa się z trzech komponentów:

  • Wtyczki wejściowe: dostosowywanie zbierania danych z różnych źródeł.
  • Wtyczki filtru: manipulowanie danymi i normalizacja ich zgodnie z określonymi kryteriami.
  • Wtyczki wyjściowe: dostosowane wysyłanie zebranych i przetworzonych danych do różnych miejsc docelowych.

Uwaga

  • Firma Microsoft obsługuje tylko wtyczkę danych wyjściowych Logstash dostarczoną przez Microsoft Sentinel, omówioną tutaj. Bieżąca wersja tej wtyczki to v1.0.0, wydana 2020-08-25. Możesz zgłosić zlecenie pomocy technicznej w przypadku jakichkolwiek problemów dotyczących wtyczki wyjściowej.

  • Firma Microsoft nie obsługuje wtyczek wyjściowych usługi Logstash innych firm dla usługi Microsoft Sentinel ani żadnych innych wtyczek lub składników usługi Logstash dowolnego typu.

  • Wtyczka danych wyjściowych usługi Logstash firmy Microsoft Sentinel obsługuje tylko usługę Logstash w wersji 7.0 do 7.17.10 oraz wersje 8.0 do 8.9 i 8.11. Jeśli używasz Logstash 8, zalecamy wyłączenie ECS w potoku.

Wtyczka wyjściowa Microsoft Sentinel dla Logstash wysyła dane w formacie JSON do obszaru roboczego Log Analytics, korzystając z interfejsu REST API HTTP Data Collector Log Analytics. Dane są przekazywane do dzienników niestandardowych.

Wdrażanie wtyczki wyjściowej usługi Microsoft Sentinel w usłudze Logstash

Krok 1. Instalacja

Wtyczka wyjściowa Microsoft Sentinel jest dostępna w kolekcji Logstash.

  • Postępuj zgodnie z instrukcjami w dokumencie Logstash Working with plugins (Praca z wtyczkami), aby zainstalować wtyczkę microsoft-logstash-output-azure-loganalytics.

  • Jeśli system usługi Logstash nie ma dostępu do Internetu, postępuj zgodnie z instrukcjami w dokumencie Logstash Offline Plugin Management (Zarządzanie wtyczkami offline usługi Logstash), aby przygotować i użyć pakietu wtyczek offline. (Będzie to wymagało utworzenia innego systemu usługi Logstash z dostępem do Internetu).

Krok 2. Konfiguracja

Skorzystaj z informacji w dokumencie Logstash Structure of a config file i dodaj wtyczkę wyjściową Microsoft Sentinel do konfiguracji z następującymi kluczami i wartościami. (Prawidłowa składnia pliku konfiguracji jest wyświetlana po tabeli).

Nazwa pola Typ danych opis
workspace_id string Wprowadź GUID identyfikatora obszaru roboczego (zobacz Porada).
workspace_key string Wprowadź identyfikator GUID klucza głównego obszaru roboczego (zobacz wskazówkę).
custom_log_table_name ciąg znaków Ustaw nazwę tabeli, do której dzienniki zostaną wczytane. Można skonfigurować tylko jedną nazwę tabeli na wtyczkę wyjściową. Tabela dzienników zostanie wyświetlona w usłudze Microsoft Sentinel w obszarze Dzienniki, w Tabele w kategorii Dzienniki niestandardowe, z sufiksem _CL.
endpoint string Pole opcjonalne. Domyślnie jest to punkt końcowy usługi Log Analytics. Użyj tego pola, aby ustawić alternatywny punkt końcowy.
time_generated_field string Pole opcjonalne. Ta właściwość zastępuje domyślne pole TimeGenerated w usłudze Log Analytics. Wprowadź nazwę pola znacznika czasu w źródle danych. Dane w polu muszą być zgodne z formatem ISO 8601 (YYYY-MM-DDThh:mm:ssZ)
key_names tablica Wprowadź listę pól schematu wyjściowego usługi Log Analytics. Każdy element listy powinien być ujęty w pojedynczy cudzysłów, a elementy oddzielone przecinkami, natomiast cała lista powinna być ujęta w nawiasy kwadratowe. Zobacz poniższe przykłady.
plugin_flush_interval Liczba Pole opcjonalne. Ustaw wartość , aby zdefiniować maksymalny interwał (w sekundach) między transmisjami komunikatów do usługi Log Analytics. Ustawieniem domyślnym jest 5.
amount_resizing typ logiczny (boolowski) Prawda czy fałsz. Włącz lub wyłącz mechanizm automatycznego skalowania, który dostosowuje rozmiar buforu komunikatów zgodnie z ilością odebranych danych dziennika.
max_items Liczba Pole opcjonalne. Dotyczy tylko wtedy, gdy amount_resizing ustawiono wartość "false". Służy do ustawiania limitu rozmiaru buforu komunikatów (w rekordach). Wartość domyślna to 2000.
azure_resource_id string Pole opcjonalne. Definiuje identyfikator zasobu platformy Azure, w którym znajdują się dane.
Wartość identyfikatora zasobu jest szczególnie przydatna, jeśli korzystasz z RBAC kontekstu zasobów, aby zapewnić dostęp tylko do określonych danych.

Napiwek

  • Identyfikator obszaru roboczego i klucz podstawowy można znaleźć w zasobie obszaru roboczego w obszarze Zarządzanie agentami.
  • Jednak ponieważ posiadanie poświadczeń i innych poufnych informacji przechowywanych w postaci zwykłego tekstu w plikach konfiguracji nie jest zgodne z najlepszymi rozwiązaniami w zakresie zabezpieczeń, zdecydowanie zachęcamy do korzystania z magazynu kluczy usługi Logstash w celu bezpiecznego uwzględnienia identyfikatora obszaru roboczego i klucza podstawowego obszaru roboczego w konfiguracji. Aby uzyskać instrukcje, zobacz dokumentację usługi Elastic.

Przykładowe konfiguracje

Poniżej przedstawiono kilka przykładowych konfiguracji, które korzystają z kilku różnych opcji.

  • Podstawowa konfiguracja wykorzystująca wejściowy potok Filebeat.

      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"
          }
      }
    
  • Podstawowa konfiguracja z użyciem wejściowego kanału TCP.

      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"
          }
      }
    
  • Zaawansowana konfiguracja:

      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
          }
      } 
    
  • Bardziej zaawansowana konfiguracja do analizowania niestandardowego znacznika czasu i ciągu JSON z danych tekstowych bez struktury i rejestrowania wybranego zestawu pól w usłudze Log Analytics przy użyciu wyodrębnionego znacznika czasu:

      # 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']
          }
      }
    

    Uwaga

    Odwiedź repozytorium wtyczki wyjściowej na GitHubie, aby dowiedzieć się więcej na temat jego wewnętrznego działania, konfiguracji i ustawień wydajności.

Krok 3. Ponowne uruchamianie usługi Logstash

Krok 4: Wyświetlanie dzienników przychodzących w Microsoft Sentinel

  1. Sprawdź, czy komunikaty są wysyłane do wtyczki wyjściowej.

  2. W menu nawigacji usługi Microsoft Sentinel kliknij pozycję Dzienniki. W obszarze nagłówka Tabele rozwiń kategorię Dzienniki niestandardowe. Znajdź i kliknij nazwę tabeli określonej (z sufiksem _CL ) w konfiguracji.

    Zrzut ekranu przedstawiający niestandardowe dzienniki.

  3. Aby wyświetlić rekordy w tabeli, wykonaj zapytanie względem tabeli przy użyciu nazwy tabeli jako schematu.

    Zrzut ekranu przedstawiający zapytanie niestandardowych dzienników w Logstash.

Monitorowanie dzienników audytu wtyczki wyjściowej

Aby monitorować łączność i aktywność wtyczki wyjściowej usługi Microsoft Sentinel, włącz odpowiedni plik dziennika logstash. Zobacz dokument Logstash Directory Layout (Układ katalogu usługi Logstash) dla lokalizacji pliku dziennika.

Jeśli nie widzisz żadnych danych w tym pliku dziennika, wygeneruj i wyślij niektóre zdarzenia lokalnie (za pośrednictwem wtyczek wejściowych i filtrów), aby upewnić się, że wtyczka wyjściowa odbiera dane. Usługa Microsoft Sentinel będzie obsługiwać tylko problemy związane z wtyczką wyjściową.

Następne kroki

W tym dokumencie przedstawiono sposób używania usługi Logstash do łączenia zewnętrznych źródeł danych z usługą Microsoft Sentinel. Aby dowiedzieć się więcej o usłudze Microsoft Sentinel, zobacz następujące artykuły: