Přeskočit obsah

Deklarace mapování

Poté, co jsou všechny deklarované pole získány z parserů, musí být pole přejmenována podle nějakého schématu (ECS, CEF, ...) v procesu nazývaném mapování. Mapování zajišťuje, že logy z různých zdrojů mají sjednocené, konzistentní názvy a typy polí.

Proces mapování:

  1. přejmenuje pole z analyzovaných logů podle nějakého schématu
  2. případně převede typy polí (např. ze stringu na celé číslo, IP, MAC atd.)
  3. filtruje všechna pole, která nejsou uvedena v mapování

Deklarace

define:
    type: parsec/mapping
    schema: /Schemas/ECS.yaml

mapping:
    <original_key>: <new_key>
    <original_key>: <new_key>
    ...

Specifikujte parsec/mapping jako type v sekci define. V poli schema specifikujte cestu k schématu, které používáte.

Příklad

Pro účely příkladu si představme, že chceme analyzovat jednoduchou událost:

User harry_potter login from 178.2.1.20

a chtěli bychom, aby konečný výstup vypadal takto:

{
    "user.name": "harry_potter",
    "event.action": "login",
    "source.ip": "178.2.1.20"
}

Všimněte si, že názvy klíčů v původní události se liší od názvů klíčů v požadovaném výstupu.

Pro počáteční deklaraci parseru v tomto případě můžeme použít jednoduchý JSON parser:

10_parser.yaml
define:
    type: parsec/parser

parse:
    !PARSE.KVLIST
    - "User "
    - USER: !PARSE.UNTIL " "
    - ACTION: !PARSE.UNTIL " "
    - !PARSE.UNTIL " "
    - IP: !PARSE.IP

Tento parser vytvoří seznam párů klíč-hodnota:

USER        harry_potter
ACTION      login
IP          178.2.1.20

Abychom změnili názvy jednotlivých polí, vytvoříme soubor deklarace mapování, 20_mapping_ECS.yaml, ve kterém popíšeme, která pole mapovat a jak:

20_mapping_ECS.yaml
---
define:
    type: parsec/mapping  # určete typ deklarace
    schema: /Schemas/ECS.yaml  # které schéma je použito

mapping:
    USER: user.name
    ACTION: event.action
    IP: source.ip

Tato deklarace vytvoří požadovaný výstup.