Elkezdtem egy cikk sorozatot, ahol megosztom tapasztalataimat az Exchange és az ELK csatlakoztatásával kapcsolatban. Ez a stack segít nagy mennyiségű napló feldolgozásában anélkül, hogy azzal kellene foglalkoznunk, hogy mekkora méret esetén hagyja cserben a megszokott naplózási eszközöket. Ismerjük meg az új harcost a naplókkal.
Az Exchange elég kiterjedt naplózási rendszerrel rendelkezik. A legkeresettebb naplók a követési naplók, amelyek nyomon követik egy adott levél lépésről lépésre történő áthaladását a levelezési szervezeten belül; a webszerver naplók, amelyek minden új felhasználói munkamenetet nyomon követnek a rendszerben, és a különböző részletességű webalkalmazások naplói. Az Exchange emellett képes tárolni az smtp, imap és pop3 protokollok nyers naplóit is.
Milyen eszközöket használhatunk a naplók feldolgozására:
- A beépített Get-MessageTrackingLog parancsmag: kényelmes a nyomkövetési naplók feldolgozására;
- A logparser segédprogram: a naplózás során pseudo-SQL nyelvet használ a kereséshez, és elég gyorsan működik;
- Külső SQL-szerver: különösen specifikus esetekhez (például adatok elemzéséhez hosszú időszakokban).
Mindez jól működik, ha van néhány szerverünk és a feldolgozott naplók mérete tíz- vagy százig terjed. De mi van, ha a szerverek száma tízre emelkedik, és a naplók mérete már több terabyte? Ez a rendszer valószínűleg összeomlik.
És itt történik valami: a Get-MessageTrackingLog időkorlát miatt megáll, a logparser a 32 bites architektúra korlátaiba ütközik, a SQL-szerverbe történő exportálás pedig a legrosszabb pillanatban megbukik, amikor egy több soros kivételt nem tud feldolgozni a szolgáltatás.
Itt lép a színpadra egy új szereplő – az ELK stack, amelyet kifejezetten nagy mennyiségű napló gyors és erőforráshatékony kezelése érdekében fejlesztettek ki.
Az első részben részletesen elmondom, hogyan lehet csatlakoztatni a filebeat-et, amely az ELK stack része — felelős a különböző alkalmazások által írt egyszerű szöveges fájlok olvasásáért és küldéséért. A következő cikkekben részletesebben foglalkozunk a Logstash és Kibana komponensekkel.
Telepítés
Tehát a filebeat ügynök fájl-archívumát .
Az egyszerű telepítést a zip-fájl tartalmának kicsomagolásával végezzük. Például a c:Program Filesfilebeat. Ezután el kell indítani a PowerShell szkriptet, install-service-filebeat.ps1, amely a csomag részét képezi, a filebeat szolgáltatás telepítéséhez.
Most már készen állunk a konfigurációs fájl beállítására.
Hibatűrés
A Filebeat garantálja a naplók célba juttatását a naplórendszerbe. Ezt a naplófájlokban tárolt bejegyzések nyilvántartásán keresztül valósítja meg. A nyilvántartás tartalmazza azokat az adatokat, amelyek már el lettek olvasva a naplófájlokból, és konkrét bejegyzések vannak megjelölve, amelyeket sikerült célba juttatni.
Ha egy bejegyzést nem sikerül célba juttatni, a Filebeat újra megpróbálja azt küldeni, amíg a fogadó rendszertől meg nem kapja a kézbesítés visszaigazolását, vagy amíg az eredeti naplófájl el nem tűnik a rotáció során.
A Filebeat szolgáltatás újraindításakor a nyilvántartásból olvassa a legutoljára elolvasott és elküldött bejegyzések adatait, és a nyilvántartásban található információk alapján olvassa az adatokat a naplófájlokból.
Ez minimalizálja a kockázatot, hogy elveszítjük a naplókra vonatkozó információkat, amelyeket el kell küldeni az elastic logstash szerverekre, váratlan leállások és a szerverek karbantartási műveletei során.
További részletekért ezt : Hogyan tartja nyilván a Filebeat a fájlok állapotát és Hogyan biztosítja a Filebeat az egyszeri kézbesítést?
Beállítás
A teljes beállítás a következő formátumú konfigurációs fájlban történik yml, amely több szekcióra van felosztva. Vizsgáljunk meg néhányat közülük, amelyek részt vesznek a naplók gyűjtésének folyamatában az Exchange szerverekről.
A naplófeldolgozó blokk
A naplófeldolgozó blokk a következő mezővel kezdődik:
filebeat.inputs:Egy közös naplógyűjtő eszközt fogunk használni:
- type: logEzután megadjuk az állapotot (engedélyezve) és a naplókkal rendelkező mappa elérési útját. Például, IIS naplók esetén az alábbi beállítások lehetnek érvényesek:
enabled: true
paths:
- C:inetpublogsLogFilesW3SVC1*.log
- C:inetpublogsLogFilesW3SVC2*.log
Még egy fontos beállítás: hogyan olvassa a Filebeat a többsoros bejegyzéseket. Alapértelmezés szerint a Filebeat egy log-fájl egy sorát egy bejegyzésnek tekinti. Ez jól működik, amíg a naplóba nem érkeznek olyan kivételek, amelyek a szolgáltatás hibás működésével kapcsolatosak. Ebben az esetben a kivételek több sorból állhatnak. Ezért a Filebeat-nak egy többsoros bejegyzést egynek kell tekintenie, ha a következő sor dátummal kezdődik. Az Exchange naplóbejegyzéseinek formátuma a következő: minden új bejegyzés a naplófájlba dátummal kezdődik. A konfigurációban ez a feltétel így néz ki:
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
negate: true
match: afterÉrdemes címkéket hozzáadni a küldött bejegyzéshez, például:
tags: ['IIS', 'ex-srv1']Ne felejtsük el kizárni azokat a sorokat, amelyek hash-jellel kezdődnek:
exclude_lines: ['^#']Tehát a naplófájlok olvasási blokkjának a következőknek kell lennie:
filebeat.inputs:
- type: log
enabled: true
paths:
- C:inetpublogsLogFilesW3SVC1*.log
- C:inetpublogsLogFilesW3SVC2*.log
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
negate: true
match: after
tags: ['IIS', 'ex-srv1']
exclude_lines: ['^#']A naplók küldési blokkja
A filebeat külön bejegyzéseket küld a naplófájlban json formátumban, ahol a napló konkrét bejegyzése az egyetlen field message mezőben található. Ha valahogyan dolgozni szeretnénk ezzel az információval, először ki kell parse-olnunk ezt a mezőt külön mezőkre. Ezt például a logstash-ben lehet megtenni. Ez lesz a fogadója a filebeat bejegyzéseknek. Íme, hogyan nézhet ki ez a filebeat konfigurációs fájlban:
output.logstash:
hosts: ["logstash1.domain.com:5044"]
Ha több szerver is van, akkor lehetőség van a terheléselosztás bekapcsolására: így a filebeat nem az első elérhető szerverre küldi el a naplókat a listából, hanem elosztja a küldendő naplókat több szerver között:
hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
loadbalance: true A filebeat a naplók feldolgozása során a küldött json-ban a message mezőn kívül több metaadatot is hozzáad, amely hatással van a dokumentum méretére, ami az elasticba kerül. Ezeket a metaadatokat szelektíven ki lehet venni a küldésből. Ezt a processor blokkban tehetjük meg a processzor segítségével. drop_fields. Kizárhatunk például a következő mezőket:
processors:
- drop_fields:
fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]A kizárt mezők kiválasztásához óvatosan kell hozzáállni, mivel egyesek használatosak lehetnek az elastic oldalán az indexek létrehozásához.
Tehát a naplók küldésének blokkjának a következőknek kell lennie:
output.logstash:
hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
loadbalance: true
processors:
- drop_fields:
fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]A filebeat naplózási beállításai
Érdemes a következő naplózási beállításokat alkalmazni:
- A naplózás szintje info;
- A naplókat a alapértelmezett helyre írjuk (logs mappa a filebeat telepítési könyvtárában);
- A naplófájl neve — filebeat;
- Az utolsó 10 naplófájl megőrzése;
- Rotáció elindítása 1 MB méret elérésekor.
A naplómódosító beállítások véglegesen így fognak kinézni:
logging.level: info
logging.to_files: true
logging.files:
name: filebeat
keepfiles: 10
rotateeverybytes: 1048576Végső konfiguráció
Összegyűjtöttük a konfigurációt, és most így néz ki:
filebeat.inputs:
- type: log
enabled: true
paths:
- C:\inetpub\logs\LogFiles\W3SVC1\*.log
- C:\inetpub\logs\LogFiles\W3SVC2\*.log
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
negate: true
match: after
tags: ['IIS', 'ex-srv1']
exclude_lines: ['^#']
output.logstash:
hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
loadbalance: true
processors:
- drop_fields:
fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]
logging.level: info
logging.to_files: true
logging.files:
name: filebeat
keepfiles: 10
rotateeverybytes: 1048576Fontos megérteni, hogy a konfigurációs fájl formátuma — yml. Ezért fontos, hogy a szóközöket és a kötőjeleket helyesen helyezzük el.
A Filebeat képes ellenőrizni a konfigurációs fájlt, és ha a szintaxis hibákat tartalmaz, meg fogja mutatni, melyik sorban és hol van a hiba. Az ellenőrzést a következőképpen végzi:
.filebeat.exe test configA Filebeat emellett képes ellenőrizni a naplóvételi receptor hálózati elérhetőségét. Az ellenőrzés így indítható:
.filebeat.exe test outputA következő részekben beszélni fogok az Exchange csatlakoztatásáról és barátságáról a Logstash és Kibana komponensekkel.
Hasznos linkek
Forrás: habr.com
