forskellen mellem middelmådige produkter og gode produkter er logning. Lær hvorfor det er sådan, og hvordan man binder det hele sammen.ligesom sikkerhed er logning en anden vigtig komponent i webebapplikationer (eller applikationer generelt), der bliver sidelineret på grund af gamle vaner og manglende evne til at se fremad. Hvad mange ser som ubrugelige bunker af digital tape er kraftfulde værktøjer til at se inde i dine applikationer, rette fejl, forbedre svage områder og glæde kunder.,
før vi går videre til centraliseret logning, lad os først se på, hvorfor logning er så stor.
to typer (niveauer) af logning
computere er deterministiske systemer, undtagen når de ikke er det.som professionel udvikler har jeg stødt på mange tilfælde, hvor appens observerede opførsel forvirrede alle i flere dage, men nøglen var altid i logfilerne. Hvert stykke soft .are, vi kører, producerer (eller i det mindste skal generere) logfiler, som fortæller os, hvad det gik igennem, da den problematiske situation opstod.,
nu er logning, som jeg ser det, af to typer: auto-genererede logfiler og programmergenererede logfiler. Bemærk, at dette ikke er nogen lærebogdifferentiering, og at citere mig om denne terminologi vil lande dig i problemer. image
billedet ovenfor viser, hvad der kan betegnes som en automatisk genereret log.
i dette specifikke tilfælde er det et PHORDPRESS-system, der logger en uventet tilstand (en meddelelse), når du kører en PHP-kode., Logfiler som disse genereres hele tiden utrætteligt – af databaseværktøjer som Mys .l, webebservere som Apache, programmeringssprog og miljøer, mobile enheder og endda operativsystemer.
disse indeholder sjældent meget værdi, og programmerere gider ikke engang at undersøge dem, undtagen når noget går galt. På sådanne øjeblikke graver de dybt ind i logfilerne og forsøger at forstå, hvad der gik galt.
men auto-genererede logfiler kan kun hjælpe så meget., Hvis flere personer har admin adgang til et siteebsted, for eksempel, og en af dem sker for at slette et vigtigt stykke information, er det umuligt at opdage synderen ved hjælp af auto-genererede logfiler. Set fra systemerne bundet sammen som applikationen var det bare endnu en dag i jobbet-nogen havde den nødvendige myndighed til at udføre en opgave, og så udførte systemet det.
hvad der er brug for her er et ekstra lag eksplicit, omfattende logning, der skaber stier til den menneskelige side af tingene., Dette er, hvad jeg betegner som programmergenererede logfiler, og de danner rygraden i følsomme industrier som bankvirksomhed. Her er et eksempel på, hvad en sådan logning ordning kunne se ud:
Logning er magt
Så i betragtning af disse to typer af logs i et system, her er, hvordan du kan udnytte dem og rampe op virkning.
at være foran kunden
“Customer delight” er blevet kendt som en ubrugelig marketinggimmick, men takket være logning kan den gøres meget reel., Jeg kender til digitale produkter, der overvåger deres logfiler som en ha hawkk, og så snart en kunde bryder noget på siden, kan de ringe til kunden og tilbyde at hjælpe.
tænk bare på det-inden for få sekunder efter at have fået en grim fejl, får du et opkald fra firmaet, der siger: “Hej, jeg forstår, at du forsøgte at tilføje denne vare til vognen, men den blev ved med at dø. Er det okay for mig at tilføje denne gang og fuldføre ordren for dig?”
glad kunde? Det kan du tro!,
Holdmoral og produktivitet
som jeg sagde før, når fejl ikke spores i lang tid, bliver udviklerne i dit team frustrerede og mister mere og mere tid på at jage deres haler. Og her er sagen med debugging — det kræver et nyt, nysgerrig sind fra starten. Hvis en WTF tænkte så meget som kommer ind i din hjerne, går hele processen til et kast.
og hvad gør debugging hårdt? I min erfaring, manglende logning, eller manglen på viden om logning., For startere, kan du ikke indse, at din foretrukne database er også bare et stykke software, der genererer logs, eller du ikke logge meget i din ansøgning (se programmør-genereret logs over).
Jeg husker især en sag, hvor ansøgningen ikke reagerede, og ingen vidste hvorfor. Et par dage senere var den skyldige disk I/O-grænsen nået på grund af overdreven trafik. Fordi ingen gider at se der, kunne ingen finde ud af hvorfor.,
revisionsspor
Hvad hvis to år ned linjen din kunde siger, at alle disse ordrer ikke blev placeret af dem, men nogle hacker?
hvilket argument skulle underholde eller afvise deres anmodning? Hvis du har omfattende logning (IP-adresse, dato og tid, kreditkort osv.), så vil du være i stand til at analysere alt det og nå en beslutning. Godt eller dårligt, det vil i det mindste have et objektivt grundlag, snarere end at ligne et skud i mørket.
det samme er tilfældet, hvis du kommer under en regulatorisk linse eller skal gennemgå en tredjepartsrevision som en del af et nyt, vigtigt projekt. Hvis du ikke har et robust loggesystem, viser du dig i et dårligt lys.
forbedring af eksisterende systemer
hvordan kan du gå om at forbedre det nuværende system?
skal du blot smide flere RAM og CPU tråde på det? Hvad hvis din app er langsom på trods af nok ressourcer? Hvor er flaskehalsen? Oftere end ikke, logning er svaret.,for eksempel har alle større databasesystemer en funktion til logning af langsomme forespørgsler.
Hvis du besøger den langsomme forespørgsel log regelmæssigt, vil du få at vide, hvilke operationer, og som tager mest tid, og dermed afdække små, men vigtige områder, der skal arbejde. Ofte fungerer en lille ændring som denne bedre end at fordoble hard .arekapaciteten.
Der er ikke tælle, hvor mange måder en god logning system hjælper dig., Måske er det bedste argument, at det er en automatiseret aktivitet, der en gang er oprettet, ikke har brug for nogen overvågning, og vil spare dig for ruin en dag.
med det ude af vejen, lad os se på nogle af de fantastiske Open Source Log samlere (unified logging tools) derude. Bare i tilfælde af at du undrer dig, dækkede vi kommercielle skybaserede logningsværktøjer i et tidligere indlæg.
Graylog
Graylog er en af de førende navne i branchen, når det kommer til industri-grade skovhugst og visualisering kapaciteter., Det er også unikt, fordi det scanner dine indsamlede logfiler for tegn på sikkerhedssårbarheder og giver dig besked med det samme.mens Graylog er et centraliseret loggesystem, har det den fleksibilitet, du har brug for, så du kan tilpasse advarsler, dashboards og meget mere.
Greylog er open source, men der er en virksomhedsplan, hvis dine behov er komplekse.
med klienter som SAP, Cisco og LinkedIn på sin liste er Graylog et værktøj, du kan stole på med lukkede øjne.,
Logstash
Hvis du er fan eller bruger af Elastic stack, er Logstash værd at tjekke ud (ELK stack er allerede en ting, hvis du ikke vidste det). Ligesom andre logging værktøjer på denne liste, Logstash hvis fuldt open source, så du frihed til at implementere og bruge som du ønsker.
men ikke blive vildledt: Logstash er et moderskib med kapaciteter langt opvejer enhver ydmyg logning værktøj. Det er i stand til at indsamle store mængder data fra flere platforme, giver dig mulighed for at definere og udføre dine egne datarørledninger, give mening om ustrukturerede logdumps og meget mere.,
selvfølgelig er den eneste begrænsning, at det kun virker med Elastic suite af produkter, men hvis du starter og søger at skalere snart, er Logstash vejen at gå!
Fluentd
blandt centraliserede logningsværktøjer, der fungerer som et mellemlag til dataindtagelse, er Flutend en første blandt ligemænd. Med et fremragende bibliotek med plugins er Fluentd i stand til at fange data fra stort set ethvert produktionssystem, ælte det i den ønskede struktur, opbygge en brugerdefineret rørledning og fodre det til din foretrukne analyseplatform, det være sig MongoDB eller Elasticsearch.,
Fluentd er bygget på Ruby, er helt open source, og er meget populær på grund af dens fleksibilitet og modularitet.med store virksomheder som Microsoft, Atlassian og T .ilio, der bruger platformen, har Fluentd intet at bevise. FL
Flume
Hvis virkelig, virkelig store datasæt er din udfordring, og du til sidst vil fodre alt til noget som Hadoop, er Flume et af de bedste valg omkring. Det er et “rent” open source-projekt i den forstand, at det vedligeholdes af vores elskede Apache Foundation, hvilket betyder, at der ikke er nogen virksomhedsplan.,
Dette er muligvis ikke det, du nøjagtigt leder efter. 🙂
der er Skrevet i Java (som fortsætter med at forbløffe mig, når det kommer til banebrydende tech), Flume ‘ s kildekoden er helt åben. Flume er bedst for dig, hvis du leder efter en distribueret, fejltolerant dataindtagelsesplatform til tunge ting.,
Octopussy
jeg give det nul ud af ti for produkt navngivning, men Octopussy kan være et godt valg, hvis dine behov er enkle, og du spekulerer over, hvad al den ballade, der er relateret til rørledninger, indtagelse, sammenlægning, osv., handler om.
efter min mening dækker Octopussy behovene hos de fleste produkter derude (estimeret statistik er ubrugelig, men hvis jeg skulle gætte, ville jeg sige, at det tager sig af 80% af brugssager i den virkelige verden).Octopussy har slet ikke en stor brugergrænseflade (Se her), men det gør op for det med hensyn til hastighed og mangel på oppustethed., Kilden er tilgængelig på GitHub, som forventet, og jeg synes, det er værd at se seriøst ud.
Rsyslog
Rsyslog står for et rakethurtigt system til logbehandling.
det er et værktøj til Uni.-lignende operativsystemer. Teknisk set er det en meddelelsesrouter med dynamisk belastbare indgange og udgange og er meget konfigurerbar.
det kan tage input fra flere datakilder, omdanne det og sende output til flere destinationer. Med Rsyslog kan du levere 1 million beskeder i sekundet over lokale destinationer.,
Rsyslog giver også en agentindo .s agent, der arbejder meget tæt sammen med Rsyslog Linu.agent. Det bruges til integration mellem de to miljøer. Denne agentindo .s agent bruges til at videresende hændelseslogfiler for windowsindo .s og installationsfilmonitortjeneste.
Nedenfor er der andre funktioner, der tilbydes af File:
- Fleksible konfigurationer
- Giver multi-threading kapaciteter
- Log fil manipulation beskyttelse ved hjælp af log-signaturer og kryptering.,
- understøtter Big Data platforme
- giver indholdsbaserede filtrering kapaciteter
Logaly .e
Logaly .e var et kommercielt produkt, der for nylig blev gjort open source. Selvom jeg ikke kunne projektet på GitHub, laver de et installindo .s-installationsprogram og al kildekode, der kan do .nloades.
Hvis du er interesseret i et fællesskab, kan du finde oplysninger om en postliste her.
Logaly .e er et relativt fleksibelt og kraftfuldt tilbud, der vil fungere fint til enkeltsysteminstallationer, der søger at kombinere logning fra kendte kilder som Postfi., Apache osv.,, og producere output i CSV, PDF, HTML eller lignende formater. Ja, det gør ikke alt, men da det var et kommercielt produkt på .n gang, gør det det ret godt.
LogPacker
Når det kommer til at vælge et værktøj til jobbet, har jeg to kriterier: det skal fokuseres, og det skal understøttes af en aktiv forretningsmodel. Problemet med open source-soft .are er generelt, at et par måneder/år nede ad vejen er chancerne for stagnation eller død høje. Der er ingen optælling af, hvor mange logningsværktøjer der blev lanceret med gusto, kun for at blive fundet nu i GitHub kirkegård.,
målt ved denne målestok er LogPacker en favorit for mig.
som du kan fortælle fra skærmbilledet, LogPacker handler om logfiler, og intet andet. Deres skub er bestemt mod deres cloud-tilbud, men du er mere end velkommen til at do .nloade og installere det på dine servere (GitHub-side her).Clustering og aggregering er tilgængelige for dem, der ønsker at bruge det på en ikke-triviel skala, og virksomhedsplaner er tilgængelige, der ønsker at arbejde med API ‘ en eller har brug for større implementeringer., En forfriskende minimalistisk (fokuseret, men ikke funktionsfyldt) påtager sig logging management, efter min mening!
Logatchatch
Jeg er sikker på, at der er dem blandt os, der ikke ønsker Al ceremonien forbundet med et “samlet” “centraliseret” loggesystem. Deres forretning kommer fra enkelt servere, og de leder efter noget hurtigt og effektivt til at se deres logfiler. Nå, sig hej til log .atch.
Når det er installeret, kan Log canatch scanne dine systemlogfiler og oprette en rapport af den ønskede type., Det er dog et noget dateret stykke soft .are (Læs “pålidelig”) og blev skrevet i Perl. Så du skal bruge Perl 5.6 + på din server for at køre den. Jeg har ikke nogen skærmbilleder at dele, da det er en rent kommandolinje, daemoniseret proces.
Hvis du er en CLI junkie og har en kærlighed til den gamle skole måde at gøre ting på, vil du elske Log !atch!
Syslog-ng
Syslog-ng-værktøjet blev udviklet som en måde at behandle Syslog (en etableret klient-serverprotokol til systemlogning) datafiler i realtid., Over tid er det dog kommet til at understøtte andre dataformater: ustruktureret, s .l og nos .l. Hvordan Syslog-protokollen fungerer, opsummeres stort set pænt i den følgende illustration.
syslog-ng er en produktion-grade, pålidelig log samling og klassificering værktøj, der blev skrevet i C og har været et etableret navn i branchen for længe. Den bedste del er dens udvidelsesmuligheder, så du kan skrive plugins i C, Python, Java, Lua eller Perl.
lnav
Kort for (Log Navigator), lnav er en ren-terminal værktøj, der fungerer på en enkelt maskine, enkelt bibliotek., Det er for dem, der har deres logning forenet i en enkelt mappe eller ønsker at filtrere og vise real-time logs fra en enkelt kilde.
Hvis du troede, lnav var noget mere end herliggjort tailf |
grep
du ville være forkert. Der er flere funktioner, der vil gøre dig falde i kærlighed med det: time-series udsigt, smukke-udskrivning (JSON og andre formater), farve-kodet log kilder, effektive filtre, evnen til at forstå flere logning protokoller, og meget mere.,
det er bare, at nogle gange vil du have et nul-besvær, nulopsætning, måske-midlertidigt logginglag, og lnav passer perfekt til regningen!
konklusion
og der har du det!
det var en hård Liste at kompilere, for at være ærlig, da logning ikke er så populær som f.eks. Alligevel er alles behov forskellige, og jeg har forsøgt at dække dem i vid udstrækning.
fra dumme kommandolinje, no-setup værktøjer til fuld-blæst data juggernauts, det hele er her! Gik jeg glip af noget? Selvfølgelig gjorde jeg det!
Skriv et svar