Dela via


[Inaktuell] Använda Logstash för att strömma loggar med HTTP Data Collection API (äldre)

Viktigt!

Logginsamling från många enheter och enheter stöds nu av Common Event Format (CEF) via AMA, Syslog via AMA eller anpassade loggar via AMA-dataanslutningen i Microsoft Sentinel. Mer information finns i Hitta din Microsoft Sentinel-dataanslutningsapp.

Viktigt!

Datainmatning med logstash-utdata-plugin-programmet finns för närvarande i offentlig förhandsversion. Den här funktionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Kommentar

En nyare version av Logstash-plugin-programmet kan vidarebefordra loggar från externa datakällor till anpassade tabeller och standardtabeller med hjälp av DET DCR-baserade API:et. Det nya plugin-programmet ger fullständig kontroll över utdataschemat, inklusive konfigurationen av kolumnnamnen och typerna.

Med hjälp av Microsoft Sentinels utdata-plugin-program för Logstash-datainsamlingsmotorn kan du skicka vilken typ av logg du vill via Logstash direkt till log analytics-arbetsytan i Microsoft Sentinel. Loggarna skickas till en anpassad tabell som du definierar med hjälp av plugin-programmet för utdata. Den här versionen av plugin-programmet använder API:et FÖR HTTP-datainsamling.

Mer information om hur du arbetar med Logstash-datainsamlingsmotorn finns i Komma igång med Logstash.

Översikt

Arkitektur och bakgrund

Diagram över Logstash-arkitekturen.

Logstash-motorn består av tre komponenter:

  • Plugin-program för indata: Anpassad insamling av data från olika källor.
  • Filter-plugin-program: Manipulering och normalisering av data enligt angivna kriterier.
  • Plugin-program för utdata: Anpassad sändning av insamlade och bearbetade data till olika mål.

Kommentar

  • Microsoft stöder endast plugin-programmet för Logstash-utdata från Microsoft Sentinel som beskrivs här. Den aktuella versionen av plugin-programmet är v1.0.0, som släpptes 2020-08-25. Du kan öppna ett supportärende för eventuella problem med plugin-programmet för utdata.

  • Microsoft stöder inte logstash-utdatainsticksprogram från tredje part för Microsoft Sentinel eller andra Logstash-plugin-program eller -komponenter av någon typ.

  • Plugin-programmet logstash-utdata i Microsoft Sentinel stöder endast Logstash-versionerna 7.0 till 7.17.10 och versionerna 8.0 till 8.9 och 8.11. Om du använder Logstash 8 rekommenderar vi att du inaktiverar ECS i pipelinen.

Plugin-programmet för Microsoft Sentinel-utdata för Logstash skickar JSON-formaterade data till din Log Analytics-arbetsyta med hjälp av LOG Analytics HTTP Data Collector REST API. Data matas in i anpassade loggar.

Distribuera plugin-programmet för Microsoft Sentinel-utdata i Logstash

Steg 1: Installation

Plugin-programmet för Microsoft Sentinel-utdata är tillgängligt i Logstash-samlingen.

Steg 2: Konfiguration

Använd informationen i Logstash-strukturen i ett konfigurationsfildokument och lägg till Plugin-programmet för Microsoft Sentinel-utdata i konfigurationen med följande nycklar och värden. (Rätt syntax för konfigurationsfilen visas efter tabellen.)

Fältnamn Datatyp beskrivning
workspace_id sträng Ange ditt arbetsyte-ID GUID (se Tips).
workspace_key sträng Ange primärnyckeln för arbetsytans GUID (se Tips).
custom_log_table_name sträng Ange namnet på tabellen som loggarna ska matas in i. Endast ett tabellnamn per plugin-program för utdata kan konfigureras. Loggtabellen visas i Microsoft Sentinel under Loggar i Tabeller i kategorin Anpassade loggar med ett _CL suffix.
endpoint sträng Valfritt fält. Som standard är detta Log Analytics-slutpunkten. Använd det här fältet för att ange en alternativ slutpunkt.
time_generated_field sträng Valfritt fält. Den här egenskapen åsidosätter standardfältet TimeGenerated i Log Analytics. Ange namnet på tidsstämpelfältet i datakällan. Data i fältet måste överensstämma med ISO 8601-formatet (YYYY-MM-DDThh:mm:ssZ)
key_names matris Ange en lista över Log Analytics-utdataschemafält. Varje listobjekt ska omges av enkla citattecken och objekt avgränsade med kommatecken, och hela listan omges av hakparenteser. Se exemplet nedan.
plugin_flush_interval Nummer Valfritt fält. Ange för att definiera det maximala intervallet (i sekunder) mellan meddelandeöverföringar till Log Analytics. Standardinställningen är 5.
amount_resizing boolean true eller false. Aktivera eller inaktivera den automatiska skalningsmekanismen, som justerar meddelandebuffertens storlek enligt mängden mottagna loggdata.
max_items Nummer Valfritt fält. Gäller endast om amount_resizing det är inställt på "false". Använd för att ange ett tak för meddelandebuffertstorleken (i poster). Standardvärdet är 2 000.
azure_resource_id sträng Valfritt fält. Definierar ID för Den Azure-resurs där data finns.
Resurs-ID-värdet är särskilt användbart om du använder RBAC för resurskontext för att endast ge åtkomst till specifika data.

Dricks

  • Du hittar arbetsyte-ID:t och primärnyckeln i arbetsyteresursen under Agenthantering.
  • Men eftersom autentiseringsuppgifter och annan känslig information som lagras i klartext i konfigurationsfiler inte är i linje med bästa praxis för säkerhet, rekommenderar vi starkt att du använder Logstash-nyckelarkivet för att på ett säkert sätt inkludera ditt arbetsyte-ID och primärnyckel för arbetsytan i konfigurationen. Anvisningar finns i Elastics dokumentation .

Exempelkonfigurationer

Här följer några exempelkonfigurationer som använder några olika alternativ.

  • En grundläggande konfiguration som använder en filebeat-indatapipa:

      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"
          }
      }
    
  • En grundläggande konfiguration som använder ett tcp-indatarör:

      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"
          }
      }
    
  • En avancerad 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
          }
      } 
    
  • En mer avancerad konfiguration för att parsa en anpassad tidsstämpel och en JSON-sträng från ostrukturerade textdata och logga en vald uppsättning fält i Log Analytics med den extraherade tidsstämpeln:

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

    Kommentar

    Besök GitHub-lagringsplatsen för plugin-programmet för utdata om du vill veta mer om dess inre funktioner, konfiguration och prestandainställningar.

Steg 3: Starta om Logstash

Steg 4: Visa inkommande loggar i Microsoft Sentinel

  1. Kontrollera att meddelanden skickas till plugin-programmet för utdata.

  2. Klicka på Loggar på Microsoft Sentinel-navigeringsmenyn. Under rubriken Tabeller expanderar du kategorin Anpassade loggar . Leta upp och klicka på namnet på den tabell som du angav (med ett _CL suffix) i konfigurationen.

    Skärmbild av anpassade loggfiler.

  3. Om du vill se poster i tabellen frågar du tabellen med tabellnamnet som schema.

    Skärmbild av en loggfrågefråga för anpassade loggar.

Övervaka granskningsloggar för plugin-program för utdata

Om du vill övervaka anslutningen och aktiviteten för Plugin-programmet för Microsoft Sentinel-utdata aktiverar du lämplig Logstash-loggfil. Se dokumentet Logstash-kataloglayout för loggfilens plats.

Om du inte ser några data i den här loggfilen genererar och skickar du vissa händelser lokalt (via plugin-programmet för indata och filter) för att kontrollera att plugin-programmet för utdata tar emot data. Microsoft Sentinel stöder endast problem som rör plugin-programmet för utdata.

Nästa steg

I det här dokumentet har du lärt dig hur du använder Logstash för att ansluta externa datakällor till Microsoft Sentinel. Mer information om Microsoft Sentinel finns i följande artiklar: