La differenza tra prodotti mediocri e grandi prodotti è la registrazione. Scopri perché è così e come legarlo tutto insieme.
Proprio come la sicurezza, la registrazione è un altro componente chiave delle applicazioni Web (o delle applicazioni in generale) che viene messo da parte a causa delle vecchie abitudini e dell’incapacità di vedere avanti. Quello che molti vedono come risme inutili di nastro digitale sono potenti strumenti per guardare all’interno delle applicazioni, correggere gli errori, migliorare le aree deboli, e deliziare i clienti.,
Prima di passare alla registrazione centralizzata, esaminiamo prima perché la registrazione è un grosso problema.
Due tipi (livelli) di registrazione
I computer sono sistemi deterministici, tranne quando non lo sono.
Come sviluppatore professionista, mi sono imbattuto in molti casi in cui il comportamento osservato dell’app ha sconcertato tutti per giorni e giorni, ma la chiave era sempre nei log. Ogni pezzo di software che eseguiamo produce (o almeno dovrebbe generare) registri, che ci dicono cosa stava passando quando si è verificata la situazione problematica.,
Ora, la registrazione, come la vedo io, è di due tipi: log generati automaticamente e log generati dal programmatore. Si prega di notare che questa non è una differenziazione da manuale, e citarmi su questa terminologia ti metterà nei guai. 😉
L’immagine sopra mostra ciò che può essere definito come un log generato automaticamente.
In questo caso specifico, è un sistema WordPress che registra una condizione imprevista (un avviso) durante l’esecuzione di un codice PHP., Log come questi vengono generati tutto il tempo instancabilmente-da strumenti di database come MySQL, server web come Apache, linguaggi di programmazione e ambienti, dispositivi mobili e persino sistemi operativi.
Questi raramente contengono molto valore, e i programmatori non si preoccupano nemmeno di esaminarli, tranne quando qualcosa va storto. In questi momenti, scavano in profondità nei registri, cercando di capire cosa è andato storto.
Ma i registri generati automaticamente possono aiutare solo così tanto., Se più persone hanno accesso amministratore a un sito, per esempio, e uno di loro capita di eliminare un pezzo essenziale di informazioni, è impossibile rilevare il colpevole con l’uso di log generati automaticamente. Dal punto di vista dei sistemi legati insieme come applicazione, era solo un altro giorno nel lavoro — qualcuno aveva l’autorità necessaria per eseguire un compito, e così il sistema lo ha eseguito.
Ciò che serve qui è un ulteriore livello di registrazione esplicita e estesa che crea percorsi per il lato umano delle cose., Questi sono quelli che definisco come log generati dai programmatori e costituiscono la spina dorsale di settori sensibili come il settore bancario. Ecco un esempio di come potrebbe essere un tale schema di registrazione:
La registrazione è potenza
Quindi, dati questi due tipi di registri in un sistema, ecco come puoi sfruttarli e aumentare l’impatto.
Stare davanti al cliente
“Customer delight” è diventato noto come un inutile espediente di marketing, ma grazie alla registrazione, può essere reso molto reale., So di prodotti digitali che monitorano i loro registri come un falco, e non appena un cliente rompe qualcosa sulla pagina, possono chiamare il cliente e offrire aiuto.
Pensaci — in pochi secondi da un brutto errore, ricevi una chiamata dalla compagnia che dice: “Ehi, capisco che stavi cercando di aggiungere questo articolo al carrello, ma continuava a morire. Va bene per me aggiungere questa volta e completare l’ordine per te?”
Cliente soddisfatto? Puoi scommetterci!,
Morale e produttività del team
Come ho detto prima, quando i bug non vengono tracciati per molto tempo, gli sviluppatori del tuo team si sentono frustrati e perdono sempre più tempo a inseguire le loro code. Ed ecco la cosa con il debug-richiede una mente fresca e curiosa fin dall’inizio. Se un WTF pensato tanto quanto entra nel tuo cervello, l’intero processo va per un lancio.
E cosa rende difficile il debug? Nella mia esperienza, la mancanza di registrazione, o la mancanza di conoscenza della registrazione., Per cominciare, potresti non renderti conto che il tuo database preferito è anche solo un altro software che genera log, o che non stai registrando ampiamente nella tua applicazione (vedi log generati dal programmatore sopra).
Ricordo in particolare un caso in cui l’applicazione non rispondeva e nessuno sapeva perché. Pochi giorni dopo, il colpevole era il limite di I/O del disco raggiunto a causa del traffico eccessivo. Perché nessuno si preoccupava di guardare lì, nessuno riusciva a capire perché.,
Audit trail
Cosa succede se due anni dopo il tuo cliente dice che tutti quegli ordini non sono stati inseriti da loro ma da qualche hacker?
Quale argomento dovrebbe intrattenere o rifiutare la loro richiesta? Se si dispone di una registrazione estesa(indirizzo IP, data e ora, carta di credito, ecc.), allora sarete in grado di analizzare tutto questo e raggiungere una decisione. Buono o cattivo, avrà almeno una base oggettiva, piuttosto che assomigliare a un colpo al buio.
Lo stesso vale se si arriva sotto qualche lente normativa o sono tenuti a sottoporsi a un audit di terze parti come parte di un nuovo, importante progetto. Non avere un robusto sistema di registrazione ti mostrerà in cattiva luce.
Migliorare i sistemi esistenti
Come si fa a migliorare il sistema attuale?
Dovresti semplicemente lanciare più thread di RAM e CPU? Cosa succede se la tua app è lenta nonostante le risorse sufficienti? Dov’è il collo di bottiglia? Il più delle volte, la registrazione è la risposta.,
Ad esempio, tutti i principali sistemi di database hanno una funzione per la registrazione di query lente.
Se visiti regolarmente il registro delle query lente, scoprirai quali operazioni e impiegherai più tempo, e quindi scoprirai aree piccole ma importanti che necessitano di lavoro. Spesso, un piccolo cambiamento come questo funziona meglio che raddoppiare la capacità hardware.
Non si contano quanti modi un buon sistema di registrazione ti aiuta., Forse l’argomento migliore è che si tratta di un’attività automatizzata che una volta impostata, non ha bisogno di alcun monitoraggio e ti salverà dalla rovina un giorno.
Con quello fuori strada, diamo un’occhiata ad alcuni dei sorprendenti collezionisti di log Open Source (strumenti di registrazione unificati) là fuori. Nel caso ve lo stiate chiedendo, abbiamo coperto strumenti di registrazione commerciali basati su cloud in un post precedente.
Graylog
Graylog è uno dei nomi leader nel settore quando si tratta di funzionalità di registrazione e visualizzazione di livello industriale., È anche unico in quanto esegue la scansione dei log raccolti per i segni di vulnerabilità di sicurezza e ti avvisa istantaneamente.
Mentre Graylog è un sistema di registrazione centralizzato, ha la flessibilità necessaria, che consente di personalizzare gli avvisi, cruscotti, e altro ancora.
Greylog è open-source, ma c’è un piano aziendale se le tue esigenze sono complesse.
Con clienti come SAP, Cisco e LinkedIn nel suo roster, Graylog è uno strumento di cui ti puoi fidare ad occhi chiusi.,
Logstash
Se sei un fan o un utente dello stack elastico, Logstash vale la pena di verificare (lo stack ELK è già una cosa, nel caso in cui non lo sapessi). Come altri strumenti di registrazione in questo elenco, Logstash se completamente open-source, che consente la libertà di distribuire e utilizzare come si desidera.
Ma non lasciarti ingannare: Logstash è una nave madre con capacità che superano di gran lunga qualsiasi umile strumento di registrazione. È in grado di raccogliere grandi quantità di dati da più piattaforme, consente di definire ed eseguire le proprie pipeline di dati, dare un senso ai dump di log non strutturati e altro ancora.,
Naturalmente, l’unica limitazione è che funziona solo con la suite di prodotti Elastic, ma se stai iniziando e stai cercando di scalare presto, Logstash è la strada da percorrere!
Fluentd
Tra gli strumenti di registrazione centralizzati che funzionano come livello intermedio per l’ingestione dei dati, Flutend è un primo tra gli uguali. Con un’eccellente libreria di plug-in, Fluentd è in grado di acquisire dati praticamente da qualsiasi sistema di produzione, impastarli nella struttura desiderata, creare una pipeline personalizzata e inviarli alla tua piattaforma di analisi preferita, sia essa MongoDB o Elasticsearch.,
Fluentd è costruito su Ruby, è interamente open source ed è ampiamente popolare per la sua flessibilità e modularità.
Con grandi aziende come Microsoft, Atlassian e Twilio che utilizzano la piattaforma, Fluentd non ha nulla da dimostrare. Fl
Flume
Se i set di dati davvero grandi sono la tua sfida e alla fine vuoi alimentare tutto in qualcosa come Hadoop, Flume è una delle migliori scelte in circolazione. È un progetto open source “puro”, nel senso che è mantenuto dalla nostra amata Apache Foundation, il che significa che non esiste un piano aziendale.,
Questo può o non può essere quello che stai esattamente cercando. 🙂
Scritto in Java (che continua a stupirmi quando si tratta di tecnologia innovativa), il codice sorgente di Flume è completamente aperto. Flume è meglio per voi se siete alla ricerca di una piattaforma di ingestione di dati distribuita, fault-tolerant per roba pesante.,
Octopussy
Gli do zero su dieci per la denominazione del prodotto, ma Octopussy può essere una buona scelta se le tue esigenze sono semplici e ti stai chiedendo quale sia tutto il trambusto relativo a pipeline, ingestione, aggregazione, ecc., è tutto su.
A mio parere, Octopussy copre le esigenze della maggior parte dei prodotti là fuori (le statistiche stimate sono inutili, ma se dovessi indovinare, direi che si occupa dell ‘ 80% dei casi d’uso nel mondo reale).
Octopussy non ha una grande interfaccia utente (vedi qui), ma lo compensa per quanto riguarda la velocità e la mancanza di gonfiore., La fonte è disponibile su GitHub, come previsto, e penso che valga la pena dare un’occhiata seria.
Rsyslog
Rsyslog sta per un sistema rocket-fast per l’elaborazione dei log.
Si tratta di un programma di utilità per i sistemi operativi Unix-like. In termini tecnici, è un router di messaggi con ingressi e uscite caricabili dinamicamente ed è altamente configurabile.
Può prendere input da più origini dati, trasformarlo e inviare l’output a diverse destinazioni. Con Rsyslog, è possibile consegnare 1 milione di messaggi al secondo su destinazioni locali.,
Rsyslog fornisce anche un agente di Windows che funziona a stretto contatto con l’agente Rsyslog Linux. Viene utilizzato per l’integrazione tra i due ambienti. Questo agente di Windows viene utilizzato per inoltrare i registri eventi di Windows e il servizio di monitoraggio file di installazione.
Di seguito sono riportate altre funzionalità offerte da Rsyslog:
- Configurazioni flessibili
- Fornisce funzionalità multi-threading
- Protezione dalla manipolazione dei file di registro utilizzando firme di registro e crittografia.,
- Supporta piattaforme Big Data
- Fornisce funzionalità di filtraggio basate sui contenuti
LOGalyze
LOGalyze era un prodotto commerciale che è stato recentemente reso open source. Anche se non ho potuto il progetto su GitHub, fanno un programma di installazione di Windows e tutto il codice sorgente scaricabile.
Se siete intenti in una comunità, potete trovare i dettagli di una mailing list qui.
LOGalyze è un’offerta relativamente flessibile e potente che funzionerà bene per le distribuzioni a sistema singolo che cercano di combinare la registrazione da fonti note come Postfix, Apache, ecc.,, e produca l’uscita in CSV, PDF, HTML o simili formati. Sì, non fa tutto, ma dal momento che era un prodotto commerciale in una sola volta, lo fa piuttosto bene.
LogPacker
Quando si tratta di scegliere uno strumento per il lavoro, ho due criteri: deve essere focalizzato e deve essere supportato da un modello di business attivo. Il problema con il software open-source, in generale, è che a pochi mesi / anni lungo la strada, le probabilità di stagnazione o morte sono alte. Non c’è alcun conteggio di quanti strumenti di registrazione sono stati lanciati con gusto, solo per essere trovati ora nel cimitero di GitHub.,
Misurato da questo metro, LogPacker è uno dei preferiti per me.
Come si può dire dallo screenshot, LogPacker è tutto di log, e nient’altro. La loro spinta è sicuramente verso le loro offerte cloud, ma sei più che benvenuto a scaricarlo e installarlo sui tuoi server (pagina GitHub qui).
Il clustering e l’aggregazione sono disponibili per coloro che desiderano utilizzarlo su scala non banale e sono disponibili piani aziendali che desiderano lavorare con l’API o necessitano di distribuzioni più grandi., Un rinfrescante minimalista (focalizzato, anche se non povero di funzionalità) assumere la gestione della registrazione, a mio parere!
Logwatch
Sono sicuro che ci sono quelli tra noi che non vogliono tutta la cerimonia associata a un sistema di registrazione “unificato”, “centralizzato”. La loro attività proviene da singoli server e sono alla ricerca di qualcosa di rapido ed efficiente per guardare i loro file di registro. Beh, saluta Logwatch.
Una volta installato, LogWatch può eseguire la scansione dei log di sistema e creare un report del tipo desiderato., È un software un po ‘ datato (leggi “affidabile”), però, ed è stato scritto in Perl. Quindi, avrai bisogno di Perl 5.6+ sul tuo server per eseguirlo. Non ho screenshot da condividere in quanto è un processo puramente da riga di comando, demonizzato.
Se sei un drogato di CLI e hai un amore per il modo vecchio di fare le cose, amerai Logwatch!
Syslog-ng
Lo strumento Syslog-ng è stato sviluppato come un modo per elaborare i file di dati Syslog (un protocollo client-server stabilito per la registrazione del sistema) in tempo reale., Nel corso del tempo, però, è venuto a supportare altri formati di dati: non strutturati, SQL e NoSQL. Come funziona il protocollo Syslog sono praticamente riassunti ordinatamente nella seguente illustrazione.
syslog-ng è uno strumento di raccolta e classificazione dei log affidabile di livello produttivo che è stato scritto in C ed è stato un nome consolidato nel settore per lungo tempo. La parte migliore è la sua estensibilità, che consente di scrivere plugin in C, Python, Java, Lua o Perl.
lnav
Abbreviazione di (Log Navigator), lnav è uno strumento puro terminale che funziona su una singola macchina, singola directory., È per coloro che hanno la loro registrazione unificata in una singola directory o vogliono filtrare e visualizzare i registri in tempo reale da un’unica fonte.
Se pensassi che lnav non fosse altro che glorificatotailf |
grep
ti sbaglieresti. Ci sono diverse caratteristiche che vi farà innamorare con esso: time-series view, pretty-printing (per JSON e altri formati), sorgenti di log con codice colore, filtri potenti, capacità di comprendere diversi protocolli di registrazione, e altro ancora.,
È solo che a volte vuoi un livello di registrazione zero-hassle, zero setup, forse temporaneo, e lnav si adatta perfettamente al conto!
Conclusione
E il gioco è fatto!
Era una lista difficile da compilare, per essere sinceri, poiché la registrazione non è così popolare come, ad esempio, la gestione dei contenuti, e tutto mindshare sembra essere stato afferrato da tre o quattro strumenti. Tuttavia, le esigenze di tutti sono diverse e ho cercato di coprirle ampiamente.
Da stupidi strumenti da riga di comando, no-setup a juggernauts dati in piena regola, è tutto qui! Mi sono perso qualcosa? Certo che l’ho fatto!
Lascia un commento