Deklarace enricherů¶
Enrichery doplňují parsovanou událost o další data.
Enricher může:
- Vytvořit nové pole v události.
- Transformovat hodnoty pole (změna velikosti písmen, výpočty atd.).
Enrichery se nejčastěji používají k:
- Určení datasetu, kam se logy uloží v ElasticSearch (pole
event.dataset). - Získání facility a severity z pole syslog priority.
Výchozí IP enrichery v common library také přidávají geolokaci a ASN (Autonomous System) k IP polím. Viz Geolokační vyhledávání a ASN obohacení.
Pro připojení MaxMind databáze .mmdb k IP polím (skupina a mapování) viz Vlastní MaxMind enricher.
Deklarace¶
define:
type: parsec/enricher
schema: /Schemas/ECS.yaml
enrich:
event.dataset: <dataset_name>
new.field: <expression>
...
Example
Následující příklad je enricher pro události ve formátu syslog. Předpokládejme parser pro události ve formě:
<14>1 2023-05-03 15:06:12 server pid: Username 'HarryPotter' logged in.
{
"log.syslog.priority": 14,
"user.name": "HarryPotter"
}
Chcete získat syslog severity a facility, které se počítají standardním způsobem:
(facility * 8) + severity = priority
Také chcete převést jméno HarryPotter na harrypotter, aby byli uživatelé sjednoceni napříč logovacími zdroji.
Proto vytvoříte enricher:
enricher.yaml
define:
type: parsec/enricher
schema: /Schemas/ECS.yaml
enrich:
event.dataset: 'dataset_name'
user.id: !LOWER { what: !GET {from: !ARG EVENT, what: user.name} }
# facility a severity se počítají ze '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 ]