Logstash in Docker

Logstash In Docker



Logstash is een open-source pijplijn voor gegevensverwerking waarmee u de loggegevens uit verschillende bronnen kunt verzamelen, verwerken en doorsturen.

In deze zelfstudie begeleiden we u bij het uitvoeren van Logstash in een Docker-container met basisconfiguratie.

Vereisten:

Voordat we aan de slag gaan met de zelfstudie, moet u ervoor zorgen dat u over het volgende beschikt:







  1. Docker op uw hostcomputer geïnstalleerd (versie 23 en hoger wordt aanbevolen)
  2. Docker Compose op uw computer geïnstalleerd

Als aan de gegeven vereisten is voldaan, kunnen we doorgaan met de tutorial.



Stel het Logstash-configuratiebestand in

Logstash gebruikt de configuratiebestanden om te definiëren hoe de gegevens worden opgenomen, gefilterd en naar de uitvoer worden verzonden. Er zijn verschillende opties die u kunt configureren, zoals u kunt raadplegen in de officiële documentatie.



Voor ons voorbeeld concentreren we ons op de basisconfiguratie die de gegevens uit een logbestand opneemt, deze filtert op de overeenkomende records en de gegevens naar een bestand uitvoert.





Maak een bestand met de naam “logstash.conf” en voeg de configuratie als volgt toe:

invoer {
bestand {
pad => '/var/log/apache/access.log'

start_positie => 'begin'

sindsdb_pad => '/dev/null'

negeer_ouder => 0
}
}

filteren {
als [bericht] =~ 'FOUT' {
grok {
overeenkomen => { 'bericht' => '%{COMBINEDAPACHELOG}' }
}
}
}

uitvoer {
bestand {
pad => '/var/log/apache/error_logs.log'
}
}

Het vorige bestand definieert de configuratie zoals hieronder weergegeven:

  1. Invoersectie – De invoersectie gebruikt de plug-in voor bestandsinvoer om het Apache-logbestand in /var/log/apache/access.log te lezen.
    • Vervolgens stellen we de startpositie aan het begin in, waardoor Logstash het hele bestand vanaf het begin kan lezen.
    • Sincedb_path – Met deze parameter kunnen we de sindsdb-tracking van Logstash uitschakelen door de waarde in te stellen op /dev/null. Dit zorgt ervoor dat Logstash altijd vanaf het begin van het bestand leest.
    • Ignore_older – Door de waarde van deze parameter op 0 te zetten, kan Logstash alle vermeldingen van het logbestand verwerken.
  2. Filtersectie – In de filtersectie definiëren we het filterpatroon om te controleren of het logbericht het woord ERROR bevat. U kunt de voorwaarden voor de filterblokken aanpassen om te filteren op nauwkeurigere overeenkomsten in het bestand.
    • Als aan de voorwaarde is voldaan, gebruiken we het grok-filter om de Apache-logboekregel te parseren met behulp van het COMBINEDAPACHELOG-patroon, een ingebouwd patroon in Logstash om de Apache-logboeken te parseren.
  3. Uitvoersectie – In deze sectie kunnen we het uitvoerformaat voor de overeenkomende items definiëren.
    • In ons geval schrijven we ze naar het bestand /var/log/apache/error_logs.log met behulp van de path-parameter.

Dit zou ons een basis Logstash-configuratie moeten opleveren waarmee we enkele basisfuncties van Logstash kunnen demonstreren.

Raadpleeg de volgende documentatiebron voor meer informatie over het maken en configureren van de Logstash-pijplijnen:

https://www.elastic.co/guide/en/logstash/current/configuration.html

Maak het Dockerbestand

Zodra we de Logstash-configuraties hebben gedefinieerd, kunnen we doorgaan en leren hoe we de container kunnen uitvoeren. Maak in dezelfde map als het bestand “logstash.conf” een nieuw bestand met de naam “Dockerfile”.

Bewerk dit bestand en voeg de vermeldingen als volgt toe:

VAN docker.elastic.co/logstash/logstash:8.9.2

KOPIEER logstash.conf /usr/share/logstash/pipeline/logstash.conf

In het gegeven voorbeeld definiëren we de basisimage als de officiële Logstash-image met versie 8.9.2.

Vervolgens kopiëren we het bestand “logstash.conf” dat we hebben gemaakt naar /usr/share/logstash/pipeline/logstash.conf in de afbeelding.

Bouw de Docker-image

Navigeer vervolgens naar de map die het Dockerfile- en Logstash-configuratiebestand bevat. Voer de volgende opdracht uit om de afbeelding te bouwen:

$ havenarbeider gebouwd -T aangepaste logstash-image .

Voer de Logstash-container uit

Nu we de Docker-image hebben gebouwd, kunnen we als volgt een Logstash-container uitvoeren met de Docker “run”-opdracht:

$ havenarbeider uitgevoerd -D --naam logstash-server aangepaste logstash-image

Hierdoor zou de Logstash-container moeten worden uitgevoerd met behulp van de afbeelding die we in de vorige stap hebben gebouwd.

Controleer de Logstash-containerlogboeken

Om te controleren of Logstash correct werkt, kunt u de containerlogboeken controleren met de volgende opdracht:

$ docker-logboeken < containernaam >

Uitgang:

Conclusie

In deze zelfstudie hebt u geleerd hoe u snel een Logstash-server kunt instellen die als Docker wordt uitgevoerd met behulp van een aangepast configuratiebestand. Wij raden u aan de documentatie over de beeldparameters en configuratieopties te raadplegen.