SÔbrustame ELK ja Exchange'iga. Osa 1

SÔbrustame ELK ja Exchange'iga. Osa 1

Alustan artiklite seeriat, kus soovin jagada oma kogemusi Exchange ja ELK ĂŒhendamise osas. See tehnoloogiate kogum aitab töötada suurte logimahu alusel, muretsemata, millisel suurusel tavalised logimistööriistad enam ei aita. Tutvume koos uue logitöötluse lahendusega.

Exchange'il on ĂŒsna keeruline logimisĂŒsteem. KĂ”ige nĂ”utumad logid on jĂ€lgimislogid, mis jĂ€lgivad konkreetse kirja edasiviimist postiteenuses; veebiserveri logid, mis jĂ€lgivad iga uue kasutaja seanssi sĂŒsteemis, ning konkreetsete veebirakenduste logid erineva seansi detailitasemega. Samuti oskab Exchange salvestada tooreid logisid protokollide smtp, imap ja pop3 kohta.

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

  • Sisseehitatud kĂ€sk Get-MessageTrackingLog: mugav jĂ€lgimislogide töötlemiseks;
  • Tööriist logparser: logimistöödeks kasutab see pseudĐŸ-SQL keeltes otsimiseks ja töötab piisavalt kiiresti;
  • VĂ€line SQL-server: eriti spetsiifiliste juhtumite jaoks (nĂ€iteks andmete analĂŒĂŒs pikaajaliste ajavahemike jooksul).

See kĂ”ik töötab kenasti, kui meil on vaid paar serverit ja logide töötlemise maht ulatub kĂŒmnetesse-sajandesse gigabaiti. Aga mis juhtub, kui serverite arv lĂ€heneb kĂŒmnetele ja logide suurus ĂŒletab terabaiti? Sel juhul hakkab see tĂ”enĂ€oliselt alt vedama.

Ja siin on, mis juhtub: Get-MessageTrackingLog hakkab tÔrke tÔttu ebaÔnnestuma, logparser tabab 32-bitise arhitektuuri piiri ning SQL-serveri eksport katkeb kÔige vÀhem sobival hetkel, suudmata taluda mitmerealist vÀlistust teenusest.

Siinkohal astub lavale uus mĂ€ngija – ELK stack, mis on spetsiaalselt loodud hulkade logide arvestamiseks mĂ”istlikes ajaraamides ja talutava ressursikasutusega.

Esimeses osas rÀÀgin ma detailsemalt, kuidas ĂŒhendada filebeat, mis kuulub ELK stacki osade hulka, — see vastutab erinevate rakenduste logide lugemise ja saatmise eest lihtsate tekstifailide kaudu. JĂ€rgmistes artiklites keskendume Logstashi ja Kibana komponentidele.

Installimine

Nii et filebeat agenti arhivifaili vÔib alla laadida sellest veebisaidilt..

Me teeme installi, lahustades zip-faili sisu. NÀiteks aadressis c:Program Filesfilebeat. SeejÀrel tuleb kÀivitada PowerShelli skript. install-service-filebeat.ps1, mis on komplektis filebeat teenuse installimiseks.

NĂŒĂŒd oleme valmis konfiguratsioonifaili seadistama.

Veadeta töö

Filebeat tagab logide edastamise logide kogumise sĂŒsteemi. See saavutatakse logifailides salvestuste registri haldamise kaudu. Registris hoitakse teavet registreeritud logi salvestiste kohta ning mĂ€rgitakse konkreetsed salvestised, mis on edastatud sihtkohta.

Kui mÔne salvestise edastamine ebaÔnnestub, siis filebeat proovib seda uuesti saata, kuni saab saajalt kinnitus edastamise kohta vÔi kuni algne logifail eemaldatakse rotatsiooni kÀigus.

Teenuse filebeat taaskÀivitamisel loeb see registrist viimaste loetud ja edastatud salvestiste teavet ning loeb logifailidest salvestisi registris hoitava teabe alusel.

See vÔimaldab minimeerida riski logide kaotamiseks, mida tuleb edastada elasticlogstash serveritele, ootamatute tÔrgete ja serveri hooldustööde kÀigus.

Rohkem teavet selle kohta vĂ”ib lugeda dokumentatsioonist peatĂŒkkides: Kuidas Filebeat sĂ€ilitab failide olekut ja kuidas Filebeat tagab vĂ€hemalt ĂŒhe kordse kohaletoimetamise?

Seadistamine

Kogu konfiguratsioon on vormingufailis yml, mis on jagatud mitmeks jaoks. Vaatame mÔningaid neist, mis osalevad Exchange'i serverite logide kogumise protsessis.

Logide töötlemise plokk

Logide töötlemise plokk algab vÀlja:

filebeat.inputs:

Kasutame ĂŒldist logide kogumise tööriista:

- tĂŒĂŒp: log

SeejÀrel mÀÀrame staatuse (lubatud) ja logikaustade teed. 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 ĂŒhe logifaili rea ĂŒhe kirjana. See töötab hĂ€sti, kuni meie logisse hakkavad tulema teenuse haldustöötlemisega seotud erandid. Sellisel juhul vĂ”ivad erandid koosneda mitmest reast. SeetĂ”ttu peaks filebeat lugema mitmerealise kirje ĂŒhe kirjana, kui jĂ€rgmine rida algab kuupĂ€evaga. Exchange'i logide kirje formaat on selline: iga uus logikirje algab kuupĂ€evaga. Konfiguratsioonis nĂ€eb see tingimus vĂ€lja selline:

mitme rea:
	must: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
	lĂŒkkamine: tĂ”ene
	vÔrdle: pÀrast

On mÔistlik lisada mÀrke saadetavale kirjele, nÀiteks:

  mÀrkmed: ['IIS', 'ex-srv1']

Ja ei tohi unustada vĂ€listada töötlemisest ridu, mis algavad ristikujulise sĂŒmboliga:

  vÀlistada_rid: ['^#']

Seega, logide lugemise plokk nÀeb vÀlja jÀrgmine:

filebeat.inputs:
- tĂŒĂŒp: log
  lubatud: tÔene
  teed:
	- C:inetpublogsLogFilesW3SVC1*.log
	- C:inetpublogsLogFilesW3SVC2*.log
  mitme rea:
	must: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
	lĂŒkkamine: tĂ”ene
	vÔrdle: pÀrast
  mÀrkmed: ['IIS', 'ex-srv1']
  vÀlistada_rid: ['^#']

Logide saatmise plokk

Ainult eraldi kirjed filebeat logifailis saadetakse json-objekti kujul, kus konkreetne logikirje on sisalduv ĂŒhesainsas vĂ€ljas message. Kui me tahame seda teavet töötleda, peame selle vĂ€lja eelnevalt eraldama eraldi vĂ€limus. Seda saab teha nĂ€iteks logstashis. Just see saab olema logide vastuvĂ”tja filebeatist. Nii see vĂ”ib vĂ€lja nĂ€ha filebeati konfigureerimisfailis:

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

Kui servereid on mitu, siis on vÔimalik aktiveerida koormuse tasakaalustamine: siis filebeat saadab logid mitte esimesele saadavalolevale serverile nimekirjast, vaid jagab saadetavad logid mitme serveri vahel:

hostid: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  koormus: tÔsi 

Filebeat töötleb logisid, lisades saadetavasse json-faili lisaks logikirjetesse, mis on vÀlja vÀljastatud field message, teatud hulga metaandmeid. Need metaandmed mÔjuvad dokumendi suurusele, mis jÔuab elastic-isse. Need metaandmed on vÔimalik vahetult eemaldada. See tehakse processor plokis kasutades protsessorit drop_fields. Saame vÀlistada nÀiteks jÀrgmised vÀljad:

protsessorid:
- drop_fields:
	fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]

VĂ€ljade valimisega, mida vĂ€listada, tuleb ettevaatlikult ringi kĂ€ia, kuna mĂ”ned neist vĂ”ivad elasticu kĂŒljest indeksi ĂŒlesehitamiseks vajalikud olla.

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

output.logstash:
  hostid: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  koormus: tÔsi
 
protsessorid:
- 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 logimise seaded

MÔistlik on seada jÀrgmised logimise seadmed:

  • Logimise tase info;
  • Salvestame logid failidesse, mis asuvad vaikimisi (kaust logs, filebeati installatsiooni kaustas);
  • Logifaili nimi — filebeat;
  • Hoida viimaseid 10 logifaili;
  • KĂ€ivita rikutud failide suurus 1MB saavutamisel.

LÔplik logimine seadete plokk nÀeb vÀlja jÀrgmiselt:

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

LÔplik konfiguratsioon

Oleme koostanud konfiguratsiooni 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. Seega on tĂ€htis Ă”igesti paigutada tĂŒhikud ja miinusmĂ€rgid.

Filebeat oskab kontrollida konfiguratsioonifaili ning kui sĂŒntaks sisaldab vigu, nĂ€itab see, millisest rea ja rea kohast sĂŒntaks on vale. Kontrollimine toimub jĂ€rgmiselt:

.filebeat.exe test config

Filebeat suudab kontrollida logide vastuvÔtja vÔrgu kÀttesaadavust. Kontroll kÀivitub jÀrgmiselt:

.filebeat.exe test output

JĂ€rgmistes osades rÀÀgin ĂŒhendamise ja Exchange'i koostööst Logstashi ja Kibana komponentidega.

Kasulikud lingid

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster