Qual è il miglior componenti dello stack per la costruzione distribuita aggregatore di registro (come Splunk)?
Domanda
Sto cercando di trovare i migliori componenti che potrei utilizzare per costruire qualcosa di simile a Splunk per i log aggregati da un gran numero di server nel grid computing. Inoltre dovrebbe essere distribuito perché ho giga di log di tutti i giorni e nessuna singola macchina sarà in grado di memorizzare i registri.
Sono particolarmente interessato a qualcosa che funziona con Ruby e lavorerà su Windows e Solaris più recente (sì, ho ottenuto uno zoo).
vedo l'architettura come:
- Log crawler (Rubino script).
- di archiviazione di registro distribuita.
- motore di ricerca distribuita.
- avantreno leggero.
Log crawler e motore di ricerca distribuito sono fuori di domande - i registri saranno analizzati da Ruby sceneggiatura e elasticsearch saranno utilizzati per i messaggi di registro indice. Front end è anche molto facile scegliere -. Sinatra
archiviazione di registroIl mio problema principale è distribuito. Ho guardato MongoDB, CouchDB, HDFS, Cassandra e HBase.
- MongoDB è stato rifiutato perché non funziona su Solaris.
- CouchDB non supporta sharding (SmartProxy è necessario per farlo funzionare, ma questo è qualcosa che non voglio provare ancora).
- Cassandra grandi opere, ma è solo un maiale spazio su disco e che richiede l'esecuzione di tutti i giorni di auto-equilibratura per distribuire il carico tra i nodi Cassandra.
- HDFS sembrava promettente, ma FileSystem API è solo Java e JRuby è stato un dolore.
- HBase sembrava una soluzione migliore in giro, ma la distribuzione e il monitoraggio è solo un disastro - al fine di avviare HBase ho bisogno per iniziare HDFS prima, verifica che ha iniziato senza problemi, quindi avviare HBase e controllare anche, e quindi avviare servizio REST e anche a controllare.
Così mi sono bloccato. Qualcosa mi dice che HDFS o HBase sono la cosa migliore da usare come deposito di registro, ma HDFS funziona solo senza problemi con Java e HBase è solo una Distribuzione / monitoraggio incubo.
Qualcuno può condividere la propria esperienza di pensieri o la costruzione di sistemi simili che utilizzano componenti che ho descritto sopra o con qualcosa di completamente diverso?
Soluzione
Mi consiglia di utilizzare Flume di aggregare i dati in HBase . Si potrebbe anche utilizzare il elastico Cerca Sink per Flume per mantenere un indice di ricerca fino ad oggi in tempo reale.
Per ulteriori informazioni, consultare la mia risposta a una domanda simile su Quora .
Altri suggerimenti
Per quanto riguarda Java e HDFS - utilizzando uno strumento come BeanShell, è possibile interagire con il negozio HDFS tramite Javascript.