SÔbrune ELK ja Exchange. Osa 1

SÔbrune ELK ja Exchange. Osa 1

Alustan artiklite seeriat, kus soovin jagada oma kogemusi Exchange'i ja ELK-i ĂŒhendamisel. See sihtkiri aitab töötleda suuri logimahtusid ja ei pea kĂŒsima, millises suuruses tavalised logimise tööriistad lakkuvad meid aitamast. Tutvume uue vĂ”itlejaga logide alal.

Exchange'il on ĂŒsna keeruline logimise sĂŒsteem. KĂ”ige nĂ”utavamad logid on jĂ€lgimislogid, mis jĂ€lgivad konkreetse kirja edasiviimist postitusorganisatsioonis; veebiserveri logid, mis jĂ€lgivad iga uue kasutaja sessiooni sĂŒsteemis, ja konkreetsete veebirakenduste logid erineva detailitasemega sessioonide kohta. Samuti suudab Exchange hoida tooreid logisid protokollide smtp, imap ja pop3 kohta.

Milliseid tööriistu saame logide töötlemiseks kasutada:

  • Kohalik kĂ€surida Get-MessageTrackingLog: mugav jĂ€lgimislogide töötlemiseks;
  • Logparseri tööriist: logimise jaoks kasutab see pseudo-SQL keelt otsimiseks ja töötab ĂŒsna kiiresti;
  • VĂ€line SQL-server: eriti spetsiifiliste juhtumite jaoks (nĂ€iteks andmete analĂŒĂŒs pikkade ajavahemike jooksul).

Kogu see skeem töötab hĂ€sti, kui meil on paar serverit ja logide töötlemise maht on kĂŒmnetes-sajades gigabaitides. Aga mis juhtub siis, kui serverite arv lĂ€heb kĂŒmnetesse ja logide suurus ĂŒletab terabaidi? See skeem hakkab tĂ”enĂ€oliselt kokku kukkuma.

Ja siin juhtub see: Get-MessageTrackingLog hakkab ajutuks katkestama, logparser jÀÀb kinni 32-bitise arhitektuuri piiridesse ja SQL-serverisse laadimise protsess puruneb kÔige ebamugavamal hetkel, jÀttes töötlemata mitmerealise erandi teenusest.

Siinkohal astub mĂ€ngu uus tegija – ELK stek, mis on spetsiaalselt loodud hiiglaslike logimahu haldamiseks mĂ”istlikus ajas ja talutava ressursikasutusega.

Esimeses osas selgitan ĂŒksikasjalikult, kuidas ĂŒhendada filebeat, mis kuulub ELK steki osasse — vastutab lihttekstifailide lugemise ja edastamise eest, kuhu erinevad rakendused kirjutavad oma logid. JĂ€rgmistes artiklites peatume Logstashi ja Kibana komponentidel.

Paigaldamine

Nii et filebeati agenti sisaldava arhivi fail saab alla laadida sellest veebilehelt.

Installime selle lihtsa zip-faili sisu vÀljavÔttega. NÀiteks aadressile c:Program Filesfilebeat. SeejÀrel tuleb kÀivitada PowerShelli skript install-service-filebeat.ps1, mis tuleb komplektiga, et installida filebeati teenus.

NĂŒĂŒd oleme valmis seadistama konfiguratsioonifaili.

Talitluskatkestustunne

Filebeat tagab logide kohaletoimetamise logide kogumisse sĂŒsteemi. See saavutatakse logifailides registreerimise kaudu. Registris hoitakse teavet nende kirje kohta, mis on logifailidest loetud, ning mĂ€rgitakse kindlad kirjed, mis on sihtpunkti toimetatud.

Kui mĂ”nda kirjet ei Ă”nnestu toimetada, proovib filebeat seda uuesti saata seni, kuni see saab sihtsĂŒsteemilt kohaletoimetamise kinnituse vĂ”i algne logifail kustutatakse rotatsiooni kĂ€igus.

Teenuse filebeat taaskÀivitamisel loeb see registrist viimati loetud ja kohaletoimetatud kirjeid ning loeb logifailide kirjeid registris olevate andmete pÔhjal.

See aitab minimeerida riski kaotada teavet logide kohta, mis tuleb saata elasticlogstash serveritesse, ootamatute tÔrgete ja serverite hooldustööde kÀigus.

Lisainfot selle kohta vĂ”ib lugeda dokumentatsioonist peatĂŒkkides: Kuidas Filebeat sĂ€ilitab failide olekut ja Kuidas Filebeat tagab vĂ€hemalt kord kohaletoimetamise?

Seadistamine

Kogu seadistus toimub konfiguratsioonifailis formaadis yml, mis on jagatud mitmeks osaks. Vaadakem mÔningaid neist, mis osalevad logide kogumise protsessis Exchange'i serveritest.

