Parsery
V této části Logmanageru se řeší problematika zdrojových zařízení, ze kterých získáváme logy. Zařízením je v tomto případě myšleno hardwarové zařízení, ale i software včetně Windows. Každé zařízení, které nastavíme, aby zasílalo zprávy do systému Logmanager, je potřeba definovat v této sekci.
Logika systému je rozdělena na několik hlavních skupin. Nejdříve se řeší klasifikace příchozích zpráv. Podle identifikátorů, které každá zpráva obsahuje, se nastaví klasifikace. Z klasifikace se zpráva předá do parseru, kde se zpracuje její obsah.
Zbývající položky této sekce obsahují rozšířené funkce pro klasifikaci a parsery.
Každá zpráva, která projde systémem, se uloží do databáze ve standardizovaném formátu. Na základě tohoto formátu lze se zprávami v systému pracovat, proto je vhodné znát uložení a význam konkrétních komponent zprávy.
Zprávy využívají následující syntaxi:
{
"pole": "hodnota"
}
{
"pole1": "textová_hodnota",
"pole2": celočíselná_hodnota,
"pole3": float_hodnota,
"pole4": [
list
],
"pole5": {
slovník
},
"pole6": {
"subpole1": "hodnota1",
"subpole2": "hodnota2"
}
}
Příklady:
- textová hodnota: „sample text“,
- číselná hodnota: 259,
- float hodnota: 259.54,
- list: [„sample text“, 259, „“],
- slovník: {„pole1“: „sample text“, „pole2“: 259},
- pro získání hodnoty subpole se použije tečková notace: pole6.subpole2.
Příklady korektních názvů polí:
- protocol
- url_path
- service-internal-1
- service_internal_1
Příklady chybných názvů polí:
Chybný název pole | Automaticky opravený název pole |
---|---|
Protocol | invalid_protocol |
url%path | invalid_url_path |
1-service-internal | invalid_1-service-internal |
service@internal | invalid_service_internal |
U zpráv jsou aplikována následující pravidla:
- název pole je vždy psán pouze malými písmeny, doplněný čísly, pomlčkou a podtržítkem,
- pokud je pole pojmenováno chybně, bude automaticky očištěno od chybných znaků a doplněno o text invalid_.
- hodnota může být prázdná, číselná, textová, list a slovník,
- float hodnota nesmí být NaN a nekonečno,
- pole, která obsahují v názvu znak @:
- jsou generovány interně,
- znak @ nebo _ nelze použít v parserech nebo klasifikátorech,
- mohou obsahovat rozšiřující informace ve formátu list nebo slovník.
Obecný formát uložené zprávy:
{
"@timestamp": "",
"raw": "",
"meta": {
"event@id": "",
"forwarder@id": "",
"instance@id": "",
"parser": "",
"plugin": "",
"tags": [],
"tags@id": [],
"timestamp": "",
"src": {},
"type": ""
},
"msg": {},
"raw_offset": 0,
"@version": ""
}
Popis formátu:
- @timestamp: časový údaj, kdy byla zpráva doručena do systému Logmanager,
- raw: originální obsah zdrojové zprávy,
- meta: obsahuje interní informace o zprávě,
- event@id: automaticky generované unikátní ID pro každou přijatou událost,
- forwarder@id: identifikace forwarderu, který zprávu odeslal na server Logmanager,
- instance@id: identifikace instance, do které byla zpráva doručena,
- parser: jméno parseru, který zprávu zpracoval,
- plugin: jméno zdroje, kterým byla zpráva doručena,
- tags: list hodnot tagů, kterými je zpráva označena,
- tags@id: list identifikátorů tagů, kterými je zpráva označena,
- timestamp: časový údaj, kdy byla zpráva doručena do systému Logmanager,
- src: obsahuje zdrojové informace odkud byla zpráva do systému Logmanager doručena (IP adresa, protokol…),
- type: označuje interní stav zprávy, zda zpráva prošla parserem,
- msg: obsahuje slovník polí vygenerovaných na základě parserů, kterými zpráva prošla,
- raw_offset: určuje pozici v textu, odkud je zpráva zpracovávána parsery,
- @version: interní verze zprávy v systému.
Při práci se zprávami používejte pouze hodnoty uvedené v polích msg, meta, raw a raw_offset.Ostatní pole jsou systémová a v budoucích verzích systému Logmanager se mohou změnit, proto s nimi nedoporučujeme pracovat.
{
"_index": "lm-demo-2017.01.26",
"_type": "microsoft-windows",
"_id": "AVnZ_79FTDlIxPtA3bf8",
"_score": null,
"_source": {
"msg": {
"eventid": "7036",
"processid": "500",
"systemtime": "2017-01-26T08:58:00.078932400Z",
"guid": "{555908d1-a6d7-4695-8e1e-26931d2012f4}",
"uuid": "34B64D56-E785-1328-0EC0-E6CD20C4A9F9",
"osservicepack": "",
"eventsourcename": "Service Control Manager",
"eventrecordid": "140740",
"osname": "Windows 8 or Windows Server 2012",
"eventtype": "System",
"osedition": "Standard Server",
"computer": "pc-example",
"param2": "stopped",
"param1": "Adobe Flash Player Update Service",
"threadid": "2384",
"message": "The Adobe Flash Player Update Service service entered the stopped state.",
"eventid@int": {
"value": 7036
},
"senderversion": "2.4.6004.23920",
"channel": "System",
"name": "Service Control Manager"
},
"raw": "<36>1 2017-01-26T09:58:01.094556+01:00 pc-example ServiceControlManager 500 msgld {\"senderversion\": \"2.4.6004.23920\", \"eventtype\": \"System\", \"eventid\": \"7036\", \"eventrecordid\": \"140740\", \"osname\": \"Windows 8 or Windows Server 2012\", \"osedition\": \"Standard Server\", \"osservicepack\": \"\", \"uuid\": \"34B64D56-E785-1328-0EC0-E6CD20C4A9F9\", \"name\": \"Service Control Manager\", \"guid\": \"{555908d1-a6d7-4695-8e1e-26931d2012f4}\", \"eventsourcename\": \"Service Control Manager\", \"systemtime\": \"2017-01-26T08:58:00.078932400Z\", \"processid\": \"500\", \"threadid\": \"2384\", \"channel\": \"System\", \"computer\": \"pc-example\", \"param1\": \"Adobe Flash Player Update Service\", \"param2\": \"stopped\", \"message\": \"The Adobe Flash Player Update Service service entered the stopped state.\"}",
"@timestamp": "2017-01-26T08:58:03.595+00:00",
"meta": {
"forwarder@id": "00000000-0000-0000-0000-000000000000",
"tags": ["windows"],
"timestamp": "2017-01-26T08:58:03.595836+00:00",
"parser": "microsoft-windows",
"tags@id": ["3d3f2c7f-d1db-4442-9ff2-ea60c56716a8"],
"instance@id": "00000000-0000-0000-0000-000000000000",
"src": {
"dialect": "relp",
"severity": "warning",
"facility": "auth",
"ip": "192.0.2.56",
"ip@ip": {
"city": "New York",
"is_reserved": false,
"value": "192.0.2.56",
"version": 4,
"country_code": "US",
"is_multicast": false,
"country_name": "United States",
"ptr": "pc-example.example.com",
"is_link_local": false
},
"pid": "500",
"host": "pc-example",
"program": "ServiceControlManager"
},
"type": "user",
"plugin": "windows"
},
"raw_offset": 82,
"@version": "1"
}
}
Popis ukázkové zprávy:
- zpracované informace ze zdrojové zprávy jsou umístěny v poli msg,
- originální zdrojová zpráva je zobrazena v poli raw,
- informace, odkud byla zpráva odeslána, jsou zobrazeny v poli src.