Bashkëpunimi i ELK dhe Exchange. Pjesa 1

Bashkëpunimi i ELK dhe Exchange. Pjesa 1

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 mund tĂ« shkarkohet nga ky саĐčт.

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ë lexoni në dokumentacion në paragrafë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: log

Më 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: after

Ka 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: 1048576

Konfigurimi 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 config

Po ashtu, filebeat di të kontrollojë disponueshmërinë e rrjetit të marrësit të logeve. Testimi fillon kështu:

.filebeat.exe test output

Në 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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster