Přeskočit obsah

Deklarace Enricherů

Enricher doplňují parsované události o dodatečná data.

Enricher může:

  1. Vytvořit nové pole v události.
  2. Transformovat hodnoty polí nějakým způsobem (změna velikosti písmen, provádění výpočtů, atd.).

Enrichery jsou nejčastěji používány k:

  1. Určení datasetu, kde budou logy uloženy v ElasticSearch (přidání pole event.dataset).
  2. Získání facility a severity z pole syslog priority.
define:
  type: parsec/enricher

enrich:
  event.dataset: <dataset_name>
  new.field: <expression>
  ...
  • Enrichery zapisujte v YAML.
  • Specifikujte parsec/enricher v poli define.
Example

Následující příklad je enricher používaný pro události ve formátu syslog. Předpokládejme, že máte parser pro události ve tvaru:

<14>1 2023-05-03 15:06:12 server pid: Uživatelské jméno 'HarryPotter' přihlášeno.
Událost je ve tvaru:

{
  "log.syslog.priority": 14,
  "user.name": "HarryPotter"
}

Chcete získat závažnost (severity) a lokální zařízení (facility) z protokolu syslog, které jsou vypočítány standardním způsobem:

(facility * 8) + severity = priority

Také byste chtěli změnit jméno HarryPotter na harrypotter, aby bylo sjednoceno napříč různými logovacími zdroji.

Proto vytvoříte enricher:

enricher.yaml
define:
type: parsec/enricher

enrich:
  event.dataset: 'dataset_name'
  user.id: !LOWER { what: !GET {from: !ARG EVENT, what: user.name} }

  # Facility a severity jsou vypočteny z 'syslog.pri' standardním způsobem
  log.syslog.facility.code: !SHR
      what: !GET { from: !ARG EVENT, what: log.syslog.priority }
      by: 3
  log.syslog.severity.code: !AND [ !GET {from: !ARG EVENT, what: log.syslog.priority}, 7 ]