Rakendused, mis kasutavad vigadest ja eranditest teatamise peamise mehhanismina e-kirju, tunduvad alguses alati hea mõte. As Java arendajad me arvame: 'hei, ma saan kohe teada, kui midagi valesti läheb!'
Kuid mingil hetkel peate kindlasti mõistma, et veateateid saadetakse teilt eemale ja peate oma e-posti postkasti puhastama. Võite ignoreerida 404-d (enamasti) ja uute registreerumiste kohta teadete saamine võib olla tore, kuid päeva lõpuks võib see muutuda natuke liiga ärevaks või aeganõudvaks.
Varem või hiljem muutub „hõlpsasti kasutatavate” meilide eristamine mõttetutest teadetest keeruliseks. Saate oma meilile seadistada reeglid ja filtrid, kuid isegi need võivad hakata muutumatuks muutuma.
See Java õpetus uurib kasutamise võimalust Logstash taastada juhtimine ja oma e-posti postkast puhastada ning muuta oma veateateid uuesti hallatavaks, muutmata ühtegi rakenduses olevat asja.
Meie Logstashi õpetuse esimene samm on tagada, et kõik teie süsteemist saadud meilid läheksid ühte kausta. Kuna teisaldame kogu sortimise ja haldamise teie postkastist välja, pole enam tähtis, et see oleks enam üks suur kaust. Jätkake ja eemaldage kõik juba loodud kaustad ja filtrid ning vähendage see üheks kaustaks ja üheks filtriks.
Teisalda kõik meilid aadressilt [meiliga kaitstud] ”Kausta“ MyAwesomeAppEmails ”. Kui teil on nende meilide jaoks eraldi postkast, on see veelgi lihtsam.
Nüüd saame seadistada Logstashi kausta küsitlemiseks ja meilide sõelumiseks IMAP-pistikprogramm . Versioon 1.4.2 toetab ainult meilide tõmbamist Postkast , kuid seal on suhteliselt lihtne parandama aastal rakendatud versioon 1.5 konkreetse kausta küsitlemiseks. Kui teil pole eraldi postkasti, rakendage enne jätkamist plaaster oma Logstashi eksemplari IMAP-pistikprogrammi.
# /etc/logstash/conf.d/01-imap-input.conf input { imap { host => 'imap.yourmailserver.com' user => 'username' password => 'password' secure => true fetch_count => 15 folder => 'MyAwesomeAppEmails' # This line will only work if you apply the above mentioned patch } }
See hakkab kontrollima uusi e-kirju ja parsima neid Logstashi sündmusteks.
Palju kasulikke andmeid parsitakse e-kirjadest erinevatesse sündmuse atribuutidesse - pange tähele, et e-posti ajatemplit kasutatakse sündmuse “@timestamp”. Veelgi enam, ainuüksi päistest saame teha näiteks hosti tuvastamist, millest viga pärineb:
filter { mutate { replace => [ 'received', '%{[received][-1]}' ] } grok { match => [ 'received', 'from %{HOSTNAME:hostname} (%{HOSTNAME:full_hostname} [%{IP:ip}])' ] } mutate { remove_field => [ 'received' ] } }
Sellest ei piisa aga teie veameilide taltsutamiseks. Me vajame natuke rohkem, täpsemalt järgmisi kolme sammu, mis kirjeldavad:
Oletame, et panite vea nime, nt. „Vidin ebaõnnestus”, samuti tõrke „ERROR” tõsidus meilisõnumi teemas: „ERROR: Vidin ebaõnnestus /var/www/myapp/foobar.php 20”.
Kasutame seda sündmuse mitme omaduse määramiseks:
filter { grok { match => [ 'subject', '%{WORD:severity}: %{DATA:type} in %{PATH:path} %{POSINT:line}' ] } }
Logstashiga on kaasas mitu ettemääratud mustrid mida võite oodata logides ja muudes erinevates kohtades. Kasutage neid oma Groki mustrite loomiseks ja nende hõlpsamaks lugemiseks. Oleme kasutanud sõna „WORD” (üks sõna), „DATA” (mitte ahne võrguühendus), “PATH” (Unixi või Windowsi failitee) ja “POSINT” (positiivne täisarv). Võite kasutada ka Groki silur oma Groki mustrite silumiseks. Mustriga mittevastavad kirjad märgistatakse märgendiga „_grokparsefailure”.
See hoolitseb vea tüübi, tõsiduse, lähtefaili ja rea eest - põhimõtteliselt kõik sündmuse asjakohased metaandmed. Nüüd detailide juurde.
Võib-olla olete varem oma e-kirjale lisanud kena päise või jaluse allkirja, olles viisakas inimene, kes olete, kuid nüüd on see nii. Eemaldame selle sõnumist, samuti kõik tühikud, et saaksime ülejäänud e-posti sõeluda tõrke virnajälje jaoks:
filter { mutate { # gsub takes 3 elements per substitution: field, regular expression and substitution gsub => [ 'message', 'Your Dev Team', '', 'message', 'More error details:', '' ] } mutate { strip => 'message' } # Split the message into an array of lines, each containing a line of the stacktrace mutate { split => [ 'message', '
' ] } }
Gsub mutatsioon kasutab standardit Rubiin Regexp objekt, seega on kõik võimalused ja funktsioonid saadaval ka logstashis.
Rakendame seda oma Elasticsearchi eksemplari kasutades Logstash Elasticsearch väljund, et saaksime hõlpsalt kogutavaid andmeid otsida ja kvantifitseerida:
output { if '_grokparsefailure' not in [tags] { elasticsearch { } } }
Me välistame kõik sõnumid, mis ei läinud õigesti Grokisse, kontrollides märgendit „_grokparsefailure”. Eelduseks on, et ainult e-kirju, mille teema vastab määratud teemale, tuleks tõlgendada veateavetena. Muidu on see lihtne ja arusaadav.
Logstashil on arvukalt väljundeid, seega täiustame seda veelgi SNS väljund teatada meile olulistest vigadest Amazoni kasutamisel Lihtne teatamisteenus (SNS). Eeldame, et märguande loomiseks peavad olema kõik vead, mille tüüp on „teavitatav”. Kui te ei kasuta EC2 eksemplari, peate määrama AWS-i võtme ja saladuse.
output { if 'notifiable' in [tags] { sns { region => 'us-east-1' arn => 'arn:aws:sns:us-east-1:1234567890123456:mytopic' access_key_id => 'AWS ACCESS_KEY' # Only specify these if you're not on an EC2 instance secret_access_key => 'AWS ACCESS SECRET' # Only specify these if you're not on an EC2 instance } } }
Vigade märkimine „teavitatavatena“ on teie otsustada. Seda saate teha kas vea tõsiduse või vea tüübi järgi.
Nüüd saate olulisi e-kirju uuesti lugeda ja võite olla kindel, et te ei jäta olulisi veateateid eemale. Samuti saate teha teadlikke otsuseid selle kohta, milliseid vigu parandada, sest näete, kui tihti viga ilmneb ja millal see viimati tekkis. Konkreetse vea otsimine on ka lihtsam ja kiirem tänu Elasticsearchi suurepärasele otsimisvõimele, mis on kirjeldatud selles Logstashi õpetuses.