Monitoraggio delle condotte di dati su larga scala
ShareThis sta crescendo rapidamente! Negli ultimi 4 anni in cui ho lavorato qui, siamo passati da un'azienda con una sola stanza ad un'azienda con molte stanze. Abbiamo anche iniziato ad ottenere tutti i tipici vantaggi di una start-up di lusso: cibo gratis, ufficio di lusso, gite aziendali, ecc.
Le cose divertenti accadono quando si crea valore, ma c'è un costo per l'ingegneria in termini di complessità. Ora generiamo terabyte di dati al giorno in tempo reale. Speriamo anche di poter ingerire ancora più dati nel prossimo anno o due, raddoppiando o triplicando il nostro flusso di dati. È gratificante quando parlo con i colleghi per dire loro cosa stiamo facendo e loro rispondono con "wow".
Il problema non è l'ingestione, però - strumenti come Kafka, Cassandra, Aerospike, BigQuery, ecc. rendono il ridimensionamento un problema più facile di quanto non fosse 4 anni fa. La difficoltà sorge quando qualcuno chiede "come fai a sapere che i dati contenuti sono corretti?" o "come fai a sapere che tutti i dati sono presenti?
"E' proprio cosi'." - Non è abbastanza.
Per aiutarci a rispondere a domande come questa, abbiamo raddoppiato il numero di controlli gratuiti attraverso tutti i canali di trasmissione dati. Fortunatamente, il nostro codice è costruito su un framework comune in modo che quando aggiungiamo il monitoraggio ad una libreria, esso viene aggiunto dinamicamente a tutte le applicazioni che usano quella libreria. Piuttosto fico.
Forse un piccolo guasto della tecnologia aiuterà coloro che stanno cercando di farlo in futuro:
Grafite: La grafite è "un'applicazione web basata su Django che rende grafici e cruscotti". E' costruito sopra altri due progetti, Carbon e Whisper (entrambi i progetti fanno parte della Grafite). Il carbonio agisce come uno strato di aggregazione e cache che rende l'interfaccia utente reattiva. Whisper è un "database a dimensione fissa, simile nel design e nello scopo a RRD (round-robin-database). Fornisce un'archiviazione veloce e affidabile dei dati numerici nel tempo. Whisper permette una risoluzione più alta (secondi per punto) dei dati recenti per degradare in risoluzioni più basse per la conservazione a lungo termine dei dati storici".
Codahale: La biblioteca di Codahale ha in realtà connettori per una varietà di servizi diversi (come Ganglia). Per i nostri scopi usiamo i connettori Java Graphite e siamo pronti a partire. Gli oggetti metrici possono essere creati dinamicamente e vi permetteranno di registrare statistiche di base, istogrammi e timer. Abbiamo impostato la libreria in modo da loggare per ogni server al minuto, in modo che le chiamate siano raggruppate e il traffico rimanga basso.
Seyren: Utilizziamo una versione modificata di questo progetto docker internamente, con i nostri componenti raggruppati all'interno. Lo puntiamo sulla grafite e sul rilassamento utilizzando le variabili ambientali del sistema. Una volta nell'interfaccia utente, creiamo dei controlli con le metriche della grafite (spesso utilizzando alcune delle funzionalità ben documentate) per avvisare il nostro canale Slack.
Spero che questo aiuti! Buon hacking