Mi ELK dhe Exchange. Pjesa 1

Mi ELK dhe Exchange. Pjesa 1

Po filloj një seri artikujsh, ku dua të ndaj përvojën time në lidhje me lidhjen e Exchange me ELK. Ky stak do të ndihmojë në përpunimin e sasi të mëdha log-esh dhe për të mos u shqetësuar se në cilin madhësi mjetet e zakonshme të regjistrimit do të na ndihmojnë. Le të njohim luftëtarin e ri të log-ev.

Exchange ka një sistem të zgjeruar regjistrimi. Log-ët më të kërkuar janë log-ët e ndjekjes, të cilët ndjekin hap pas hapi kalimin e një email-i të caktuar brenda organizatës postare; log-ët e serverit web, të cilët ndjekin çdo sesion të ri të përdoruesit në sistem, dhe log-ët e aplikacioneve të veçanta web me gradë të ndryshme detajesh seancash. Po ashtu, Exchange mund të ruajë log-ët e papërpunuar të protokollit smtp, imap dhe pop3.

Cilat mjete mund të përdorim për të punuar me log-ët:

  • Komanda standarde Get-MessageTrackingLog: e pĂ«rshtatshme pĂ«r tĂ« pĂ«rpunuar log-Ă«t e ndjekjes;
  • Utilita logparser: pĂ«r regjistrimin pĂ«rdor gjuhĂ«n pseudo-SQL pĂ«r kĂ«rkimin dhe funksionon mjaft shpejt;
  • SQL-server i jashtĂ«m: pĂ«r raste tĂ« veçanta (pĂ«r shembull, analizĂ«n e tĂ« dhĂ«nave pĂ«r periudha tĂ« gjata kohore).

E gjithë kjo funksionon mjaft mirë kur kemi disa serverë dhe vëllimi i logëve të përpunuara matet në dhjetëra-qindra gigabajt. Por çfarë ndodh nëse numri i serverëve arrin në dhjetëra, dhe madhësia e logëve kalon një terabajt? Kjo skemë, me siguri, fillon të bjerë.

Dhe ja çfarë ndodh: Get-MessageTrackingLog fillon të dështojë për shkak të kohës së skadimit, logparser godet plafonin e arkitekturës 32-bitore, dhe eksportimi në SQL-server dështone në momentin më të papërshtatshëm, duke mos përtypur shumë rreshta të excepsionit nga shërbimi.

KĂ«tu hyn nĂ« skenĂ« njĂ« lojtar i ri – staku ELK, i cili Ă«shtĂ« posaçërisht i optimizuar pĂ«r tĂ« menaxhuar sasi tĂ« mĂ«dha logĂ«sh nĂ« njĂ« kohĂ« tĂ« arsyeshme dhe me konsum tĂ« pranueshĂ«m burimesh.

NĂ« pjesĂ«n e parĂ« do tĂ« flas nĂ« detaje, pĂ«r si tĂ« lidhim filebeat, i cili Ă«shtĂ« pjesĂ« e stakut ELK – pĂ«rgjigjet pĂ«r leximin dhe dĂ«rgimin e skedarĂ«ve tĂ« thjeshtĂ« tekstualĂ«, nĂ« tĂ« cilat aplikacione tĂ« ndryshme shkruajnĂ« logĂ«t e tyre. NĂ« artikujt e ardhshĂ«m do tĂ« ndalemi mĂ« nĂ« detaje nĂ« komponentĂ«t Logstash dhe Kibana.

Instalimi

Pra, arkivi i agjentit filebeat mund të shkarkohet nga ky site.

Ne do ta kryejmë instalimin thjesht duke shpërndarë përmbajtjen e skedarit zip. Për shembull, në c:Program Filesfilebeat. Pastaj është e nevojshme të filloni skriptin PowerShell install-service-filebeat.ps1, që vjen në paketë, për instalimin e shërbimit filebeat.

Tani jemi gati të fillojmë të konfigurojmë skedarin e konfigurimit.

Qëndrueshmëria

Filebeat garanton dorëzimin e log-eve në sistemin e grumbullimit të log-eve. Kjo arrihet përmes mbajtjes së regjistrit të shënimeve në skedarët e log-eve. Në regjistër ruhet informacioni mbi shënimet që janë lexuar nga skedarët e log-eve, dhe shënohen shënimet specifike që arritën të dërgohen në vendin e destinacionit.

Nëse ndonjë shënim nuk mund të dërgohet, filebeat do të përpiqet ta dërgojë atë përsëri derisa të marrë konfirmimin e dorëzimit nga sistemi pritës ose skedari origjinal i log-eve të fshihet në procesin e rotacionit.

Kur shërbimi filebeat rinis, ai do të lexojë nga regjistri informacionin mbi shënimet e fundit të lexuara dhe të dorëzuara dhe do të lexojë shënimet në skedarët e log-eve, në bazë të informacionit në regjistër.

Kjo lejon minimizimin e rrezikut të humbjes së informacionit mbi log-et që duhet të dërgohen në serverat elasticlogstash, gjatë menjëherë e defekteve të papritura dhe realizimit të operacioneve për mirëmbajtjen e serverëve.

Për më shumë se kjo mund të lexoni në dokumentacion në paragrafët: Si si ruan Filebeat mbajti gjendjen e skedarëve dhe si siguron dorëzimin të paktën një herë?

Konfigurimi

Të gjitha konfigurimet kryhen 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ë logëve nga serverët Exchange.

Bloku i përpunimit të logëve

Bloku i përpunimit të logëve fillon me fushën:

filebeat.inputs:

Ne do të përdorim një mjet të zakonshëm të mbledhjes së logëve:

- type: log

Pastaj tregojmë statusin (aktiv) dhe rrugët deri në dosjen me logët. Për shembull, në rastin e logëve të 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ë-rresht. Në mënyrë të parazgjedhur, filebeat e konsideron një linjë log-u si një shënim. Kjo funksionon mirë, derisa log-u të fillojë të marrë përjashtime të lidhura me funksionimin e gabuar të shërbimit. Në këtë rast, përjashtimet mund të përbëhen nga disa rreshta. Prandaj, filebeat duhet të konsiderojë një shënim shumë-rresht si një, nëse rreshti tjetër fillon me datën. Formati i shënimeve të logëve në Exchange është i tillë: çdo shënim i ri në skedarin e log-ut fillon me datën. Në konfigurim, kjo kusht u duket në këtë mënyrë:

multiline:
	pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
	negate: true
	match: after

Ka një kuptim që të shtoni etiketat në regjistrimin e dërguar, për shembull:

  tags: ['IIS', 'ex-srv1']

Dhe mos harroni të përjashtoni nga përpunimi rreshtat që fillojnë me simbolin hash:

  exclude_lines: ['^#']

Pra, blloku i leximit të logeve do të 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: ['^#']

Blloku i dërgimit të logeve

Regjistrimet e veçanta në skedarin e logeve filebeat dërgohen si një objekt json, ku regjistrimi specifik nga logu përmban vetëm fushën mesazhe. Nëse duam të punojmë me këtë informacion, është e nevojshme që ta shqyrtojmë këtë fushë në fusha të veçanta. Kjo mund të bëhet, për shembull, në logstash. Ai do të jetë marrësi i regjistrimeve nga filebeat. Këtu është 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ë aktivizoni balancimin: kështu filebeat do të dërgojë loget jo vetëm në serverin e parë të disponueshëm nga lista, por do të shpërndajë loget midis disa serverëve:

hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  loadbalance: true 

Filebeat, gjatë përpunimit të logëve, në JSON-in e dërguar, përveç regjistrimit të logut që ndodhet në fushën message, shton një sasi të caktuar të metadatat, që ndikon në madhësinë e dokumentit që përfundon në elastic. Këto metadata mund të hiqen selektivisht nga dërgimi. Kjo bëhet në bllokun processor me ndihmën e procesorit. drop_fields. Mund të përjashtohen, për shembull, fusha të tjera si:

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"]

Përjashtimi i fushave duhet bërë me kujdes, pasi disa prej tyre mund të përdoren në anën e elastic për ndërtimin e indekseve.

Pra, blloku i dërgimit të logëve do të duket kështu:

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"]

Cilësimet e logimit të filebeat

Ka kuptim të vendosen këto cilësime të logimit:

  • Niveli i logimit info;
  • RegjistrojmĂ« logĂ«t nĂ« skedarĂ«t qĂ« ndodhen nĂ« vendndodhjen e paracaktuar (direktori logs, nĂ« direktorinĂ« e instalimit tĂ« filebeat);
  • Emri i skedarit tĂ« regjistrit — filebeat;
  • Ruani 10 skedarĂ«t e fundit tĂ« regjistrit;
  • Kryeni rotacionin kur arrin madhĂ«sinĂ« 1 MB.

Blloku përfundimtar i konfigurimit të regjistrimit do të duket kështu:

logging.level: info
logging.to_files: true
logging.files:
  name: filebeat
  keepfiles: 10
  rotateeverybytes: 1048576

Konfigurimi përfundimtar

Ne kemi përmbledhur konfigurimin dhe tani ai 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Ă« kuptohet se formati i skedarit tĂ« konfigurimit — yml. Prandaj, Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« vendosen saktĂ« hapĂ«sirat dhe shenjat e minusit.

Filebeat mund të verifikojë skedarin e konfigurimit dhe, nëse sintaksa përmban gabime, do të tregojë në cilin rresht dhe në cilin vend të rreshtit sintaksa është e pasaktë. Verifikimi bëhet si më poshtë:

.filebeat.exe test config

Filebeat gjithashtu është në gjendje të kontrollojë disponibilitetin e rrjetit për marrësin e logëve. Testimi nis kështu:

.filebeat.exe test output

Në pjesët e ardhshme do të flas për lidhjen dhe bashkëpunimin e Exchange me komponentët Logstash dhe Kibana.

Linqe të dobishme

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster