Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Monitoraggio

Una serie di strumenti utili per monitorare l'attività di un database MongoDB: mongotop, mongostat, http interface e diverse soluzioni di terze parti.
Una serie di strumenti utili per monitorare l'attività di un database MongoDB: mongotop, mongostat, http interface e diverse soluzioni di terze parti.
Link copiato negli appunti

Monitorare un database è molto importante per sapere cosa sta succedendo in un dato momento nel sistema, e quindi capire il prima possibile se si verificheranno dei problemi. Può essere utile anche per capire cosa bisogna fare per migliorare le performance. Nella prossima lezione ci occuperemo proprio di quest'ultimo aspetto, mentre in questa lezione introdurremo alcuni strumenti che permettono di monitorare un database o un cluster MongoDB.

MongoDB HTTP interface

Il primo strumento che vediamo in azione viene fornito con MongoDB e anzi ne è parte integrante. Si tratta di un insieme di semplici pagine HTML che generate da un web server incorporato nel servizio mongod. Per avviarlo è necessario utilizzare la riga di comando seguente:

mongod --dbpath mongodata --httpinterface

Una volta avviato il server viene stampato un messaggio simile al seguente:

[websvr] admin web console waiting for connections on port 28017

Adesso possiamo richiedere via browser l'IP locale sulla porta sopra indicata (si tratta in genere della porta del server, di default 27017 più 1000). Quindi andiamo su http://localhost:28017/, e visualizzeremo una pagina web simile alla seguente:

Figura 1. Interfaccia HTTP (click per ingrandire)

Interfaccia HTTP

Questa pagina ci offre una serie di informazioni utili. Alcune riguardano la configurazione del server: la versione di MongoDB, il sistema operativo, l’architettura della macchina, da quanto tempo MongoDB è acceso, se è attivo un Replica Set (sezione overview

Segue quindi un elenco molto interessante (sezione client client Query Locking Waiting lock write lock read lock read lock

Bloccare un’operazione

Una volta individuato un client, se ne può bloccare l’operazione utilizzando il comando db.killOp e passando come parametro l’id dell’operazione (colonna OpId):

> db.killOp(1328)

Bisogna fare molta attenzione con questo comando, perché per errore (utilizzando degli OpId errati) potrebbero essere erroneamente bloccate alcune operazioni di sistema.

La sezione dbtop mostra le statistiche sull’uso degli indici dei database. Per ogni tipo di operazione (lettura, scrittura, ...) vengono mostrati i numeri assoluti e percentuali.

Mongostat e mongotop

Per monitorare il sistema in tempo reale si possono utilizzare due applicazioni di console fornite con l’installazione di MongoDB: mongostat e mongotop. Entrambe restituiscono i dati in forma tabellare a intervalli di tempo regolari. La prima fornisce le informazioni sull’uso dei database e permette di capire quanto un database è usato rispetto agli altri, quindi ci fornisce indicazioni utili per capire se è necessario passare in sharding, se è meglio aggiungere altre repliche, etc... La seconda utility, mongotop, ci fornisce informazioni sul tempo impiegato da MongoDB in lettura e scrittura.

Lo strumento mongostat fornisce molte informazioni: oltre all’uso per ogni operazione (lettura, scrittura, inserimenti, avanzamenti dei cursori, etc...), consente di ottenere anche il numero di client che sono in coda e attendono a causa di un lock. Con mongotop, invece, vediamo fondamentalmente l’impatto delle operazioni sul disco fisso, tramite cui possiamo sapere se dobbiamo intervenire sull’organizzazione dei file oppure se è opportuno aggiungere uno shard per ridurre il carico delle scritture sul singolo nodo.

Figura 2. mongotop

mongotop

Comandi

MongoDB fornisce una serie di comandi che possono essere lanciati direttamente dalla console mongo per monitorare il sistema.

Il comando più semplice per sapere quali operazioni sono in corso è db.currentOp. In figura 3 vediamo due esempi di output:

Figura 3. Due esempi di output di currentOp

Due esempi di output di currentOp: con e senza operazioni

Nel primo caso vediamo un’operazione in esecuzione di inserimento sul database test killOp

Altri comandi utili sono:

Strumenti di terze parti

Esistono diversi strumenti e servizi di terze parti, gratuiti e a pagamento, che forniscono non tanto informazioni più dettagliate, ma un output più leggibile e di immediata comprensione. Alcuni sono in hosting, altri si possono installare. Ne segnaliamo alcuni:

  • MMS : è un servizio di hosting di database MongoDB che fornisce un supporto avanzato di Monitoring;
  • Scout : è un servizio online di monitoraggio per server, tramite due plugin permette di monitorare anche un database MongoDB. Per ulteriori informazioni rimandiamo a questo post del blog ufficiale del servizio
  • ServerDensity dashboard
  • per restare in ambito open source e gratuito, Nagios è uno strumento web per Apache molto utilizzato in ambito IT per il monitoraggio delle infrastrutture, ed ha un’attiva community che realizza molti plug-in. Uno di questi è nagios-plugin-mongodb

Ti consigliamo anche