het verschil tussen middelmatige producten en grote producten is logging. Leer waarom het zo is, en hoe het allemaal aan elkaar te binden.
net als beveiliging is loggen een ander belangrijk onderdeel van webtoepassingen (of toepassingen in het algemeen) dat buitenspel wordt gezet vanwege oude gewoonten en het onvermogen om vooruit te zien. Wat velen zien als nutteloze riemen van digitale tape zijn krachtige tools om te kijken in uw applicaties, fouten te corrigeren, zwakke gebieden te verbeteren en klanten verrukken.,
voordat we beginnen met gecentraliseerde logging, laten we eerst kijken waarom logging zo belangrijk is.
twee typen (niveaus) van logging
Computers zijn deterministische systemen, behalve wanneer ze dat niet zijn.
als professionele ontwikkelaar ben ik veel gevallen tegengekomen waarin het waargenomen gedrag van de app iedereen dagenlang verbijsterde, maar de sleutel stond altijd in de logs. Elk stuk software dat we draaien, produceert (of zou op zijn minst moeten genereren) logs, die ons vertellen wat het doormaakte toen de problematische situatie zich voordeed.,
nu, loggen, zoals ik het zie, is van twee types: automatisch gegenereerde logs en programmer-gegenereerde logs. Houd er rekening mee dat dit geen schoolboek differentiatie is, en mij citeren op deze terminologie zal je in de problemen brengen. 😉
de afbeelding hierboven laat zien wat een automatisch gegenereerd log kan worden genoemd.
in dit specifieke geval is het een WordPress-systeem dat een onverwachte voorwaarde (een Notice) registreert bij het uitvoeren van een PHP-code., Logs zoals deze worden de hele tijd onvermoeibaar gegenereerd – door databasetools zoals MySQL, webservers zoals Apache, programmeertalen en omgevingen, mobiele apparaten en zelfs besturingssystemen.
Deze bevatten zelden veel waarde, en programmeurs nemen niet eens de moeite om er naar te kijken, behalve als er iets mis gaat. Op zulke momenten, graven ze diep in de logs, proberen te begrijpen wat er mis ging.
maar automatisch gegenereerde logs kunnen slechts zo veel helpen., Als meerdere mensen admin toegang tot een site, bijvoorbeeld, en een van hen gebeurt om een essentieel stuk informatie te verwijderen, is het onmogelijk om de dader te detecteren met het gebruik van automatisch gegenereerde logs. Vanuit het perspectief van de systemen verbonden als de toepassing, het was gewoon een andere dag in de baan — iemand had de benodigde autoriteit om een taak uit te voeren, en dus het systeem uitgevoerd.
wat hier nodig is, is een extra laag van expliciete, uitgebreide logging die paden creëert voor de menselijke kant van dingen., Dit zijn wat ik noem als door programmeurs gegenereerde logs, en ze vormen de ruggengraat van gevoelige sectoren zoals het bankwezen. Hier is een voorbeeld van hoe een dergelijk logschema eruit zou kunnen zien:
Logging is power
dus, gegeven deze twee soorten logs in een systeem, kun je ze als volgt gebruiken en de impact vergroten.
de klant voorblijven
“Customer delight” is bekend geworden als een nutteloze marketinggimmick, maar dankzij logging kan het heel echt worden gemaakt., Ik weet van digitale producten die hun logs te controleren als een hawk, en zodra een klant breekt iets op de pagina, ze kunnen de klant bellen en bieden om te helpen.
denk er eens over na – binnen enkele seconden na het krijgen van een lelijke fout, krijg je een telefoontje van het bedrijf dat zegt, “Hey, ik begrijp dat je probeerde om dit item toe te voegen aan de winkelwagen, maar het bleef sterven. Is het goed voor mij om deze keer toe te voegen en de bestelling voor u te voltooien?”
tevreden klant? Reken maar!,
team moreel en productiviteit
zoals ik al eerder zei, Wanneer bugs lange tijd niet worden getraceerd, raken de ontwikkelaars in je team gefrustreerd en verliezen ze steeds meer tijd om hun staart na te jagen. En hier is het ding met debugging — het vereist een frisse, nieuwsgierige geest vanaf het begin. Als een WTF gedachte zelfs maar in je hersenen komt, gaat het hele proces voor een worp.
en wat maakt debuggen moeilijk? In mijn ervaring, gebrek aan houtkap, of het gebrek aan kennis van houtkap., Om te beginnen realiseer je je misschien niet dat je favoriete database ook gewoon een ander stukje software is dat logs genereert, of dat je niet uitgebreid inlogt in je applicatie (zie programmer-generated logs hierboven).
Ik herinner me in het bijzonder een geval waarin de toepassing niet meer reageerde, en niemand wist waarom. Een paar dagen later, de boosdoener was de schijf I / O limiet bereikt als gevolg van overmatig verkeer. Omdat niemand de moeite nam om daar te kijken, niemand kon erachter komen waarom.,
Audit trails
Wat als twee jaar later uw klant zegt dat al die bestellingen niet door hen zijn geplaatst, maar door een hacker?
welk argument zou er zijn om hun verzoek in overweging te nemen of af te wijzen? Als u uitgebreide logging (IP-adres, datum en tijd, creditcard, enz.), dan zul je in staat zijn om dat alles te analyseren en tot een beslissing te komen. Goed of slecht, het zal op zijn minst een objectieve basis hebben, in plaats van te lijken op een schot in het donker.
hetzelfde geldt als u onder een regelgevend objectief valt of als u een audit van derden moet ondergaan als onderdeel van een nieuw, belangrijk project. Het niet hebben van een robuuste logging systeem zal u in een slecht licht.
bestaande systemen verbeteren
Hoe gaat u het huidige systeem verbeteren?
moet je gewoon meer RAM en CPU threads gooien? Wat als uw app traag is ondanks voldoende middelen? Waar is het knelpunt? Vaker wel dan niet, loggen is het antwoord.,
bijvoorbeeld, alle belangrijke databasesystemen hebben een functie voor het loggen van langzame queries.
Als u de trage query log regelmatig bezoekt, zult u te weten komen welke bewerkingen en het nemen van de meeste tijd, en dus ontdekken kleine maar belangrijke gebieden die werk nodig hebben. Vaak werkt een kleine verandering als deze beter dan een verdubbeling van de hardware capaciteit.
Er is geen tellen hoeveel manieren een goed logsysteem je helpt., Misschien wel het beste argument is dat het een geautomatiseerde activiteit die eenmaal ingesteld, hoeft geen monitoring, en zal u redden van ondergang op een dag.
met dat uit de weg, laten we eens kijken naar een aantal van de verbazingwekkende open Source Log Collectors (unified logging tools) die er zijn. Voor het geval je je afvraagt, we hebben betrekking op commerciële cloud-gebaseerde logging tools in een eerdere post.
Graylog
Graylog is een van de toonaangevende namen in de industrie als het gaat om Industrie-grade logging en visualisatie mogelijkheden., Het is ook uniek in dat het scant uw verzamelde logs voor tekenen van beveiligingsproblemen en waarschuwt u onmiddellijk.
hoewel Graylog een gecentraliseerd logsysteem is, heeft het de flexibiliteit die u nodig hebt, zodat u waarschuwingen, dashboards en meer kunt aanpassen.
Greylog is open-source, maar er is een enterprise plan als uw behoeften complex zijn.
met clients als SAP, Cisco en LinkedIn op zijn rooster, is Graylog een tool die je kunt vertrouwen met je ogen dicht.,
Logstash
Als u een fan of gebruiker bent van de Elastic stack, is Logstash de moeite waard (De ELK stack is al een ding, voor het geval u het niet wist). Net als andere logging tools op deze lijst, Logstash als volledig open-source, zodat u de vrijheid om te implementeren en te gebruiken als je wilt.
maar laat je niet misleiden: Logstash is een moederschip met mogelijkheden die veel groter zijn dan elk eenvoudig logger Gereedschap. Het is in staat om enorme hoeveelheden gegevens van meerdere platforms te verzamelen, kunt u definiëren en uitvoeren van uw eigen data pijpleidingen, maken zin van ongestructureerde log dumps, en meer.,
natuurlijk, de enige beperking is dat het werkt met de Elastic suite van producten alleen, maar als je begint en op zoek bent naar schaal snel, Logstash is de manier om te gaan!
Fluentd
onder gecentraliseerde logging tools die werken als een middelste laag voor gegevensopname, Flutend is een eerste onder gelijken. Met een uitstekende bibliotheek van plugins, is Fluentd in staat om gegevens van vrijwel elk productiesysteem vast te leggen, kneden in de gewenste structuur, bouwen van een aangepaste pijplijn, en voer het naar uw favoriete analytics platform, of het nu MongoDB of Elasticsearch.,
Fluentd is gebouwd op Ruby, is volledig open source, en is enorm populair vanwege zijn flexibiliteit en modulariteit.
met grote bedrijven als Microsoft, Atlassian en Twilio die het platform gebruiken, hoeft Fluentd niets te bewijzen. 🙂
Flume
als echt, echt grote datasets uw uitdaging zijn, en u uiteindelijk alles wilt invoeren in iets als Hadoop, is Flume een van de beste keuzes die er zijn. Het is een” pure ” open source project, in de zin dat het wordt onderhouden door onze geliefde Apache Foundation, wat betekent dat er geen enterprise plan.,
Dit kan wel of niet zijn wat u precies zoekt. 🙂
geschreven in Java (wat me blijft verbazen als het gaat om baanbrekende technologie), is de broncode van Flume volledig open. Flume is het beste voor u als u op zoek bent naar een gedistribueerd, fouttolerant data-ingestieplatform voor heavy-duty spullen.,
Octopussy
Ik geef het nul van de tien voor productnamen, maar Octopussy kan een goede keuze zijn als uw behoeften eenvoudig zijn, en u vraagt zich af wat al het gedoe met betrekking tot pijpleidingen, ingestie, aggregatie, enz., is alles over.
naar mijn mening dekt Octopussy de behoeften van de meeste van de producten die er zijn (geschatte statistieken zijn nutteloos, maar als ik moest raden, zou ik zeggen dat het zorgt voor 80% van de use cases in de echte wereld).
Octopussy heeft helemaal geen geweldige gebruikersinterface (zie hier), maar het maakt het goed met betrekking tot snelheid en gebrek aan bloat., De bron is beschikbaar op GitHub, zoals verwacht, en ik denk dat het de moeite waard een serieuze blik.
Rsyslog
Rsyslog staat voor een snel systeem voor logverwerking.
het is een hulpprogramma voor Unix – achtige besturingssystemen. In technische termen, Het is een bericht router met dynamisch laadbare in-en uitgangen en is zeer configureerbaar.
Het kan invoer uit meerdere gegevensbronnen nemen, het transformeren en de uitvoer naar verschillende bestemmingen verzenden. Met Rsyslog kunt u 1 miljoen berichten per seconde leveren over lokale bestemmingen.,
Rsyslog biedt ook een Windows-agent die zeer nauw samenwerkt met de rsyslog Linux-agent. Het wordt gebruikt voor integratie tussen de twee omgevingen. Deze windows-agent wordt gebruikt om de gebeurtenislogboeken van de Windows-en installatiebestandscontroleservice door te sturen.
hieronder staan andere functies die Rsyslog biedt:
- flexibele configuraties
- biedt multi-threading mogelijkheden
- bescherming tegen manipulatie van logbestanden met behulp van loghandtekeningen en versleuteling.,
- ondersteunt Big Data platforms
- biedt content-based filtermogelijkheden
LOGalyze
LOGalyze was een commercieel product dat onlangs open source werd gemaakt. Hoewel ik het project op GitHub niet kon, maken ze wel een Windows installer en alle broncode downloadbaar.
Als u een community wilt, kunt u hier details van een mailinglijst vinden.
LOGalyze is een relatief flexibel en krachtig aanbod dat goed zal werken voor single-system implementaties die logging proberen te combineren van bekende bronnen zoals Postfix, Apache, enz.,, en produceren de uitvoer in CSV, PDF, HTML of soortgelijke formaten. Ja, het doet niet alles, maar omdat het ooit een commercieel product was, doet het dat vrij goed.
LogPacker
als het gaat om het kiezen van een tool voor de taak, heb ik twee criteria: het moet worden gericht, en het moet worden ondersteund door een actief bedrijfsmodel. Het probleem met open-source software, in het algemeen, is dat een paar maanden/jaren op de weg, de kans op stagnatie of de dood zijn hoog. Er is geen telling van hoeveel logging tools werden gelanceerd met gusto, alleen nu te vinden in de GitHub kerkhof.,
gemeten door deze maatstaf, LogPacker is een favoriet voor mij.
zoals je kunt zien uit de screenshot, LogPacker is alles over logs, en niets anders. Hun push is zeker in de richting van hun cloud-aanbod, maar u bent meer dan welkom om te downloaden en te installeren op uw servers (GitHub pagina hier).
Clustering en aggregatie zijn beschikbaar voor degenen die het op een niet-triviale schaal willen gebruiken, en enterprise plannen zijn beschikbaar die met de API willen werken of Grotere implementaties nodig hebben., Een verfrissend minimalistisch (gericht, maar niet feature-poor) nemen op logging management, naar mijn mening!
Logwatch
Ik weet zeker dat er mensen onder ons zijn die niet willen dat alle ceremonie geassocieerd wordt met een “verenigd” “gecentraliseerd” logsysteem. Hun bedrijf komt van enkele servers, en ze zijn op zoek naar iets snel en efficiënt voor het bekijken van hun logbestanden. Zeg hallo tegen Logwatch.
eenmaal geïnstalleerd, kan LogWatch uw systeemlogboeken scannen en een rapport maken van het type dat u wilt., Het is een enigszins gedateerd stukje software (lees “betrouwbaar”), hoewel, en werd geschreven in Perl. Dus je hebt Perl 5.6+ op je server nodig om het uit te voeren. Ik heb geen screenshots te delen als het is een puur command line, daemonized proces.
als je een CLI junkie bent en een liefde hebt voor de ouderwetse manier van doen, zul je Logwatch geweldig vinden!
Syslog-ng
de Syslog-ng tool is ontwikkeld als een manier om Syslog (een gevestigd client-server protocol voor systeemlogging) gegevensbestanden in real-time te verwerken., Na verloop van tijd is het echter gekomen om andere gegevensformaten te ondersteunen: ongestructureerd, SQL en NoSQL. Hoe het Syslog-protocol werkt, wordt in de volgende afbeelding netjes samengevat.
syslog-ng is een productie-grade, betrouwbare log verzameling en classificatie tool die werd geschreven in C en is een gevestigde naam in de industrie voor lange tijd. Het beste deel is de uitbreidbaarheid, zodat u plugins te schrijven in C, Python, Java, Lua, of Perl.
lnav
kort voor (Log Navigator), lnav is een pure-terminal tool die werkt op een enkele machine, enkele map., Het is voor degenen die hun logging verenigd in een enkele directory of wilt filteren en weergeven real-time logs van een enkele bron.
Als u dacht dat lnav niets meer was dan verheerlijkt tailf |
grep
dan hebt u het mis. Er zijn verschillende functies die ervoor zorgen dat je er verliefd op wordt: time-series view, pretty-printing (voor JSON en andere formaten), kleurgecodeerde logbronnen, krachtige filters, de mogelijkheid om verschillende logboekprotocollen te begrijpen en meer.,
Het is gewoon dat je soms een nul-gedoe, nul setup, misschien-tijdelijke logging laag wilt, en lnav past perfect bij de rekening!
conclusie
en daar heb je het!
Het was een moeilijke lijst om te compileren, om eerlijk te zijn, omdat loggen niet zo populair is als bijvoorbeeld contentmanagement, en alle mindshare lijkt te zijn gegrepen door drie of vier tools. Toch zijn ieders behoeften anders, en ik heb geprobeerd ze uitgebreid te dekken.
van silly command-line, no-setup tools naar full-blown data juggernauts, het is allemaal hier! Heb ik iets gemist? Natuurlijk deed ik dat!
Geef een reactie