Logstash i Docker

Logstash I Docker



Logstash är en pipeline för databehandling med öppen källkod som låter dig samla in, bearbeta och vidarebefordra loggdata från olika källor.

I den här handledningen kommer vi att guida dig genom processen att köra Logstash i en Docker-behållare med grundläggande konfiguration.

Krav:

Innan vi börjar med handledningen, se till att du har följande:







  1. Installerad Docker på din värddator (version 23 och högre rekommenderas)
  2. Installerad Docker Compose på din maskin

Med de givna kraven uppfyllda kan vi fortsätta med handledningen.



Konfigurera Logstash-konfigurationsfilen

Logstash använder konfigurationsfilerna för att definiera hur data tas in, filtreras och skickas till utgången. Det finns olika alternativ som du kan konfigurera som du kan referera till i den officiella dokumentationen.



För vårt exempel fokuserar vi på den grundläggande konfigurationen som tar in data från en loggfil, filtrerar den för matchande poster och matar ut data till en fil.





Skapa en fil som heter 'logstash.conf' och lägg till konfigurationen enligt följande:

inmatning {
fil {
sökväg => '/var/log/apache/access.log'

start_position => 'början'

sincedb_path => '/dev/null'

ignore_older => 0
}
}

filter {
om [meddelande] =~ 'FEL' {
grok {
matcha => { 'meddelande' => '%{COMBINEDAPACHELOG}' }
}
}
}

output {
fil {
sökväg => '/var/log/apache/error_logs.log'
}
}

Den föregående filen definierar konfigurationen som visas i följande:

  1. Inmatningssektion – Inmatningssektionen använder filinmatningsplugin för att läsa Apache-loggfilen som finns i /var/log/apache/access.log.
    • Vi ställer sedan in startpositionen i början vilket gör att Logstash kan läsa hela filen från början.
    • Sincedb_path – Denna parameter låter oss inaktivera Logstashs sincedb-spårning genom att ställa in värdet till /dev/null. Detta säkerställer att Logstash alltid läser från början av filen.
    • Ignore_older – Genom att sätta värdet på denna parameter till 0 kan Logstash bearbeta alla poster i loggfilen.
  2. Filtersektion – I filtersektionen definierar vi filtermönstret för att kontrollera om loggmeddelandet innehåller ordet ERROR. Du kan justera villkoren för filterblocken för att filtrera för mer exakta matchningar i filen.
    • Om villkoret är uppfyllt använder vi grok-filtret för att analysera Apache-loggraden med hjälp av COMBINEDAPACHELOG-mönstret som är ett inbyggt mönster i Logstash för att analysera Apache-loggarna.
  3. Utdatasektion – Detta avsnitt låter oss definiera utdataformatet för de matchande posterna.
    • I vårt fall skriver vi dem till filen /var/log/apache/error_logs.log med sökvägsparametern.

Detta bör ge oss en grundläggande Logstash-konfiguration som tillåter oss att demonstrera några grundläggande Logstash-funktioner.

Se mer om att skapa och konfigurera Logstash-pipelines i följande medföljande dokumentationsresurs:

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

Skapa dockerfilen

När vi väl har definierat Logstash-konfigurationerna kan vi fortsätta och lära oss hur man kör behållaren. Inuti samma katalog som filen 'logstash.conf', skapa en ny fil som heter 'Dockerfile'.

Redigera den här filen och lägg till posterna enligt följande:

FRÅN docker.elastic.co/logstash/logstash:8.9.2

COPY logstash.conf /usr/share/logstash/pipeline/logstash.conf

I det givna exemplet definierar vi basbilden som den officiella Logstash-bilden med version 8.9.2.

Vi kopierar sedan filen 'logstash.conf' som vi skapade till /usr/share/logstash/pipeline/logstash.conf i bilden.

Bygg Docker-bilden

Navigera sedan till katalogen som innehåller Dockerfile och Logstash-konfigurationsfilen. Kör följande kommando för att bygga bilden:

$ hamnarbyggare -t custom-logstash-image .

Kör Logstash-behållaren

Nu när vi byggde Docker-bilden kan vi köra en Logstash-behållare med kommandot Docker 'run' enligt följande:

$ hamnarkörning -d --namn logstash-server custom-logstash-image

Detta bör köra Logstash-behållaren med hjälp av bilden som vi byggde i föregående steg.

Verifiera Logstash Container Logs

För att verifiera att Logstash körs korrekt kan du kontrollera behållarloggarna med följande kommando:

$ hamnarloggar < containernamn >

Produktion:

Slutsats

I den här handledningen lärde du dig hur du snabbt kan konfigurera en Logstash-server som körs som Docker med hjälp av en anpassad konfigurationsfil. Vi rekommenderar att du kontrollerar dokumentationen om bildparametrarna och konfigurationsalternativen.