Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry) · leksjon

Logstash-filtre og pipelines

Utforsk avansert Logstash-konfigurasjon, inkludert betinget logikk, flere pipelines og egendefinerte filtre for komplekse datatransformasjoner.

Leksjon 2 av 411 trinn

Logstash-filtre og pipelines er en gratis leksjon i Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry) på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry), og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry) inneholder totalt 4 leksjoner.

Introduksjon til avansert Logstash

Velkommen til en avansert gjennomgang av Logstash! Så langt har De lært hvordan logger hentes inn i Logstash og behandles med grunnleggende filtre. Men hva skjer når dataene blir mer komplekse?

I denne leksjonen utforsker vi kraftige teknikker som betinget logikk, håndtering av flere pipelines og avanserte filtre for komplekse datatransformasjoner. Dette hjelper Dem med å håndtere reelle utfordringer innen logging.

Betinget logikk: «if»-setningen

Alle logger er ikke like! De kan motta ulike loggformater fra forskjellige tjenester, eller ønske å behandle hendelser forskjellig basert på innholdet.

Betinget logikk gjør det mulig for Logstash å bruke filtre eller utdata bare når bestemte betingelser er oppfylt. Dette gjøres ved hjelp av if-setninger, på samme måte som i programmeringsspråk.

  • Bruk if til å kontrollere feltverdier, tagger eller andre egenskaper ved hendelsen.
  • Bruk bestemte filtre eller handlinger bare på hendelser som oppfyller betingelsene.

Betinget logikk i praksis

La oss se på et enkelt eksempel. Vi bruker if til å kontrollere om et felt med navnet type finnes og har en bestemt verdi. Hvis det gjør det, legger vi til en tagg.

Prøv å skrive inn {"message": "Hello", "type": "app_log"} og deretter {"message": "World"} for å se forskjellen.

input {
  stdin {
    codec => json
  }
}
filter {
  if [type] == "app_log" {
    mutate {
      add_tag => ["processed_app_log"]
    }
  }
}
output {
  stdout {
    codec => rubydebug
  }
}

Utover «if»: Else og Else If

Akkurat som i programmering kan De utvide den betingede logikken med blokkene else if og else. Dette gjør mer kompleks forgrening mulig og sikrer at hver hendelse håndteres på riktig måte.

Logstash evaluerer disse betingelsene sekvensielt. Blokken til den første betingelsen som oppfylles, kjøres, og deretter går behandlingen videre.

  • if [field] == "value": Kjøres hvis betingelsen er sann.
  • else if [another_field] == "another_value": Kjøres hvis den første if-betingelsen var usann og denne betingelsen er sann.
  • else: Kjøres hvis ingen av de foregående if- eller else if-betingelsene var sanne.

Flere pipelines: Hvorfor skille dem?

Etter hvert som systemet vokser, samler De kanskje inn logger fra mange forskjellige kilder (for eksempel webservere, databaser og sikkerhetsenheter). Hver kilde kan kreve helt forskjellig behandlingslogikk.

Flere pipelines lar Dem isolere og administrere disse separate behandlingsflytene uavhengig av hverandre. I stedet for én stor og kompleks Logstash-konfigurasjon kan De ha flere mindre og fokuserte konfigurasjoner.

  • Isolasjon: Feil i én pipeline påvirker ikke de andre.
  • Ressursstyring: Tildel bestemte ressurser til ulike pipelines.
  • Modularitet: Det blir enklere å utvikle, teste og vedlikeholde konfigurasjoner.

Konfigurere flere pipelines

For å bruke flere pipelines definerer De dem i en fil som heter pipelines.yml, vanligvis i Logstash-konfigurasjonsmappen (for eksempel /etc/logstash/pipelines.yml).

Hver oppføring angir en unik ID, banen til konfigurasjonsfilen (.conf) og valgfrie innstillinger, for eksempel antall worker-tråder.

Eksempel på pipelines.yml:

- pipeline.id: web_logs
path.config: "/etc/logstash/conf.d/web-pipeline.conf"
- pipeline.id: db_logs
path.config: "/etc/logstash/conf.d/db-pipeline.conf"

Fordypning: Ruby-filteret

Noen ganger er ikke de innebygde Logstash-filtrene tilstrekkelige for svært spesifikke eller komplekse datatransformasjoner. Det er da ruby-filteret kommer til sin rett!

ruby-filteret lar Dem kjøre vilkårlig Ruby-kode i Logstash-pipelinen. Dette gir stor fleksibilitet til å manipulere hendelser på måter som ikke er mulig med standardfiltre.

  • Brukes til: Komplekse strengmanipuleringer, matematiske operasjoner, egendefinerte dataoppslag eller logikk som avhenger av flere felt.
  • Vær forsiktig: Kan påvirke ytelsen hvis det ikke brukes med omtanke.

Eksempel på Ruby-filter

La oss bruke ruby-filteret til å opprette et nytt felt som kombinerer deler av eksisterende felt og beregner en verdi.

Prøv å skrive inn: {"user_id": "123", "item_count": 5, "price_per_item": 10.5}

input {
  stdin {
    codec => json
  }
}
filter {
  ruby {
    code => "
      event.set('total_cost', event.get('item_count').to_f * event.get('price_per_item').to_f)
      event.set('user_item_summary', 'User ' + event.get('user_id') + ' bought ' + event.get('item_count').to_s + ' items.')
    "
  }
}
output {
  stdout {
    codec => rubydebug
  }
}

Avanserte mutate-operasjoner

mutate-filteret er et arbeidshestfilter for grunnleggende feltmanipulering, men det har også noen svært nyttige avanserte operasjoner:

  • split: Deler et strengfelt i en tabell basert på et skilletegn.
  • join: Slår sammen et tabellfelt til en streng ved hjelp av et angitt skilletegn.
  • convert: Endrer datatypen til et felt (for eksempel streng til heltall eller flyttall til streng).
  • rename: Endrer navnet på et eksisterende felt.

Disse operasjonene hjelper Dem med å forme dataene nøyaktig for lagring og analyse.

Test: Logstash-logikk

Hvilke av følgende er gyldige grunner til å bruke flere Logstash-pipelines?

Oppsummering: Avansert Logstash-konfigurasjon

Godt jobbet! De har tatt Logstash-ferdighetene Deres til neste nivå. Vi gikk gjennom:

  • Hvordan betinget logikk (if, else if, else) muliggjør dynamisk behandling av hendelser.
  • Fordelene ved og konfigurasjonen av flere pipelines for modulære og isolerte dataflyter.
  • Bruk av det kraftige ruby-filteret for svært tilpassede datatransformasjoner.
  • Avanserte operasjoner i mutate-filteret, som split, join og convert.

Disse teknikkene er avgjørende for å bygge robuste og tilpasningsdyktige Logstash-konfigurasjoner for komplekse data fra virkeligheten.

Gratis å komme i gang

Lær deg Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry) med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Logstash-filtre og pipelines» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry), inkludert «Logstash-filtre og pipelines», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry) inneholder totalt 4 leksjoner.

Hva lærer jeg i «Logstash-filtre og pipelines»?

Utforsk avansert Logstash-konfigurasjon, inkludert betinget logikk, flere pipelines og egendefinerte filtre for komplekse datatransformasjoner. Du øver på Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry) med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry)?

Ingen tidligere erfaring er nødvendig. Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry) på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Logstash-filtre og pipelines»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry)-leksjonen?

Ja. Alle Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry)-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Elasticsearch Query Language (DSL)
  2. Logstash-filtre og pipelines
  3. Kibana Discover og Lens
  4. Index Lifecycle Management (ILM)
← Tilbake til Systemobservabilitet: logging, metrikker og tracing (ELK + OpenTelemetry)