Mapování
Po získání všech deklarovaných polí z analyzátorů musí být pole obvykle přejmenována podle nějakého schématu (ECS, CEF) v procesu nazývaném mapování.
Proč je mapování nezbytné?
Pro uložení dat událostí v Elasticsearch je důležité, aby názvy polí v logech odpovídaly Elastic Common Schema (ECS), standardizované, otevřené kolekci názvů polí kompatibilních s Elasticsearch. Proces mapování přejmenuje pole z analyzovaných logů podle tohoto schématu. Mapování zajišťuje, že logy z různých zdrojů mají jednotné a konzistentní názvy polí, což umožňuje Elasticsearch je správně interpretovat.
Důležité
Ve výchozím nastavení pracuje mapování jako filtr. Ujistěte se, že do deklarace mapování zahrnete všechna pole, která chcete v analyzovaném výstupu. Jakékoliv pole, které není specifikováno v mapování, bude z události odstraněno.
Psaní deklarace mapování
Deklarace mapování napište v YAML. (Deklarace mapování nepoužívají výrazy SP-Lang.)
define:
type: parser/mapping
schema: /Schemas/ECS.yaml
mapping:
<original_key>: <new_key>
<original_key>: <new_key>
...
Specifikujte parser/mapping
jako type
v sekci define
. V poli schema
specifikujte cestu k souboru schématu, který používáte. Pokud používáte Elasticsearch, použijte Elastic Common Schema (ECS).
Pro přejmenování klíče a změnu datového typu hodnoty:
Warning
Nový datový typ musí odpovídat datovému typu specifikovanému ve schématu pro toto pole.
Specifikací type: auto
bude datový typ automaticky určen ze schématu na základě názvu pole.
mapping:
<original_key>:
field: <new_key>
type: <new_type>
Dostupné datové typy najdete zde.
Pro přejmenování klíče bez změny datového typu hodnoty:
mapping:
<original_key>: <new_key>
Pro přejmenování klíče uloženého v JSON objektu:
mapping:
<jsonObject> </jsonKey>: <new_key>
Název objektu JSON a klíč JSON musí být odděleny mezerou. Klíč JSON vždy začíná znakem /
a každá další úroveň je oddělena znakem /
. Stejně jako dříve je možné změnit datový typ specifikací pole type
.
Příklad
Example
Pro účely příkladu si představme, že chceme analyzovat jednoduchou událost ve formátu JSON:
{
"act": "user login",
"ip": "178.2.1.20",
"usr": "harry_potter",
"id": "6514-abb6-a5f2"
}
a chtěli bychom, aby finální výstup vypadal takto:
{
"event.action": "user login",
"source.ip": "178.2.1.20",
"user.name": "harry_potter"
}
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:
define:
type: parser/json
Tento parser vytvoří objekt JSON a uloží jej do pole json
.
Pro změnu názvů jednotlivých polí vytvoříme tento soubor deklarace mapování, 20_mapping_ECS.yaml
, ve kterém popíšeme, která pole mapovat a jak:
---
define:
type: parser/mapping # určete typ deklarace
schema: /Schemas/ECS.yaml # které schéma je použito
mapping:
json /act: 'event.action'
json /ip:
field: 'source.ip'
type: auto
json /usr: 'user.name'
Tato deklarace vytvoří požadovaný výstup. Datový typ pole source.ip
bude automaticky určen na základě schématu a odpovídajícím způsobem změněn.