Sāku rakstu sēriju, kur vēlos dalīties ar savu pieredzi, piesaistot Exchange un ELK. Šī kaudze palīdzēs apstrādāt lielus žurnālu apjomus un neuzdot jautājumu, pie kāda izmēra ierastas žurnālu rīki pārstās mums palīdzēt. Ie-pazīsimies ar jauno dalībnieku žurnālos.
Exchange ir pietiekami attīstīta žurnālu sistēma. Vispieprasītākie žurnāli ir izsekošanas žurnāli, kas izseko konkrēta e-pasta soļus iekšējā pastu organizācijā; tīmekļa servera žurnāli, kas izseko katru jaunu lietotāja sesiju sistēmā, un konkrētu tīmekļa lietojumprogrammu žurnāli ar dažādām sesijas detalizācijas pakāpēm. Arī Exchange spēj saglabāt neapstrādātus protokolu žurnālus smtp, imap un pop3.
Kādus rīkus mēs varam izmantot darbam ar žurnāliem:
- Iekšējais komandlīnijas rīks Get-MessageTrackingLog: ērti apstrādā izsekošanas žurnālus;
- Rīks logparser: žurnālu apstrādei izmanto pseido-SQL valodu meklēšanai un strādā diezgan ātri;
- Ārējais SQL-serveris: īpaši specifiskos gadījumos (piemēram, datu analīze ilgākos laika posmos).
Viss tas darbojas labi, kad mums ir pāris serveru un apstrādāto žurnālu apjoms tiek mērīts desmitos simtos gigabaitu. Bet kas notiek, ja serveru skaits ir desmitos, bet žurnāli pārsniedz terabaitu? Šī shēma, visticamāk, sāk sabrukt.
Un, šeit notiek tas: Get-MessageTrackingLog sāk izsist ar taimeru, logparser sasniedz 32-bit arhitektūras ierobežojumus, un eksportēšana uz SQL-serveri sabrūk pašā nepiemērotākajā brīdī, nespējot apstrādāt daudzrindu izņēmumu no pakalpojuma.
Šeit iznāk jauns dalībnieks - ELK kaudze, kas īpaši pielāgota, lai veiksmīgi apstrādātu milzīgus žurnālu apjomus saprātīgos termiņos un ar pieņemamu resursu patēriņu.
Pirmajā daļā es detalizēti izskaidrošu, kā pieslēgt filebeat, kas pieder ELK kaudzes sastāvdaļai — atbild par vienkāršu teksta failu lasīšanu un nosūtīšanu, kur dažādas lietojumprogrammas raksta savus žurnālus. Nākamajās rakstu daļās mēs sīkāk apskatīsim Logstash un Kibana komponentus.
Uzstādīšana
Tātad, filebeat aģenta arhīva fails .
Instalāciju veiksim vienkārši izpakējot zip faila saturu. Piemēram, c:Program Filesfilebeat. Pēc tam ir jāsāk PowerShell skripts install-service-filebeat.ps1, kas nāk komplektā, lai uzstādītu filebeat pakalpojumu.
Tagad esam gatavi sākt konfigurācijas faila iestatīšanu.
Izmaksu noturība
Filebeat nodrošina žurnālu nosūtīšanu uz žurnālu apkopošanas sistēmu. Tas tiek īstenots ar žurnāla ierakstu reģistra palīdzību. Reģistrā tiek glabāta informācija par ierakstiem, kas tika nolasīti no žurnāla failiem, un atzīmēti konkrēti ieraksti, kurus izdevās piegādāt galamērķim.
Ja kādu ierakstu nevar piegādāt, tad Filebeat centīsies to nosūtīt atkārtoti, līdz saņems piegādes apstiprinājumu no saņēmēj sistēmas vai oriģinālais žurnāla fails tiks izdzēsts rotācijas procesā.
Pēc Filebeat pakalpojuma pārrestartēšanas tiks nolasīta reģistra informācija par pēdējiem nolasītajiem un piegādātajiem ierakstiem, un tiks nolasīti ieraksti no žurnāla failiem, pamatojoties uz informāciju reģistrā.
Tas ļauj minimizēt žurnālu informācijas zaudēšanas risku, kas nepieciešams nosūtīšanai uz elasticlogstash serveriem, neparedzētu traucējumu un serveru tehniskās apkalpošanas operāciju laikā.
Sīkāk par to var : Kā Filebeat saglabā failu stāvokli un Kā Filebeat nodrošina vismaz reizi piegādi?
Iestatījumi
Visa iestatīšana tiek veikta formāta konfigurācijas failā yml, kas ir sadalīts vairākās sekcijās. Apskatīsim dažas no tām, kas piedalās žurnālu apkopes procesā no Exchange serveriem.
Žurnālu apstrādes bloks
Žurnālu apstrādes bloks sākas ar lauku:
filebeat.inputs:Mēs izmantosim kopīgu žurnālu apkopošanas rīku:
- tips: žurnālsTālāk norādām statusu (ieslēgts) un ceļus uz žurnālu mapi. Piemēram, gadījumā ar IIS žurnāliem iestatījumi varētu būt šādi:
enabled: true
paths:
- C:inetpublogsLogFilesW3SVC1*.log
- C:inetpublogsLogFilesW3SVC2*.log
Vēl viens svarīgs uzstādījums: kā Filebeat jāizlasa multiple line ieraksti. Noklusējuma iestatījumā Filebeat uzskata, ka viena žurnāla faila rinda ir viens ieraksts. Tas labi darbojas, kamēr žurnālā neparādās izņēmumi, kas saistīti ar pakalpojuma nepareizu darbību. Šajā gadījumā izņēmumi var sastāvēt no vairākām rindām. Tādēļ Filebeat jāuzskata par multiple line ierakstu kā vienu, ja nākamā rinda sākas ar datumu. Žurnālu formāts Exchange ir tāds: katrs jaunais ieraksts žurnāla failā sākas ar datumu. Konfigurācijā šis nosacījums izskatās šādi:
multiline:
pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
negate: true
match: afterIr ir jēga pievienot tagus sūtītajai ierakstam, piemēram:
tags: ['IIS', 'ex-srv1']Un neaizmirstiet izslēgt apstrādi rindiņām, kas sākas ar haša simbolu:
exclude_lines: ['^#']Tātad, žurnālu lasīšanas bloks izskatīsies šādi:
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: ['^#']Žurnālu sūtīšanas bloks
Atsevišķus ierakstus žurnāla failā filebeat nosūta kā json objektus, kuros katrs ieraksts no žurnāla saturas vienā laukā message. Ja vēlamies ar šo informāciju kaut kā strādāt, mums iepriekš ir jāsadala šis lauks atsevišķos laukos. To var izdarīt, piemēram, logstash. Tas būs saņēmējs ierakstiem no filebeat. Lūk, kā tas var izskatīties filebeat konfigurācijas failā:
output.logstash:
hosts: ["logstash1.domain.com:5044"]
Ja serveru ir vairāki, var ieslēgt slodzes balansēšanu: tādējādi filebeat sūtīs žurnālus nevis uz pirmo pieejamo serveri sarakstā, bet izplatīs nosūtītos žurnālus starp vairākiem serveriem:
hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
loadbalance: true Filebeat, apstrādājot žurnālus nosūtītajā json, papildus žurnāla ierakstam, kas atrodas laukā message, pievieno noteiktu daudzumu metadatu, kas ietekmē dokumenta izmēru, kas nonāk elastīgajā. Šos metadatus var izvēles kārtībā izņemt no sūtīšanas. To veic processor blokā ar palīdzību drop_fields. Var izslēgt, piemēram, šādus laukus:
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"]Izvēloties izslēgtos laukus, jābūt uzmanīgiem, jo daļa no tiem var tikt izmantota pusē elastīgās indeksu veidošanai.
Tātad, žurnālu sūtīšanas bloks izskatīsies šādi:
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 žurnāla iestatījumi
Ir jēga iestatīt šādas žurnāla iestatījumus:
- Žurnāla līmenis info;
- Ierakstīt žurnālus failos, kas atrodas pēc noklusējuma (logs direktorijā, filebeat instalācijas direktorijā);
- Žurnāla faila nosaukums — filebeat;
- Glabāt pēdējos 10 žurnāla failus;
- Sākt rotāciju, kad tiek sasniegta 1MB izmēra.
Beigās, žurnālu iestatījumu blokam būs šāda struktūra:
logging.level: info
logging.to_files: true
logging.files:
name: filebeat
keepfiles: 10
rotateeverybytes: 1048576Beigu konfigurācija
Mēs esam apkopojuši konfigurāciju, un tagad tā izskatās šādi:
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: 1048576Ir svarīgi saprast, ka konfigurācijas faila formāts ir yml. Tāpēc ir būtiski pareizi izvietot atstarpes un mīnusus.
Filebeat spēj pārbaudīt konfigurācijas failu un, ja sintakse satur kļūdas, norādīs, kurā rindā un kurā vietā rindiņā sintakse ir nepareiza. Pārbaude tiek veikta šādi:
.filebeat.exe test configTurklāt filebeat spēj pārbaudīt tīkla pieejamību žurnālu saņēmējam. Pārbaude tiek uzsākta šādi:
.filebeat.exe test outputNākamajās daļās es pastāstīšu par Exchange savienošanu un sadarbību ar Logstash un Kibana komponentiem.
Noderīgas saites
Avots: habr.com
