Przesyłanie strumieniowe dzienników przy użyciu interfejsu API zbierania danych HTTP (starsza wersja) przy użyciu usługi Logstash

Ważne

Pozyskiwanie danych przy użyciu wtyczki danych wyjściowych usługi 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 zdefiniowanej przy użyciu wtyczki wyjściowej. Ta wersja wtyczki korzysta z interfejsu API zbierania danych HTTP.

Aby dowiedzieć się więcej na temat pracy z aparatem zbierania danych usługi Logstash, zobacz Wprowadzenie do usługi Logstash.

Omówienie

Architektura i tło

Diagram of the Logstash architecture.

Aparat logstash składa się z trzech składnikó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 usługi Logstash dostarczoną przez usługę Microsoft Sentinel omówiona tutaj. Bieżąca wersja tej wtyczki to v1.0.0, wydana 2020-08-25. Możesz otworzyć bilet pomocy technicznej dla wszelkich 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 usługi Logstash 8, zalecamy wyłączenie usługi ECS w potoku.

Wtyczka danych wyjściowych usługi Microsoft Sentinel dla usługi Logstash wysyła dane w formacie JSON do obszaru roboczego usługi Log Analytics przy użyciu interfejsu API REST modułu zbierającego dane HTTP usługi Log Analytics. Dane są pozyskiwane do dzienników niestandardowych.

  • Dowiedz się więcej o interfejsie API REST usługi Log Analytics.
  • Dowiedz się więcej o dziennikach niestandardowych.

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

Krok 1. Instalacja

Wtyczka danych wyjściowych usługi Microsoft Sentinel jest dostępna w kolekcji Logstash.

  • Postępuj zgodnie z instrukcjami w dokumencie Logstash Working with plugins (Praca z wtyczkami usługi Logstash), 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 (Struktura usługi Logstash pliku konfiguracji) i dodaj wtyczkę danych wyjściowych usługi 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ź identyfikator GUID identyfikatora obszaru roboczego (zobacz Porada).
workspace_key string Wprowadź identyfikator GUID klucza podstawowego obszaru roboczego (zobacz Porada).
custom_log_table_name string Ustaw nazwę tabeli, do której dzienniki zostaną pozyskane. 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 obszarze 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ęta w pojedynczy cudzysłów i elementy oddzielone przecinkami, a cała lista 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 boolean True lub false. 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 używasz kontroli dostępu opartej na rolach kontekstu zasobów w celu zapewnienia dostępu 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 korzystająca z potoku wejściowego pliku:

      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 korzystająca z potoku wejściowego 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 GitHub wtyczki wyjściowej, aby dowiedzieć się więcej na temat jej wewnętrznych funkcji, konfiguracji i ustawień wydajności.

Krok 3. Ponowne uruchamianie usługi Logstash

Krok 4. Wyświetlanie dzienników przychodzących w usłudze 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.

    Screenshot of log stash custom logs.

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

    Screenshot of a log stash custom logs query.

Monitorowanie dzienników inspekcji wtyczki danych wyjściowych

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: