ELK eta Exchange-ren lagunak gara. 1. zatia

ELK eta Exchange-ren lagunak gara. 1. zatia

Artikulu sorta bat hasten ari naiz, non Exchange eta ELK lotzen dudan esperientzia partekatu nahi dudan. Pila honek erregistro-bolumen handiak prozesatzen lagunduko digu eta ohiko erregistro-tresnek zer tamainatan uko egingo diguten galdetu beharrik ez. Ea ezagut dezagun log borrokalari berria.

Exchange-k erregistro-sistema nahiko zabala du. Erregistro ezagunenak jarraipenaren erregistroak dira, posta-erakunde baten barruan gutun zehatz baten urratsa urratsez urrats jarraitzen dutenak; web zerbitzariaren erregistroak, sistemako erabiltzaile-saio berri bakoitzaren jarraipena egiten dutenak, eta web-aplikazio espezifikoen erregistroak, saioen xehetasun-maila ezberdinekin. Exchange-k smtp, imap eta pop3 protokoloen erregistro gordinak ere gorde ditzake.

Zer tresna erabil ditzakegu erregistroekin lan egiteko:

  • Cmdlet estandarra Get-MessageTrackingLog: erosotasunez prozesatu jarraipenaren erregistroak;
  • Logparser erabilgarritasuna: erregistratzeko, pseudo-SQL bilaketa-lengoaia erabiltzen du eta nahiko azkar funtzionatzen du;
  • Kanpoko SQL zerbitzaria: kasu oso zehatzetarako (adibidez, datuak denbora luzean aztertzeko).

Horrek guztiak ondo funtzionatzen du zerbitzari pare bat dugunean eta prozesatutako erregistroen bolumena hamarnaka edo ehunka gigabytetan neurtzen da. Baina zerbitzarien kopurua dozenaka bada eta erregistroen tamainak terabyte bat gainditzen badu? Eskema hau litekeena da erortzen hastea.

Eta hauxe gertatzen da: Get-MessageTrackingLog denbora-muga ateratzen hasten da, logparser-ek 32 biteko arkitekturaren sabaia jotzen du eta SQL zerbitzarira igotzeak unerik desegokienean matxuratzen da, zerbitzuaren linea anitzeko salbuespena digeritu gabe.

Hemen jokalari berri bat sartzen da eszenan: ELK pila, erregistro-bolumen handiak arrazoizko denboran eta baliabide-kontsumo jasangarriarekin malabareak egiteko bereziki diseinatuta dagoena.

Lehenengo zatian zehatz-mehatz esango dizut, nola konektatu ELK pilaren zati bati dagokion filebeat — testu-fitxategi sinpleak irakurtzeaz eta bidaltzeaz arduratzen da, zeinetan aplikazio ezberdinek beren erregistroak idazten dituzten. Hurrengo artikuluetan Logstash eta Kibana osagaiak gertutik aztertuko ditugu.

Instalazio-

Beraz, filebeat agentearen artxibo fitxategia gune honetatik deskargatu daiteke.

Instalazioa zip fitxategiaren edukia ateraz osatuko dugu. Adibidez, in c:Program Filesfilebeat. Ondoren, PowerShell script-a exekutatu behar duzu install-service-filebeat.ps1, kitarekin datorrena, filebeat zerbitzua instalatzeko.

Orain prest gaude konfigurazio fitxategia konfiguratzen hasteko.

akatsen tolerantzia

Filebeat-ek erregistroak biltzeko sistemara bidaltzea bermatzen du. Hau log fitxategietan sarreren erregistroa mantenduz lortzen da. Erregistroak erregistro-fitxategietatik irakurritako erregistro horiei buruzko informazioa gordetzen du eta helmugara bidali ahal izan diren erregistro zehatzak markatzen ditu.

Erregistro bat ezin bada entregatu, filebeat-ek berriro bidaltzen saiatuko da sistema hartzailearen entregaren berrespena jaso arte edo errotazio-prozesuan jatorrizko erregistro-fitxategia ezabatu arte.

Zerbitzua berrabiarazten denean, filebeat-ek irakurritako eta entregatutako azken erregistroei buruzko informazioa irakurriko du erregistrotik, eta erregistroko fitxategietako erregistroak irakurriko ditu erregistroko informazioan oinarrituta.

Honi esker, elastikologstash zerbitzarietara bidali beharreko erregistro-informazioa galtzeko arriskua minimiza dezakezu ustekabeko hutsegiteetan eta zerbitzariaren mantentze-lanetan.

Honi buruz gehiago jakin dezakezu irakurri paragrafoetako dokumentazioa: Nola mantentzen du Filebeat-ek fitxategien egoera eta Nola ziurtatzen du Filebeat-ek gutxienez behin entrega?

doikuntza

