Logstash gebruiken om logboeken te streamen met de HTTP-gegevensverzamelings-API (verouderd)

Belangrijk

Gegevensopname met behulp van de Logstash-uitvoerinvoegtoepassing is momenteel beschikbaar als openbare preview. Deze functie wordt geleverd zonder service level agreement en wordt niet aanbevolen voor productieworkloads. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Notitie

Een nieuwere versie van de Logstash-invoegtoepassing kan logboeken van externe gegevensbronnen doorsturen naar aangepaste en standaardtabellen met behulp van de OP DCR gebaseerde API. De nieuwe invoegtoepassing biedt volledige controle over het uitvoerschema, inclusief de configuratie van de kolomnamen en -typen.

Met behulp van de uitvoerinvoegtoepassing van Microsoft Sentinel voor de logstash-gegevensverzamelingsengine kunt u elk type logboek dat u wilt verzenden via Logstash rechtstreeks naar uw Log Analytics-werkruimte in Microsoft Sentinel. Uw logboeken worden verzonden naar een aangepaste tabel die u definieert met behulp van de uitvoerinvoegtoepassing. Deze versie van de invoegtoepassing maakt gebruik van de HTTP Data Collection-API.

Zie Aan de slag met Logstash voor logboeken voor meer informatie over het werken met de logstash-engine voor gegevensverzameling.

Overzicht

Architectuur en achtergrond

Diagram of the Logstash architecture.

De Logstash-engine bestaat uit drie onderdelen:

  • Invoerinvoegtoepassingen: Aangepaste verzameling van gegevens uit verschillende bronnen.
  • Filterinvoegtoepassingen: Manipulatie en normalisatie van gegevens volgens opgegeven criteria.
  • Uitvoerinvoegtoepassingen: Aangepast verzenden van verzamelde en verwerkte gegevens naar verschillende bestemmingen.

Notitie

  • Microsoft ondersteunt alleen de door Microsoft Sentinel geleverde Logstash-uitvoerinvoegtoepassing die hier wordt besproken. De huidige versie van deze invoegtoepassing is v1.0.0, uitgebracht op 2020-08-25. U kunt een ondersteuningsticket openen voor problemen met betrekking tot de uitvoerinvoegtoepassing.

  • Microsoft biedt geen ondersteuning voor logstash-uitvoerinvoegtoepassingen van derden voor Microsoft Sentinel of andere Logstash-invoegtoepassingen of onderdelen van elk type.

  • De Logstash-uitvoerinvoegtoepassing van Microsoft Sentinel ondersteunt alleen Logstash-versies 7.0 tot 7.17.10 en versies 8.0 tot 8.9 en 8.11. Als u Logstash 8 gebruikt, raden we u aan ECS uit te schakelen in de pijplijn.

De Microsoft Sentinel-uitvoerinvoegtoepassing voor Logstash verzendt JSON-geformatteerde gegevens naar uw Log Analytics-werkruimte met behulp van de REST API van Log Analytics HTTP Data Collector. De gegevens worden opgenomen in aangepaste logboeken.

De Microsoft Sentinel-uitvoerinvoegtoepassing implementeren in Logstash

Stap 1: Installatie

De Microsoft Sentinel-uitvoerinvoegtoepassing is beschikbaar in de Logstash-verzameling.

Stap 2: Configuratie

Gebruik de informatie in de Logstash-structuur van een configuratiebestandsdocument en voeg de Microsoft Sentinel-uitvoerinvoegtoepassing toe aan de configuratie met de volgende sleutels en waarden. (De juiste syntaxis van het configuratiebestand wordt weergegeven na de tabel.)

Veldnaam Gegevenstype Beschrijving
workspace_id tekenreeks Voer de GUID van uw werkruimte-id in (zie Tip).
workspace_key tekenreeks Voer de GUID van de primaire sleutel van uw werkruimte in (zie Tip).
custom_log_table_name tekenreeks Stel de naam in van de tabel waarin de logboeken worden opgenomen. Er kan slechts één tabelnaam per uitvoerinvoegtoepassing worden geconfigureerd. De logboektabel wordt weergegeven in Microsoft Sentinel onder Logboeken, in tabellen in de categorie Aangepaste logboeken , met een _CL achtervoegsel.
endpoint tekenreeks Optioneel veld. Dit is standaard het Log Analytics-eindpunt. Gebruik dit veld om een alternatief eindpunt in te stellen.
time_generated_field tekenreeks Optioneel veld. Met deze eigenschap wordt het standaardveld TimeGenerated in Log Analytics overschreven . Voer de naam in van het tijdstempelveld in de gegevensbron. De gegevens in het veld moeten voldoen aan de ISO 8601-indeling (YYYY-MM-DDThh:mm:ssZ)
key_names matrix Voer een lijst in met log Analytics-uitvoerschemavelden. Elk lijstitem moet tussen enkele aanhalingstekens en de items gescheiden door komma's en de hele lijst tussen vierkante haken worden geplaatst. Zie het voorbeeld hieronder.
plugin_flush_interval Nummer Optioneel veld. Ingesteld om het maximale interval (in seconden) tussen berichtoverdrachten naar Log Analytics te definiëren. De standaard is 5.
amount_resizing boolean waar of onwaar. Schakel het mechanisme voor automatisch schalen in of uit, waarmee de grootte van de berichtbuffer wordt aangepast aan de hoeveelheid ontvangen logboekgegevens.
max_items Nummer Optioneel veld. Is alleen van toepassing als amount_resizing deze is ingesteld op 'false'. Hiermee stelt u een limiet in voor de grootte van de berichtbuffer (in records). De standaardwaarde is 2000.
azure_resource_id tekenreeks Optioneel veld. Definieert de id van de Azure-resource waarin de gegevens zich bevinden.
De waarde van de resource-id is vooral handig als u RBAC voor resourcecontext gebruikt om alleen toegang te bieden tot specifieke gegevens.

Tip

  • U vindt de werkruimte-id en primaire sleutel in de werkruimteresource, onder Agents-beheer.
  • Omdat referenties en andere gevoelige informatie die zijn opgeslagen in duidelijke tekst in configuratiebestanden, echter niet in overeenstemming is met aanbevolen beveiligingsprocedures, wordt u sterk aangeraden om gebruik te maken van het Logboektash-sleutelarchief om uw werkruimte-id en primaire sleutel in de configuratie veilig op te nemen. Raadpleeg de documentatie van Elastic voor instructies.

Voorbeeldconfiguraties

Hier volgen enkele voorbeeldconfiguraties die gebruikmaken van een aantal verschillende opties.

  • Een basisconfiguratie die gebruikmaakt van een filebeat-invoerpijp:

      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"
          }
      }
    
  • Een basisconfiguratie die gebruikmaakt van een TCP-invoerpijp:

      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"
          }
      }
    
  • Een geavanceerde configuratie:

      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
          }
      } 
    
  • Een geavanceerdere configuratie voor het parseren van een aangepast tijdstempel en een JSON-tekenreeks van ongestructureerde tekstgegevens en het vastleggen van een geselecteerde set velden in Log Analytics met het geëxtraheerde tijdstempel:

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

    Notitie

    Ga naar de GitHub-opslagplaats voor uitvoerinvoegtoepassingen voor meer informatie over de interne werking, configuratie en prestatie-instellingen.

Stap 3: Logstash opnieuw starten

Stap 4: Binnenkomende logboeken weergeven in Microsoft Sentinel

  1. Controleer of berichten naar de uitvoerinvoegtoepassing worden verzonden.

  2. Klik in het navigatiemenu van Microsoft Sentinel op Logboeken. Vouw onder de kop Tabellen de categorie Aangepaste logboeken uit. Zoek en klik op de naam van de tabel die u hebt opgegeven (met een _CL achtervoegsel) in de configuratie.

    Screenshot of log stash custom logs.

  3. Als u records in de tabel wilt zien, voert u een query uit op de tabel met behulp van de tabelnaam als het schema.

    Screenshot of a log stash custom logs query.

Auditlogboeken van de uitvoerinvoegtoepassing controleren

Als u de connectiviteit en activiteit van de Microsoft Sentinel-uitvoerinvoegtoepassing wilt bewaken, schakelt u het juiste Logstash-logboekbestand in. Zie het document voor de indeling van de Logstash-map voor de locatie van het logboekbestand.

Als u geen gegevens in dit logboekbestand ziet, genereert en verzendt u enkele gebeurtenissen lokaal (via de invoer- en filterinvoegtoepassingen) om ervoor te zorgen dat de uitvoerinvoegtoepassing gegevens ontvangt. Microsoft Sentinel biedt alleen ondersteuning voor problemen met betrekking tot de uitvoerinvoegtoepassing.

Volgende stappen

In dit document hebt u geleerd hoe u Logstash gebruikt om externe gegevensbronnen te verbinden met Microsoft Sentinel. Zie de volgende artikelen voor meer informatie over Microsoft Sentinel: