Download pdf - Mongodb administración

Transcript
Page 1: Mongodb administración

MongoDBInstalación y administración

Juan Esteban Ladetto

[email protected]

Page 2: Mongodb administración

Instalación en diferentes ambientes

• Cómo todo proyecto Open Source (versiones pares son las estables)• 2.4, 2.6 (2.5 es desarrollo de los features que tendrá la versión 2.6)

• En producción solamente las versiones pares y la última subversión (2.6.7)

• Mongodb se puede descargar tanto binarios como código fuente y compilar

• 32 bits o 64 bits y para cualquier plataforma

Page 3: Mongodb administración

Instalación en windows

• www.mongodb.org/downloads

• Necesario dbpath (default: \data\db)

• Puerto por defecto: 27017

• Instalar como servicio:• "C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install

• Eliminar como servicio• mongod.exe --remove

Page 4: Mongodb administración

Instalación en Linux (ubuntu)

- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

- echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

- sudo apt-get update

- sudo apt-get install -y mongodb-orgmongodb-orgThis package is a metapackage that will automatically install the four component packages listed below.mongodb-org-serverThis package contains the mongod daemon and associated configuration and init scripts.mongodb-org-mongosThis package contains the mongos daemon.mongodb-org-shellThis package contains the mongo shell.mongodb-org-toolsThis package contains the following MongoDB tools: mongoimportbsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop.

Page 5: Mongodb administración

Parámetros de configuración

• http://docs.mongodb.org/manual/reference/configuration-options/

Page 6: Mongodb administración

Comandos básicos del Shell de mongodb

• help Muestra ayuda• db.help() Muestra ayuda para db• db.<collection>.help() muestra ayuda para cualquier colección• show dbs Muetra las dbs• use <db> Cambia la db que se usa• show collections Lista todas las colecciones de una db• show users Muestra los usuarios de una db• show roles Muestra los roles de la db• show profile Muestra los queries que demoraron más de 1 milisegundo• show databases = show dbs

Page 7: Mongodb administración

Comandos básicos del Shell de mongodb

• db.cloneDatabase(<host>) Clona la db actual al host especificado, el host no puede tener seguridad.

• db.copyDatabase(<from>, <to>, <host>) Copia la db <from> desdeel <host a la db que se especifique.

• db.fromColl.renameCollection(<toColl>) Renombra la co.

• db.repairDatabase() Repara y compacta la db. Es lento y bloquea la db

• db.createUser( <user>, <pwd> ) Agrega un usuario a la db actual

• db.getCollectionNames() Lista las colecciones de la db actual.

• db.dropDatabase() borra la db actual.

Page 8: Mongodb administración

Creación y administración de usuarios

• Por defecto no autorización ni autenticación

• 2 formas de habilitarlo• Antes de iniciar servicio con auth

• Iniciar servicio con auth y aprovechar el localhost exception (no recomendado para armar replicasets/sharing)

Page 9: Mongodb administración

Authorization

• Si el servicio corre standalone habilitando el flag auth

• Si el servicio corre como parte de un replication set o un shard es necesario un keyfile (compartido) como mínimo• MongoDB soporta 2 mecanismos en su versión no paga: password base

(keyfile) y certificados x.509

openssl rand -base64 741 > mongodb-keyfile

chmod 600 mongodb-keyfile

Page 10: Mongodb administración

Authentication

• Un usuario pertenece a una db y sobre estas puede tener todos los roles que quiera

• Existen 2 bases de datos especiales en mongodb (admin y local) y los usuarios de esas bases de datos pueden realizar operaciones en otrasbases de datos siempre y cuando se les den acceso

use admindb.createUser(

{user: “root",pwd: "password",roles: [ { role: "userAdminAnyDatabase", db:

"admin" } ]}

)

use admindb.createUser(

{user: “god",pwd: "password",roles: [ “root”]

})db.runCommand({rolesInfo: “god", showPrivileges: true});db.runCommand({rolesInfo: { role: "dbAdmin", db: "blog" } , showPrivileges: true});

Page 11: Mongodb administración

Roles

• A nivel de datos de bases de datos:• read• readWrite

• A nivel de administración de bases de datos:• dbAdmin• dbOwner• userAdmin

• Lista completa de roles predefinidos:http://docs.mongodb.org/manual/reference/built-in-roles/#built-in-roles

• Lista completa de las funciones que se pueden hacer con roles:http://docs.mongodb.org/manual/reference/command/#role-management-commands

db.createUser({

user: "accountUser",pwd: "password",roles: [ "readWrite", "dbAdmin" ]

})db.runCommand({connectionStatus:1});db.updateUser(“usuario”, doc)

Page 12: Mongodb administración

Comandos útiles para creación y manipulación de usuariosdb.createUser({

user: "siteUserAdmin",

pwd: "password",

roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })

db.createUser({

user: "superuser",

pwd: "12345678",

roles: [ "root" ]})

db.updateUser("user123",{

pwd: "KNlZmiaNUp0B",

customData: { title: "Senior Manager" }})

db.changeUserPassword("reporting", "SOh3TbYhxuLiW8ypJPxmt1oOfL")

db.getUser(“”)

db.getRole( "readWrite", { showPrivileges: true } )

db.grantRolesToUser(

"reportsUser",

[{ role: "readWrite", db: "products" } ,

{ role: "readAnyDatabase", db:"admin" }])

db.revokeRolesFromUser(

"reportsUser",

[{ role: "readWrite", db: "accounts" }]

)

db.createRole({

role: "manageOpRole",

privileges: [{ resource: { cluster: true }, actions: [ "killop", "inprog" ] },

{ resource: { db: "", collection: "" }, actions: [ "killCursors" ] }],

roles: []})

Page 13: Mongodb administración

Conceptos a conocer de mongodbMemory Mapped Files• Todos los archivos de datos son memory mapped a la memoria virtual

del OS

• MongoDB lee y escribe en RAM y el filesystem hace el resto

• Virtual Process size: suma de los tamaños de los arhivos + overhead (heap, conexiones)

• Si el journal está activo el tamaño de la memoria virtual será casi el doble

Page 14: Mongodb administración

Conceptos a conocer de mongodbJournal• Los cambios en los archivos mapeados en memoria no se aplican en

orden y diferentes partes de un archivo pueden ser de diferentesmomentos

• Si algo sucedió y mongodb se cierra inesperadamente queremos volver a tener un estado consistente.

Page 15: Mongodb administración

Conceptos a conocer de mongodbArchivos

drwxr-xr-x 136 Nov 19 10:12 journal

-rw------- 16777216 Oct 25 14:58 test.0

-rw------- 134217728 Oct 25 14:58 test.1

-rw------- 268435456 Oct 25 14:58 test.2

-rw------- 536870912 Oct 25 14:58 test.3

-rw------- 1073741824 Oct 25 14:58 test.4

-rw------- 2146435072 Oct 25 14:58 test.5

-rw------- 16777216 Oct 25 14:58 test.ns

Page 16: Mongodb administración

Conceptos a conocer de mongodbArchivosdrwxr-xr-x 136 Nov 19 10:12 journal

-rw------- 16777216 Oct 25 14:58 test.0

-rw------- 134217728 Oct 25 14:58 test.1

-rw------- 268435456 Oct 25 14:58 test.2

-rw------- 536870912 Oct 25 14:58 test.3

-rw------- 1073741824 Oct 25 14:58 test.4

-rw------- 2146435072 Oct 25 14:58 test.5

-rw------- 16777216 Oct 25 14:58 test.ns

--directoryperdb--smallfiles–nopreallocate para muchas base de datos

Page 17: Mongodb administración

Conceptos a conocer de mongodbIndices

Page 18: Mongodb administración

Conceptos a conocer de mongodbStats > db.Sessions.stats(){

"ns" : "SessionState.Sessions",

"count" : 2720,

"size" : 16509440,

"avgObjSize" : 6069,

"storageSize" : 58408960,

"numExtents" : 8,

"nindexes" : 2,

"lastExtentSize" : 20643840,

"paddingFactor" : 1,

"systemFlags" : 1,

"userFlags" : 1,

"totalIndexSize" : 351568,

"indexSizes" : {"_id_" : 212576,"Expires_1" : 138992},

"ok" : 1}

> db.stats(){"db" : "SessionState","collections" : 4,"objects" : 3504,"avgObjSize" : 4996.649543378995,"dataSize" : 17508260,"storageSize" : 59473920,"numExtents" : 11,"indexes" : 2,"indexSize" : 351568,"fileSize" : 67108864,"nsSizeMB" : 16,"dataFileVersion" : {"major" : 4, "minor" : 5},"extentFreeList" : {"num" : 0,"totalSize" : 0},"ok" : 1}

Page 19: Mongodb administración

Replica Sets

Page 20: Mongodb administración

Replica Set – Initialize

Page 21: Mongodb administración

Replica Set – Failure

Page 22: Mongodb administración

Replica Set – Failover

Page 23: Mongodb administración

Replica Set – Recovery

Page 24: Mongodb administración

Replica Set – Recovered

Page 25: Mongodb administración

> conf = {

_id : "mySet",

members : [

{_id : 0, host : “host:20717”, priority : 3},

{_id : 1, host : “host:27018", priority : 2},

{_id : 2, host : “host:27019”},

{_id : 4, host : "E", hidden : true, slaveDelay : 3600}

]

}

> rs.initiate(conf)

Configuration Options

> conf = {

_id : "mySet",

members : [“host:20717”,

“host:27018", “host:27019”],

{_id : 4, host : "E", hidden : true, slaveDelay : 3600}

}

> rs.initiate(conf)

Page 26: Mongodb administración

Desarrollando con replica setsAlta consistencia de datos

Page 27: Mongodb administración

Desarrollando con replica setsBaja consistencia de datos

Page 28: Mongodb administración

Write Concern

• Network acknowledgement

• Wait for error

• Wait for journal sync

• Wait for replication

Page 29: Mongodb administración

Unacknowledged

Page 30: Mongodb administración

MongoDB Acknowledged (wait for error)

Page 31: Mongodb administración

Wait for Journal Sync

Page 32: Mongodb administración

Wait for Replication

Page 33: Mongodb administración

Tagging• Controla desde donde y hacia donde leer y escribir

• Cada miembro puede tener uno o más tags• tags: {dc: "ny"}

• tags: {dc: "ny", subnet: "192.168", rack: "row3rk7"}

• Replica Sets definen las reglas de write concern

• Las reglas pueden cambiar sin afectar el desarrollo ya realizado

Page 34: Mongodb administración

Un ejemplo

• {

• _id : "mySet",

• members : [

• {_id : 0, host : "A", tags : {"dc": "ny"}},

• {_id : 1, host : "B", tags : {"dc": "ny"}},

• {_id : 2, host : "C", tags : {"dc": "sf"}},

• {_id : 3, host : "D", tags : {"dc": "sf"}},

• {_id : 4, host : "E", tags : {"dc": "cloud"}}],

• settings : {

• getLastErrorModes : {

• allDCs : {"dc" : 3},

• someDCs : {"dc" : 2}} }

• }

• > db.blogs.insert({...})

• > db.runCommand({getLastError : 1, w : "someDCs"})

Page 35: Mongodb administración

Wait for Replication (Tagging)

Page 36: Mongodb administración

Modos de lectura• 5 modes

• primary (only) - Default

• primaryPreferred

• secondary

• secondaryPreferred

• Nearest

Cuando más de un nodo es posible de elegir el más cercano es el usado

Page 37: Mongodb administración

Mantenimiento y upgrade• No downtime

• Hacer mantenimiento/upgrade– Empezar con los nodos secundarios

– Dejar para el final de primario

Page 38: Mongodb administración

Replica Set – 1 Data CenterSingle datacenter

Puntos de falla:– Power

– Network

– Data center

– Que fallen 2 nodos

Page 39: Mongodb administración

Replica Set – 2 Data CentersMulti data center

Un nodo en otro DC

No es posible durabilidadya que si se cae el DC1 no podrá hacerse comoprimary (falta al menos 1 member más)

Page 40: Mongodb administración

Replica Set – 3 Data Centers3 data centers

Page 41: Mongodb administración

Cómo funciona internamente

• Heartbeat cada 2 segundos• Times-out en 10 segundos

• Local DB (not replicated)– system.replset

– oplog.rs

• Capped collection donde se almacenan lasoperaciones realizadas en el nodo

Page 42: Mongodb administración

Replica Set commands

• rs.initiate(config) -> inicializa la replicaset• Config=> doc con members

• rs.status() -> status

• rs.isMaster() -> devuelve info de quien es master

• rs.config()

• rs.reconfig(config)

• rs.add( { "_id": 3, "host": "mongodbd3.example.net:27017", "priority": 0 } )

• rs.stepDown()

• rs.freeze() -> no elegirme como primario por x n segundos

• rs.remove()

• rs.slaveOk()

• db.isMaster()

• rs.syncFrom()

Page 43: Mongodb administración

Sharding

Page 44: Mongodb administración

Vertical Scalability (Scale Up)

Page 45: Mongodb administración

Horizontal Scalability (Scale Out)

Page 46: Mongodb administración

Particionado

• Los usuarios definen el shard key

• Los shard keys definen un rango de datos

• Los keys son como puntos en una línea

• El rango es un segment de esa línea

Page 47: Mongodb administración

Distribución de la información

• Inicialmente 1 chunk (64mb)

• MongoDB automáticamente divide y migra los chunks when el máximo es alcanzado

Page 48: Mongodb administración

Balanceo y ruteo

• Las consultas rutean a los shards específicos

• MongoDB balancea el cluster

• MongoDB migra automáticamente a nuevos nodos

Page 49: Mongodb administración

Architecture

• Juguemos con un sharding de pruebamongo –nodbcluster = new ShardingTest({"shards" : 3, "chunksize" : 1})db = (new Mongo("localhost:30999")).getDB("test")for (var i=0; i<100000; i++) {db.users.insert({"username" : "user"+i, "created_at" : new Date()});}db.users.count()sh.status()sh.enableSharding("test")db.users.ensureIndex({"username" : 1})sh.shardCollection("test.users", {"username" : 1})

db.users.find({username: "user12345"}).explain()db.users.find().explain()cluster.stop()

Page 50: Mongodb administración

Qué es un shard?

• Shard es un nodo del cluster

• Un shard puede ser un simple mongod o una replica set

Page 51: Mongodb administración

Meta Data Storage

• Config servers• Almacena cluster chunk ranges and locations

• O 1 o 3 (en producción tienen que ser 3)

• No son replica sets (almacenan lo mismo por separado)

Page 52: Mongodb administración

Routing y balanceo

• Mongos• Actúan como routers/balanceadores

• No tienen información local (persiste la info en los config servers)

• Puede ser como mínimo uno o más (pueden correr en los mismos server que los config servers)

Page 53: Mongodb administración

infrastructura Sharding

Page 54: Mongodb administración

Iniciar un servidor de configuración

• mongod –configsvr default port (27019)

Page 55: Mongodb administración

mongos Router

• mongos --configdb <hostname>:27019

• Para 3 servidores de configuración

mongos --configdb <host1>:<port1>,<host2>:<port2>,<host3>:<port3>

• Siempre se puede agregar un nuevo mongos por más que el cluster esté andando

Page 56: Mongodb administración

Arrancar un shard

• mongod --shardsvr

• Arranca un mongod con el

Puerto por defecto (27018)

• Shard no es parte del

cluster

• Shard puede haber corrido

en producción

Page 57: Mongodb administración

Agregar el Shard

• On mongos: • sh.addShard(‘<host>:27018’)

• Adding a replica set: • sh.addShard(‘<host>:<port>’) de un nodo del replica set

Page 58: Mongodb administración

Verificar que un shard se haya agregado

db.runCommand({ listshards:1 })

Page 59: Mongodb administración

Habilitar Sharding

sh.enableSharding(“<dbname>”)

sh.shardCollection(“<dbname>.people”,{“country”:1})

sh.shardCollection(“<dbname>.cars”,{“year”:1, ”uniqueid”:1}) -> key

compuesto para evitar duplicados

Page 60: Mongodb administración

Chunk es una sección de un rango másgrande

Page 61: Mongodb administración

Separando Chunks

• Un chunk es dividido solamente cuando exceed su máximo tamaño

• Si los shard key tienen el mismo valor no se pueden dividir

• La division de un Chunk es una operación lógica (no hay movimientode información)

Page 62: Mongodb administración

Balanceo• Mongos corren los balanceos

• Cuando la diferencias de chunks entre los shards más densos y los menos densos llega al punto máximo comienza la migración

Page 63: Mongodb administración

Ronda de balanceo

• Un mongos toma el Balancer lock

• Statususe config

db.locks.find(

{ _id: “balancer” })

Page 64: Mongodb administración

Mover chunks

• Mongos envía un moveChunk al shard de origen

• El shard de origen notifica al shard de destino

• El shard de destino toma el documento desde el origen

Page 65: Mongodb administración

Listo, documento en Nuevo shard

• El shard de destino actualiza el servidor de configuración

Page 66: Mongodb administración

Ruteo de consultas: Consultas puntuales

Page 67: Mongodb administración

Ruteo de consultas: Consultas puntualesrecibimos pedido

Page 68: Mongodb administración

Ruteo de consultas: Consultas puntualesSabemos donde está la info

Page 69: Mongodb administración

Ruteo de consultas: Consultas puntualesel shard devuelve lo solicitado

Page 70: Mongodb administración

Mongos devuelve la info al cliente

Page 71: Mongodb administración

Ruteo de queries más complejas (mapping)

Page 72: Mongodb administración

Consulta compleja recibida

Page 73: Mongodb administración

Enviamos el pedido a todos los shards

Page 74: Mongodb administración

Devuelven la info que solicitamos

Page 75: Mongodb administración

Mongos devuelve al cliente

Page 76: Mongodb administración

Mismo caso con sort

Page 77: Mongodb administración

Shard Key

• Shard key es immutable

• Los valores de los Shard key son immutables

• Tienen que estar indexados

• Shard key limitado a 512 bytes

• Shard key usado como route query• Elegir un campo comunmente usado en consultas

Page 78: Mongodb administración

Consideraciones

• Cardinalidad

• Distribución de escritura

• Query Isolation

• Disponibilidad

• Localidad de los índices

Optimizar el ruteoMinimizar tráfico innecesarioPermitir el mejor escalamiento

Page 79: Mongodb administración

Métodos de Backup

• 3 posibilidades:• LVM snapshots

• mongodump -> mongorestore

• MMS backup service

Page 80: Mongodb administración

Métodos de BackupLVM snapshots• Consiste en hacer un snapshot de todo el volumen donde está

montada la db• La base de datos debe estar en un estado válido al momento del snapshot

• Si hay documentos que se están escribiendo puede quedar en un estado inconsistente

• Si se usa journaling el journal tiene que residir en el mismo volumen

• No se puede capturar el backup incremental

Page 81: Mongodb administración

Métodos de Backupmongodump-mongorestore• Para poder hacer un dump el usuario como mínimo rol de backup o

dbAdmin• Algunos parámetros necesarios

• mongodump –u <usuario> -p <pwd> --authenticationDatabase <db> --host <host><:port> -d <database> -c <collection> -o <path> --oplog --journal

• Para hacer restore el procedimiento es similar• mongorestore –u <usuario> -p <pwd> --authenticationDatabase <db> --host

<host><:port> -d <database> -c <collection> -o <path> --oplogReplay –oplogLimit<timestamp>

Page 82: Mongodb administración

mongodump

• options:

• --help produce help message

• -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv)

• -h [ --host ] arg mongo host to connect to ( <set name>/s1,s2 for sets)

• --port arg server port. Can also use --host hostname:port

• --ipv6 enable IPv6 support (disabled by default)

• -u [ --username ] arg username

• -p [ --password ] arg password

• --dbpath arg directly access mongod database files in the given path, instead of connecting to a mongod server - needs to lock the data directory, so cannot be used if a mongod is currently accessing the same path

• --directoryperdb if dbpath specified, each db is in a separate directory

• -d [ --db ] arg database to use

• -c [ --collection ] arg collection to use (some commands)

• -o [ --out ] arg (=dump) output directory or "-" for stdout

• -q [ --query ] arg json query

• --oplog Use oplog for point-in-time snapshotting

• --repair try to recover a crashed database

Page 83: Mongodb administración

mongorestore

options:

--help produce help message

-v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv)

-h [ --host ] arg mongo host to connect to ( <set name>/s1,s2 for sets)

--port arg server port. Can also use --host hostname:port

--ipv6 enable IPv6 support (disabled by default)

-u [ --username ] arg username

-p [ --password ] arg password

--dbpath arg directly access mongod database files in the given path, instead of connecting to a mongod server - needs to lock the data directory, so cannot be used if a mongod is currently accessing the same path

--directoryperdb if dbpath specified, each db is in a separate directory

-d [ --db ] arg database to use

-c [ --collection ] arg collection to use (some commands)

--objcheck validate object before inserting

--filter arg filter to apply before inserting

--drop drop each collection before import

--oplogReplay replay oplog for point-in-time restore

Page 84: Mongodb administración

Métodos de BackupMMS backup service• Servicio hosteado por la gente de 10gen (mongodb)

• Incremental backup

Page 85: Mongodb administración

Métodos de BackupIncremental backups• https://github.com/EqualExperts/Tayra/

• https://github.com/reverb/wordnik-oss

• MMS

Page 86: Mongodb administración

Importando y exportando collecciones

mongoimport --host localhost --db myDB --collection myCollection --type csv --file data.csv --headerline –upsert

mongoexport --host localhost --db myDB --collection myCollection --csv –out data.csv

Page 87: Mongodb administración

Algunas otras cosas

• Capped Collections• db.createCollection( "log", { capped: true, size: 100000 , max:1000} )

• db.collection.isCapped()

• db.runCommand({"convertToCapped": "mycoll", size: 100000});

• Ttl collections• db.log_events.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )

Page 88: Mongodb administración

Notas para llegar a producción

• Redes • Connection pooling

• db.runCommand({ connPoolStats: 1 } )

• Hardware• SSD cuando sea posible• CPU y suficiente RAM para manejar el volumen o carga• Disco

• Obviar NFS cuando sea posible• Separar journals/databases en diferentes volúmenes

• ReplicaSet o Sharding

• Definir el nivel de Write concern que se requiera

Page 89: Mongodb administración

SeguridadExposición en redes y seguridad

- wire protocol

- bind_ip: intentar que la exposición sea únicamente hacia adentro

- port: si bien el 27017 es el default de mongo no viene mal cambiarlo

- desde que redes pueden llegar? Filtremos lo más posible

Page 90: Mongodb administración

SeguridadChecklist de seguridad

• Siempre con authorization y authentication

• Collection-level Access control• db.createRole( {

role: "collectionInventario",

privileges: [ { resource: { db: "products", collection: "inventory" },

actions: [ "find", "update", "insert" ] },

{ resource: { db: "products", collection: "orders" },

actions: [ "find" ] } ] , roles: [] })

db.grantRolesToUser( "usuario", [ "collectionInventario" ] )

db.getUser(“usuario”)

• http://docs.mongodb.org/v2.6/MongoDB-security-guide.pdf

Page 91: Mongodb administración

MonitoreoQué y con qué?

• Working sets• db.stats()• db.runCommand( { serverStatus: 1, workingSet: 1 } )

• Oplog replication lag• rs.printSlaveReplicationInfo()

• IOPS• Cantidad de conexiones

• db.runCommand ({connPoolStats: 1})

• Disponibilidad en el storage• Memoria• Uso de CPU (+70% empezamos a complicarnos, queries no optimizadas, etc)• Capacidad de redes/Traffic IN/OUT• Pages faults

• db.adminCommand({"serverStatus" : 1}).recordStats -> cantidad de veces que tuvimos que haceswap de páginas

Page 92: Mongodb administración

MonitoreoQué y con qué?

• iostat

• vmstat

• mongotop

• mongostat

• mongoperf echo “{nTheards:12, fileSizeMB:1024, r:true}” | mongoperf

• Mirar las slow queries (

• db.setProfilingLevel(1, 100)

• db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty()

• Mucho mejor con - http://mongolab.org/dex/

Page 93: Mongodb administración

MonitoreoHerramientas de monitoreoIntegrando con otras herramientas

Tool Plugin Description

Ganglia mongodb-ganglia

Python script to report operations per second, memory usage, btree statistics, master/slave status and current connections.

Ganglia gmond_python_modulesParses output from the serverStatusand replSetGetStatus commands.

Motop None

Realtime monitoring tool for MongoDB servers. Shows current operations ordered by durations every second.

mtop None A top like tool.

Munin mongo-munin Retrieves server statistics.

Munin mongomonRetrieves collection statistics (sizes, index sizes, and each (configured) collection count for one DB).

Munin munin-plugins Ubuntu PPASome additional munin plugins not in the main distribution.

Nagios nagios-plugin-mongodbA simple Nagios check script, written in Python.

Zabbix mikoomi-mongodbMonitors availability, resource utilization, health, performance and other important metrics.

http://docs.mongodb.org/manual/administration/monitoring/#self-hosted-monitoring-tools

Page 94: Mongodb administración

Operando mongodb

• db.currentOp() – o filtrar por cualquier parte del documento

• db.killOp()

• db.system.profile.find().pretty()

Page 95: Mongodb administración

Complementos

• Herramientas varias para trabajar con mongodb• Rockmongo

• MMS overview

Page 96: Mongodb administración

Disaster recovery

• Procedimientos y prácticas

Page 97: Mongodb administración

Consideraciones finales

• Procedimientos y prácticas

Page 98: Mongodb administración

Preguntas?Gracias

Juan Esteban Ladetto

[email protected]