Konfigurazio guztia formatuaren konfigurazio fitxategian egiten da yml, hainbat ataletan banatuta dagoena. Ikus ditzagun Exchange zerbitzarietako erregistroak biltzeko prozesuan parte hartzen duten horietako batzuk.

Erregistroa prozesatzeko blokea

Erregistroa prozesatzeko blokea eremuarekin hasten da:

filebeat.inputs:

Erregistroak biltzeko tresna arrunt bat erabiliko dugu:

- type: log

Ondoren, adierazi egoera (gaituta) eta karpetarako bidea erregistroekin. Adibidez, IIS erregistroen kasuan, ezarpenak hauek izan litezke:

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

Beste ezarpen garrantzitsu bat filebeat-ek lerro anitzeko erregistroak nola irakurri behar dituen da. Lehenespenez, filebeat-ek erregistro-fitxategi baten lerro bat sarrera bat dela hartzen du. Honek ondo funtzionatzen du gure erregistroan zerbitzuaren funtzionamendu okerrekin lotutako salbuespenak jasotzen hasten garen arte. Kasu honetan, salbuespenak hainbat lerro izan daitezke. Beraz, filebeat-ek lerro anitzeko sarrera bat bezala zenbatu behar du hurrengo lerroa data batekin hasten bada. Exchange-n erregistroak grabatzeko formatua hau da: erregistro-fitxategiko sarrera berri bakoitza data batekin hasten da. Konfigurazioan, baldintza honek itxura hau du:

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

Zentzuzkoa da bidaltzen ari zaren mezuari etiketak gehitzea, adibidez:

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

Eta ez ahaztu hash karaktere batekin hasten diren prozesatzeko lerroetatik baztertzea:

  exclude_lines: ['^#']

Beraz, erregistroa irakurtzeko blokea honela izango da:

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

Erregistroa bidaltzeko blokea

Filebeat-ek erregistro-fitxategiko sarrera indibidualak bidaltzen ditu json objektu gisa, zeinetan erregistroko sarrera zehatz bat mezu-eremu bakarrean dagoen. Informazio hau nolabait landu nahi badugu, lehenik eremu hau eremu bereizietan analizatu behar dugu. Hau, adibidez, logstash-en egin daiteke. Filebeat-eko diskoen hartzailea izango da. Hona hemen filebeat konfigurazio fitxategi batean nolakoa izan daitekeen:

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

Hainbat zerbitzari badaude, orduan haien oreka gaitu dezakezu: orduan filebeat-ek ez dio erregistroak bidaliko zerrendako lehen zerbitzari erabilgarrira, baina bidalitako erregistroak hainbat zerbitzarien artean banatuko ditu:

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

Filebeat-ek, bidalitako json-en erregistroak prozesatzen dituenean, mezuaren eremuan jasotako erregistro-sarreraz gain, metadatu kopuru jakin bat gehitzen du, eta horrek elastikoetan amaitzen den dokumentuaren tamainari eragiten dio. Metadatu hauek bidalketatik selektiboki ken daitezke. Hau prozesadorearen blokean egiten da prozesadorea erabiliz drop_fields. Adibidez, eremu hauek bazter ditzakezu:

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

Baztertutako eremuen hautapena arretaz hurbildu behar duzu, horietako batzuk alde elastikotik erabil daitezkeelako indizeak eraikitzeko.

Beraz, erregistroak bidaltzeko blokeak itxura hau izango du:

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 erregistroaren ezarpenak

Zentzuzkoa da erregistro-ezarpen hauek ezartzea:

  • Erregistro-mailaren informazioa;
  • Lehenespenez kokatutako fitxategietan erregistroak idazten ditugu (erregistroak direktorioa, filebeat instalazio direktorioan);
  • Log-fitxategiaren izena - filebeat;
  • Gorde azken 10 erregistro fitxategiak;
  • Hasi biraketa tamaina 1 MBra iristen denean.

Erregistroaren azken konfigurazio-blokeak itxura hau izango du:

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

Azken konfigurazioa

Konfigurazioa muntatu dugu eta orain honelakoa da:

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

Garrantzitsua da konfigurazio fitxategiaren formatua yml dela ulertzea. Hori dela eta, garrantzitsua da espazioak eta minus seinaleak behar bezala jartzea.

Filebeat-ek konfigurazio-fitxategia egiazta dezake eta, sintaxiak akatsak baditu, zein lerro eta lerroko sintaxia okerra den adieraziko du. Egiaztapena honela egiten da:

.filebeat.exe test config

Filebeat-ek erregistro-hartzailearen sarearen erabilgarritasuna ere egiaztatu dezake. Egiaztapena honela hasten da:

.filebeat.exe test output

Hurrengo zatietan Logstash eta Kibana osagaiekin Exchange-k duen konexioari eta adiskidetasunari buruz hitz egingo dut.

Esteka interesgarriak

Iturria: www.habr.com

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster