Jag börjar en serie artiklar dÀr jag vill dela med mig av min erfarenhet av att ansluta Exchange och ELK. Denna stack kommer att hjÀlpa till att hantera stora volymer av loggar utan att behöva fundera pÄ vid vilken storlek vanliga loggningsverktyg slutar hjÀlpa oss. LÄt oss lÀra kÀnna en ny kÀmpe i loggar.
Exchange har ett ganska utbyggt loggningssystem. De mest efterfrÄgade loggarna Àr spÄrningsloggar, som följer den steg-för-steg-processen av ett specifikt meddelande inom e-postorganisationen; loggar frÄn webbservern, som spÄrar varje ny anvÀndarsession i systemet, och loggar frÄn specifika webbapplikationer med olika detaljnivÄer för sessioner. Dessutom har Exchange möjlighet att lagra rÄa loggar för protokollen smtp, imap och pop3.
Vilka verktyg kan vi anvÀnda för att arbeta med loggar:
- Inbyggda kommandot Get-MessageTrackingLog: praktiskt för att bearbeta spÄrningsloggar;
- Verktyget logparser: anvÀnder en pseudö-SQL-syntax för loggning och fungerar ganska snabbt;
- Extern SQL-server: för sÀrskilt specifika fall (t.ex. analys av data över lÄnga tidsperioder).
Allt detta fungerar ganska bra nÀr vi har ett par servrar och mÀngden bearbetade loggar mÀts i tiotals-hundratals gigabyte. Men vad hÀnder om antalet servrar gÄr upp till tiotals och storleken pÄ loggarna överstiger en terabyte? Denna schematik börjar sannolikt att falla samman.
Och vad som hÀnder Àr: Get-MessageTrackingLog börjar timeouta, logparser nÄr taket för 32-bitarsarkitekturen, och exporten till SQL-servern gÄr sönder vid fel nytt tillfÀlle och kan inte hantera en fler-radig exception frÄn tjÀnsten.
HĂ€r kommer en ny aktör in pĂ„ scenen â ELK-stacken, som Ă€r speciellt designad för att jonglera stora volymer av loggar inom rimliga tidsramar med en acceptabel resursförbrukning.
I den första delen kommer jag att detaljerat berĂ€tta om, hur man ansluter filebeat, som tillhör ELK-stacken, â ansvarar för att lĂ€sa och skicka enkla textfiler, dĂ€r olika applikationer skriver sina loggar. I kommande artiklar kommer vi att gĂ„ mer ingĂ„ende pĂ„ komponenterna Logstash och Kibana.
Installation
SÄ, filarkivet för filebeat-agenten .
Vi kommer att installera det genom att enkelt packa upp innehÄllet i zip-filen. Till exempel i c:Program Filesfilebeat.Sedan behöver vi köra PowerShell-skriptet install-service-filebeat.ps1,som följer med, för att installera filebeat-tjÀnsten.
Nu Àr vi redo att börja konfigurera konfigurationsfilen.
Fel-tolerans
Filebeat garanterar leverans av loggar till loggsamlingssystemet. Detta uppnÄs genom att hÄlla en register över poster i loggfilerna. Registret lagrar information om de poster som har lÀsts frÄn loggfilerna och markerar specifika poster som framgÄngsrikt har skickats till destinationsplatsen.
Om en post inte kan levereras kommer filebeat att försöka skicka den igen tills den fÄr en bekrÀftelse frÄn mottagande system eller den ursprungliga loggfilen tas bort under rotation.
Vid omstart av filebeat-tjÀnsten kommer den att lÀsa information frÄn registret om de senaste lÀsta och levererade posterna och kommer att lÀsa poster i loggfilerna baserat pÄ informationen i registret.
Detta minimerar risken för att förlora information om loggar som behöver skickas till servrarna elasticlogstash under oförutsedda avbrott och under serverunderhÄll.
Mer om detta kan : Hur Filebeat hÄller reda pÄ filernas tillstÄnd och Hur Filebeat sÀkerstÀller leverans minst en gÄng?
InstÀllning
All konfiguration görs i en konfigurationsfil av formatet yml, som Àr uppdelad i flera sektioner. LÄt oss titta pÄ nÄgra av dem som deltar i processen för insamling av loggar frÄn Exchange-servrar.
Loggbehandlingsblock
Loggbehandlingsblocket börjar med fÀltet:
filebeat.inputs:Vi kommer att anvÀnda ett gemensamt verktyg för logginsamling:
- typ: loggDÀrefter anger vi status (aktiverad) och vÀgar till mappen med loggar. Till exempel, i fallet med IIS-loggar kan instÀllningarna se ut pÄ följande sÀtt:
enabled: true
paths:
- C:inetpublogsLogFilesW3SVC1*.log
- C:inetpublogsLogFilesW3SVC2*.log
Ytterligare en viktig instÀllning: hur filebeat ska lÀsa flera rader poster. Som standard rÀknar filebeat en rad i loggfilen som en post. Detta fungerar bra tills vi börjar fÄ undantag relaterade till felaktig funktion av tjÀnsten. I detta fall kan undantagen bestÄ av flera rader. DÀrför mÄste filebeat betrakta en fleradig post som en, om nÀsta rad börjar med ett datum. Loggformatet i Exchange Àr sÄdant att varje ny post i loggfilen börjar med ett datum. I konfigurationen ser detta villkor ut sÄ hÀr:
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
negate: true
match: afterDet Àr meningsfullt att lÀgga till taggar i den skickade posten, till exempel:
tags: ['IIS', 'ex-srv1']Och glöm inte att utesluta rader som börjar med ett hash-tecken:
exclude_lines: ['^#']SÄ, blocket för att lÀsa loggarna kommer att se ut pÄ följande sÀtt:
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: ['^#']Blocket för att skicka loggar
Individuella poster i loggfilen skickas av filebeat som ett json-objekt, dÀr den specifika posten frÄn loggen finns i fÀltet message. Om vi vill arbeta med denna information mÄste vi först parsa detta fÀlt till separata fÀlt. Detta kan göras, till exempel, i logstash. Det kommer att vara mottagaren av posterna frÄn filebeat. SÄ hÀr kan det se ut i filebeat-konfigurationsfilen:
output.logstash:
hosts: ["logstash1.domain.com:5044"]
Om det finns flera servrar kan indikatorn för lastbalansering aktiveras: dÄ kommer filebeat att skicka loggar inte till den första tillgÀngliga servern i listan, utan fördela de skickade loggarna mellan flera servrar:
hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
loadbalance: true Filebeat lÀgger till viss metadata i det skickade json-objektet, utöver loggposten som finns i fÀltet message, vilket pÄverkar storleken pÄ dokumentet som skickas till elastic. Denna metadata kan selektivt tas bort frÄn sÀndningen. Detta görs i blocket processor med hjÀlp av processorn drop_fields. Exempelvis kan följande fÀlt uteslutas:
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"]Valet av uteslutna fÀlt bör göras noggrant, eftersom vissa av dem kan anvÀndas pÄ elastic-sidan för att bygga index.
SÄ, blocket för att skicka loggar kommer att se ut pÄ följande sÀtt:
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"]InstÀllningar för filebeat-loggning
Det Àr meningsfullt att stÀlla in följande loggningsalternativ:
- LoggningsnivÄn info;
- Loggar skrivs till filer som finns pÄ standardplats (katalog logs, i installationskatalogen för filebeat);
- Loggfilens namn Àr filebeat;
- Spara de senaste 10 loggfilerna;
- Starta rotation nÀr storleken nÄr 1 MB.
Den slutliga loggningsinstÀllningen kommer att se ut sÄ hÀr:
logging.level: info
logging.to_files: true
logging.files:
name: filebeat
keepfiles: 10
rotateeverybytes: 1048576Den slutliga konfigurationen kommer att se ut pÄ följande sÀtt:
Vi har samlat konfigurationen, och nu ser den ut sÄ hÀr:
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: 1048576Det Àr viktigt att förstÄ att konfigurationsfilens format Àr yml. DÀrför Àr det viktigt att korrekt stÀlla in mellanslag och bindestreck.
Filebeat kan kontrollera konfigurationsfilen, och om syntaxen innehÄller fel, kommer den att ange vilken rad och pÄ vilken plats i raden syntaxen Àr felaktig. Kontroll görs pÄ följande sÀtt:
.filebeat.exe test configDessutom kan filebeat kontrollera den nÀtverksmÀssiga tillgÀngligheten av loggmottagaren. Kontroll körs sÄ hÀr:
.filebeat.exe test outputI nÀsta avsnitt kommer jag att berÀtta om kopplingen och samarbetet mellan Exchange och komponenterna Logstash och Kibana.
Nyttiga lÀnkar
KĂ€lla: habr.com
