Linuxday2013
-
Upload
mariano-fiorentino -
Category
Software
-
view
72 -
download
0
description
Transcript of Linuxday2013
Case Study
MongoDB come collettore dilog
Mariano Fiorentino
● - Co fondatore Php User Group Torino
● Responsabile Tecnico su progetti legati . all'automotive per Eng it
Chi Sono
La velocita' in scrittura su mongodb si presta all'utilizzo in un costesto di questo
:tipo
● non viene eseguito un controllo di consistenza in fase di scrittura
● l'affidabilità dei dati è data dalla rindondanza dei server
MongoDB per collezionare log?
Una delle caratteristiche delle web application moderne e' di produrre un
. grande quantitativo di log :In un lamp stack classico abbiamo
● ( , )Apache error_log access_log● ( )Php php_errors● Le applicazioni
Contesto applicativo
Contesto applicativo
Contesto applicativo
● E' evidente che in un sistema di questo tipo centralizzare le informazioni è la
chiave per avere un accesso rapido ai dati in fase di troubleshotting
● Individuare uno strumento compatibile con gli standard di un LAMP Stack
Fluentd
’ Nell ambito delle soluzioni ri open di log, ( :// . /) collector fluentd http fluentd org è un
componente compatibile con gli standard dei log di apache e php
● Permette di collezionare molteplici , sorgenti verso una o più destinazioni compresi db non relazionali
● E' possibile scrivere plugin personalizzati
Architettura dellasoluzione
Cosa succede suMongoDB?
<source> type tail format apache2 path /var/log/apache2/access_log pos_file /var/log/td-agent/access_log.pos tag mongo.apache.access</source>
Le collezioni su vengono automaticamente in :base alla configurazione
Rendere i datidisponibi l i
● Si e' scelto di separare lo strato di , accessibilita' ai dati su MongoDB resi
, disponibili tramite rest service dalla webapp vera e propria che e' stata sviluppata in solo javascript
● In questo modo i dati eventualmente “ ” possono essere importati da server terzi
.per ulteriori analisi e operazioni
E' un framework event-driven per il motore Javascript V8, su piattaforme UNIX like.
Si tratta quindi di un framework relativo all'utilizzo server-side di Javascript
.Node js
● Driver nativi verso MongoDB● Librerie che facilitano la creazione diservizi
● Open Source● Una REST interface su MongoDB in
alpha● Ci ha permesso di lavorare su uno stack
completamente JavaScript
Un REST Service .con Node js
JavaScript Stack
AMID : - abbiamo forkato mongodb rest per : gestire un numbero maggiore di operazioni
● / / count distinct sort sulle collezioni● / excel csv export● lista delle db collection● -supporto al multi threads● ricerca per data
. Another js Mongo Internet Driver
Ritorna i documenti che soddisfano la condizione “ ” :specificata da query ordinati in modo ascendente
GET / /db collection?={“ ”: }& =[{" ": ," ":" "}]query isDone false sort property null direction ASC
:Lista delle collezioni disponibi l i sul db specificato
GET /db
:Ritorna il documento con id specificato
GET / / /db collection id
. Another js Mongo Internet Driver
:Conta gli elementi
GET / /db collection =% % % % %?query 7B 22isDone 22 3A 20false% & = 7D operation count
: Export in Excel
GET / /db collection?= & =& ={% % :-operation excel query sort 22$natural 22
}& =1 limit 15000
. Another js Mongo Internet Driver
( Inserisce un nuovo documento il JSON è nel POST):Body
POST / /db collection
( ):Aggiorna un documento il JSON è nel POST Body
PUT / / / db collection id
:Cancella un documento dato un id
DELETE / / /db collection id
. Another js Mongo Internet Driver
WebApp in Extjs 4
● Griglia autoconfigurante in base alle chiavi delle collection su MongoDB
● Campi di ricerca in base al tipo dicolonna
– Data– Numero– Stringa
WebApp in Extjs 4
Punti di attenzione
● Corruzione del db su mongo e indici sulle colonne
● .Out of memory Exception su node js● Gestione dei timeout su tutto lo stack
Documentazione
● :// . / -https github com mariano/fiorentino amid
● :// . /http nodejs org● :// . . /http www mongodb org● :// . . /http www sencha com