Po çfarë filloj një seri artikujsh, ku do të ndaj përvojën time të lidhjes së Exchange dhe ELK. Ky stack do të ndihmojë për të procesuar sasi të mëdha logësh dhe për të mos u shqetësuar se në cilin volum përfundimtar mjetet tradicionale të logimit do të ndalojnë së ndihmuari. Le të njohim një luftëtar të ri në botën e logëve.
Exchange ka një sistem të gjerë logimi. Logët më të kërkuar janë logët e gjurmimit, të cilët ndjekin kalimin hap pas hapi të një emaili të veçantë brenda organizatës së postës; logët e serverit web që ndjekin çdo sesion të ri të përdoruesit në sistem, dhe logët e aplikacioneve të veçanta web me nivele të ndryshme detajesh për sesionin. Gjithashtu, Exchange di të ruajë logët e kriptuar të protokolleve smtp, imap dhe pop3.
Cilat mjete mund të përdorim për të punuar me logët:
- Komandleti standard Get-MessageTrackingLog: ndihmon për të përpunuar lehtësisht logët e gjurmimit;
- Utilita logparser: përdor një gjuhë pseud-SQL për kërkimin e logëve dhe funksionon mjaft shpejt;
- Serveri SQL i jashtëm: për raste më të veçanta (p.sh., analizën e të dhënave për periudha të gjata).
E gjithë kjo funksionon mirë kur kemi disa servera dhe volumi i logëve të përpunuara matet në dhjetëra-qindra gigabajt. Por, çfarë ndodh nëse numri i serverëve shkon në dhjetëra dhe volumi i logëve kalon një terabajt? Kjo skemë, me shumë mundësi, fillon të dështojë.
Dhe ja çfarë ndodh: Get-MessageTrackingLog fillon të bjerë për shkak të kaluarit të kohës, logparser ngec në kufirin e arkitekturës 32-bit, dhe eksporti në serverin SQL dështojnë në momentin më të papërshtatshëm, duke mos e përpunuar një exception me shumë rreshta nga shërbimi.
KĂ«tu hyn nĂ« skenĂ« njĂ« lojtar i ri â stack-u ELK, i cili Ă«shtĂ« i dizajnuar posaçërisht pĂ«r tĂ« menaxhuar sasi tĂ« mĂ«dha logĂ«sh brenda afateve tĂ« arsyeshme dhe me konsumin e durueshĂ«m tĂ« burimeve.
NĂ« kĂ«tĂ« pjesĂ«, do tĂ« flas nĂ« detaje, se si tĂ« lidhim filebeat, i cili i takon pjesĂ«s sĂ« stack-ut ELK â Ă«shtĂ« pĂ«rgjegjĂ«s pĂ«r leximin dhe dĂ«rgimin e skedarĂ«ve tekstualĂ« tĂ« thjeshtĂ«, nĂ« tĂ« cilĂ«t aplikacione tĂ« ndryshme shkruajnĂ« logĂ«t e tyre. NĂ« artikujt e ardhshĂ«m do tĂ« ndalojmĂ« mĂ« nĂ« detaje nĂ« komponentĂ«t Logstash dhe Kibana.
Instalimi
Pra, file-arkivi i agentit filebeat .
Do të realizojmë instalimin duke shpaketuar përmbajtjen e skedarit zip. Për shembull, në c:Program Filesfilebeat. Pastaj, është e nevojshme të ekzekutohet skripti PowerShell install-service-filebeat.ps1, i cili vjen si pjesë e paketës, për të instaluar shërbimin filebeat.
Tani kemi gati për të filluar konfigurimin e skedarit të konfigurimit.
Qëndrueshmëri
Filebeat garanton dërgimin e logeve në sistemin e mbledhjes së logeve. Kjo arrihet përmes ruajtjes së regjistrit të shënimeve në skedarët e logeve. Në regjistër ruhet informacioni në lidhje me shënimet që janë lexuar nga skedarët e logeve, dhe shënohen shënimet specifike që arritën të dërgohen në destinacion.
Nëse ndonjë shënim nuk mund të dërgohet, atëherë filebeat do të përpiqet ta dërgojë sërish deri sa të marrë konfirmimin e dërgesës nga sistemi marrës ose skedari origjinal i logut të fshihet gjatë procesit të rrotullimit.
Kur shërbimi filebeat rinis, ai do të lexojë nga regjistri informacionin rreth shënimeve të fundit të lexuara dhe të dërguara dhe do të lexojë shënimet në skedarët e logeve, duke u bazuar në informacionin në regjistër.
Kjo lejon minimizimin e rrezikut të humbjes së informacionit mbi loget, të cilat duhet të dërgohen në serverët elasticlogstash, gjatë ndodhisë së papritur të defekteve dhe gjatë operacioneve të mirëmbajtjes së serverëve.
Më shumë rreth kësaj mund të : Si e mban gjendjen Filebeat e skedarëve dhe Si e siguron Filebeat dërgimin të paktën njëherë?
Configuration
E gjithë konfigurimi bëhet në skedarin e konfigurimit të formatit yml, i cili është i ndarë në disa seksione. Le të shqyrtojmë disa prej tyre, që marrin pjesë në procesin e mbledhjes së logeve nga serverët Exchange.
Bloku i përpunimit të logeve
Bloku i përpunimit të logeve fillon me fushën:
filebeat.inputs:Ne do të përdorim një mjet të përbashkët për mbledhjen e logeve:
- tipi: logMë pas specifikojmë statusin (aktiv) dhe rrugët deri në dosjen me loge. Për shembull, në rastin e logeve IIS, konfigurimet mund të jenë si më poshtë:
enabled: true
paths:
- C:inetpublogsLogFilesW3SVC1*.log
- C:inetpublogsLogFilesW3SVC2*.log
Një konfigurim tjetër i rëndësishëm: si duhet filebeat të lexojë shënimet shumë-rreshtore. Në përputhje me parazgjedhjen, filebeat merr një rresht logu si një shënim. Kjo funksionon mirë derisa të fillojmë të marrim përjashtime që lidhen me funksionimin e papërshtatshëm të shërbimit. Në këtë rast, përjashtimet mund të përbëhen nga disa rreshta. Prandaj, filebeat duhet ta marrë shënimin shumë-rreshtor si një, nëse rreshti tjetër fillon me një datë. Formati i shënimit të logeve në Exchange është se çdo shënim i ri në skedarin e logut fillon me një datë. Në konfigurim, ky kusht duket si më poshtë:
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
negate: true
match: afterKa sens të shtosh etiketat në regjistrimin e dërguar, për shembull:
etiketat: ['IIS', 'ex-srv1']Dhe mos harro të ekskludosh rreshtat që fillojnë me simbolin e hashes:
ekskludo_rreshtat: ['^#']Pra, blloku i leximit tĂ«æ„ćż do tĂ« duket si mĂ« poshtĂ«:
filebeat.inputs:
- lloji: log
i aktivizuar: true
rrugët:
- C:inetpublogsLogFilesW3SVC1*.log
- C:inetpublogsLogFilesW3SVC2*.log
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
negate: true
match: pas
etiketat: ['IIS', 'ex-srv1']
ekskludo_rreshtat: ['^#']Blloku i dërgimit të logs
Regjistrime të veçanta në skedarin e logs filebeat dërgohen si objekte json, ku regjistrimi specifik nga logu ndodhet në fushën e vetme message. Nëse duam të punojmë me këtë informacion, duhet ta shndërrojmë këtë fushë në fusha të ndara. Kjo mund të bëhet, për shembull, në logstash. Ai do të jetë marrësi i regjistrimeve nga filebeat. Ja si mund të duket në skedarin e konfigurimit të filebeat:
output.logstash:
hosts: ["logstash1.domain.com:5044"]
Nëse ka disa serverë, atëherë mund të përfshini balancimin: kështu që filebeat do të dërgojë logs jo vetëm në serverin e parë të disponueshëm nga lista, por do të shpërndajë logs midis disa serverëve:
hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
loadbalance: true Filebeat, gjatë përpunimit të logs në json e dërguar, përveç regjistrimit të logut, që ndodhet në fushën message, shton një sasi të caktuar të metadatas që ndikon në madhësinë e dokumentit që hyn në elastic. Këto metadata mund të hiqen selektivisht nga dërgimi. Kjo bëhet në bllokun e procesorëve me ndihmën e procesorit drop_fields. Mund të hiqen, për shembull, fushat e mëposhtme:
procesorët:
- drop_fields:
fushat: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]Duhet t'u qasemi me kujdes zgjedhjes së fushave për t'u ekskluduar, pasi disa prej tyre mund të përdoren nga elastic për ndërtimin e indekseve.
Pra, blloku i dërgimit të logs do të duket si më poshtë:
output.logstash:
hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
loadbalance: true
procesorët:
- drop_fields:
fushat: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]Cilësimet e regjistrimit të filebeat
Ka sens të vendosësh cilësime të tilla të regjistrimit:
- Niveli i regjistrimit info;
- Regjistrimi i logs në skedarët që ndodhen në vendin default (direktoria logs, në direktorinë e instalimit të filebeat);
- Emri i skedarit tĂ« logut â filebeat;
- Të ruash 10 skedarët më të fundit të logs;
- Të fillosh rotacionin kur arrihet madhësia prej 1Mb.
Blloku final i konfigurimit të logimit do të duket kështu:
logging.level: info
logging.to_files: true
logging.files:
name: filebeat
keepfiles: 10
rotateeverybytes: 1048576Konfigurimi përfundimtar
E kemi mbledhur konfigurimin, dhe tani duket si më poshtë:
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: ['^#']
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: 1048576ĂshtĂ« e rĂ«ndĂ«sishme tĂ« kuptoni se formati i skedarit tĂ« konfigurimit Ă«shtĂ« yml. Prandaj, Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« vendosen saktĂ« hapĂ«sirat dhe shenjat e minusit.
Filebeat ka aftësinë për të kontrolluar skedarin e konfigurimit dhe, nëse sintaksa ka gabime, do të tregojë në cilën rresht dhe në cilin vend të rreshtit sintaksa është e pavlefshme. Kontrolli kryhet kështu:
.filebeat.exe test configPo ashtu, filebeat di të kontrollojë disponueshmërinë e rrjetit të marrësit të logeve. Testimi fillon kështu:
.filebeat.exe test outputNë pjesët në vijim do të flas për lidhjen dhe bashkëpunimin e Exchange me komponentët e Logstash dhe Kibana.
Useful links
Burimi: habr.com