Logide töötlemise plokk

Logide töötlemise plokk algab jÀrgmistest vÀljadest:

filebeat.inputs:

Kasutame ĂŒldist logide kogumise tööriista:

- type: log

SeejÀrel mÀÀrame staatuse (lubatud) ja teed logifailide kaustani. NÀiteks IIS logide puhul vÔivad seaded olla jÀrgmised:

    enabled: true
    paths:
	- C:inetpublogsLogFilesW3SVC1*.log
	- C:inetpublogsLogFilesW3SVC2*.log

Veel ĂŒks oluline seadistus: kuidas filebeat peaks lugema mitmerealisi kirjeid. Vaikimisi loeb filebeat logifaili ĂŒhe rea ĂŒheks kirje. See töötab hĂ€sti, kuni meie logidesse ei hakata tulema erandeid, mis on seotud teenuse vale tööga. Sel juhul vĂ”ivad erandid koosneda mitmest reast. SeetĂ”ttu peab filebeat lugema mitmerealise kirje ĂŒheks, kui jĂ€rgmine rida algab kuupĂ€evaga. Exchange'i logide kirje formaat on selline: iga uus kirje logifailis algab kuupĂ€evaga. Konfiguratsioonis nĂ€eb see tingimus vĂ€lja jĂ€rgmine:

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

TÀpsem on lisada sildid edastatavasse logisse, nÀiteks:

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

Ja Àra unusta eemaldada töötlemisest ridu, mis algavad kraanakahelaga:

  exclude_lines: ['^#']

Nii et logide lugemise plokk nÀeb vÀlja jÀrgnev:

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: ['^#']

Logide saatmise plokk

Iga kirje filebeat'i logifailis edastatakse kui json objekt, milles konkreetne logikirje sisaldub ainukeses field message. Kui soovime selle teabega mingil viisil töötada, peame me selle vĂ€ljundi eelnevalt eraldama eraldi vĂ€ljadeks. Seda saab teha nĂ€iteks logstashis. Ta ongi filebeat‘i saadetavate kirjade vastuvĂ”tja. Nii vĂ”iks see vĂ€lja nĂ€ha filebeat'i konfiguratsioonifailis:

output.logstash:
  hosts: ["logstash1.domain.com:5044"]

Kui servereid on mitu, siis nende jaoks saab sisse lĂŒlitada koormuse jaotamise: sel juhul saadab filebeat logid mitte ainult loendis esimesse kergesti kĂ€tte saadavasse serverisse, vaid jaotab saadetavad logid mitme serveri vahel:

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

Filebeat lisab logide töötlemisel edastatavasse json'i vÀlja message hulka teatud metadatasid, mis mÔjutavad dokumenti, mis jÔuab elastic'usse. Neid metadatasid saab valikuliselt eemaldada. See toimub processor plokis drop_fields protsessori abil. drop_fields. Saame eemaldada nÀiteks jÀrgmised vÀljad:

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

Valik vabanemiseks vÀljadest tuleks teha ettevaatlikult, sest osa neist vÔib olla elastic'e poolt indekseerimise jaoks kasutusel.

Nii et logide saatmise plokk nÀeb jÀrgnev vÀlja:

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

Filebeat'i logimise seadistused

TÀpsem on seadistada jÀrgmised logimise seaded:

  • Logimise tase on info;
  • Salvestame logid vaikimisi failidesse (logs kataloog, filebeat'i installatsioonikaust);
  • Logifaili nimetus on filebeat;
  • Hoia viimaseid 10 logifaili;
  • KĂ€ivita pöörlemine 1 MB suuruse saavutamisel.

LÔppkokkuvÔttes nÀeb logimise seadistuse plokk vÀlja selline:

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

LÔplik konfiguratsioon

Oleme kokku pannud konfigureerimise ja nĂŒĂŒd nĂ€eb see vĂ€lja jĂ€rgmiselt:

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

Oluline on mĂ”ista, et konfiguratsioonifaili formaat on yml. SeetĂ”ttu on oluline Ă”igesti paigutada tĂŒhikud ja miinusmĂ€rgid.

Filebeat suudab kontrollida konfiguratsioonifaili ja kui sĂŒntaks sisaldab vigu, nĂ€itab see, millises reas ja millises kohas on sĂŒntaks vale. Kontrollimist toimub jĂ€rgmiselt:

.filebeat.exe test config

Filebeat oskab ka kontrollida, kas logide vastuvÔtja on vÔrgus kÀttevÔetud. Kontrollimine toimub jÀrgmiselt:

.filebeat.exe test output

JĂ€rgmistes osades rÀÀgin Exchange'i ĂŒhendamisest ja sĂ”prusest Logstashi ja Kibana komponentidega.

Kasulikud lingid

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster