Udostępnij za pośrednictwem


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: