0
Monitoreo de bases de datos: ¿qué monitorear? ¿usan una herramienta general o alguna herramienta específica?

Solved 6 Respuestas 3 Views
Hola a todos,

¿Cómo hacen el seguimiento del estado y el desempeño de sus dbs en sus deployments?

¿Suelen usar alguna herramienta como Nagios, Zabbix o Cacti? ¿O usan herramientas específicas según el tipo de base de datos (e.g. mytop, mtop, mongotop, redis monitor, ? No me refiero a una base de datos en particular por que la idea sería ver si tiene sentido usar un único software para las diferentes bases de datos que pueden haber, o si hace falta y es útil para los sysadmins contar con herramientas específicas.

De ahí sale otra pregunta... ¿qué datos son más útiles para ustedes?

¡Gracias!

6 Respuestas

1
Mejor respuesta
Para el estado del server podes tener nagios con check_mk que hace todo lo necesario para mysql https://mathias-kettner.de/checkmk_mysql.html ahora si queres algo mas potente como un analisis y auditoria de queries y un detalle mucho mas verboso podes instalarte percona cloud tools o vividcortex

- https://cloud.percona.com/

- https://vividcortex.com/

eso te instala un agent y como que se viola al engine de mysql y le saca todas las stats posibles, y te marca posibles queries lentas, indices faltantes, etc.
respondido por edux (12,130 puntos) Jun 26, 2015
seleccionada por admin Jul 2, 2015
1Comentarios
comentado por santagostinil (730 puntos) Jul 20, 2015
Hago un comentario acá ya que el tema está marcado como solucionado.
Te cuento lo que creo siendo lo mas genérico posible:
1) Tenes que monitorear si tenes i/o wait de disco, por posible problemas de contención de disco.
2) Deberías fijarte como es utilizada la memoria en el equipo y el nivel de utilización de swap.
3) También, que el motor de base de datos, haga utilización de las capacidades de multithreading que el procesador te deje hacer. Ojo, esto puede llegar a ser contraproducente en lo que respecta a contencion de disco. (generalmente yo me armo un script que lea y escriba simultaneamente aumentando de a un thread y evaluando los tiempos de acceso a disco para darme cuenta cuando tengo contencion).

Por último, hay estudios excelentes en todos lados, donde te puedo asegurar que el 90% de problemas de rendimiento en los motores de base de datos, son causados por la mala calidad de las consultas, acompañado por un mal modelo de entidad de relaciones.

Saludos!
1
Hola,

 al momento de "monitoreo" creo que hay que dividir si queres ver alarmas o rendimiento a través del tiempo. Osea, si queres que te alerte o ir viendo gráficamente como se comporta.

 Para lo que son alarmas utilizo Nagios. En mi caso particular porque no me gusta tener 1431234 monitores diferentes testeando alarmas

Para ver rendimiento, el cacti me funciona bien. No se si es el mejor... tal vez Munin.

Saludos!!
respondido por ikarudelabasto (3,220 puntos) Jun 26, 2015
1
Las variables mas representativas, son muy dependientes de tu instalacion, de si tu db es read bounded o write bounded, si tenes slaves, si tenes todo en innodb, etc. Para mi tenes que empezar a monitorear y cuando detectas que una metrica tiene un spike o algo raro, investigar de que se trata, eso puede derivar en un ajuste de configuracion. Por ejemplo, yo tenia un uso muy choto de la query cache, consulte con uno que sabe y me dijo que directamente la desactive. podes preguntar en el canal #mysql de freenode.
respondido por edux (12,130 puntos) Jun 26, 2015
1
Acá utilizo Zabbix. Monitoreo entre todas las cosas el MsSql. Tanto como para controlar que el servicio este corriendo, como hacer consultas y crear alertas según el resultado o simplemente para una gráfica para ver, por ejemplo, las inserciones que tuve en los últimos 5 minutos.
respondido por zingaya (3,410 puntos) Jun 26, 2015
1
Yo uso principalmente zabbix, en el caso de mysql podes leer la variable que quieras y alertar o armar grafico, por ejemplo tengo grafico de slow queries que combinado con el slow query log te permite mas o menos ver que queries generan mayor carga, tambien tengo por ejemplo monitoreado el buffer pool de innodb con pages usadas, libres, misc y dirty, tambien queries per second, etc...

Redis se puede monitorear muy bien con zabbix haciendo un user param con "redis-cli -h x.x.x.x info | grep algo" o algo parecido.

Tambien hace un tiempo tuve que hacer unos benchmarks de XtraDB y Redis, para los dos la mejor solucion fue armarme un programita en python que hacia las queries que me interesaban y media los parametros que yo queria.
respondido por luigibalzani (9,870 puntos) Jun 26, 2015
1

Mas alla de las buenas respuestas anteriores, una de las cosas que agrego normalmente a los monitoreos de bases de datos es:

  1. Armar un pequeño disco ram de 16/32/64Mb
  2. Activar el dump de la base de datos de las slow queries (depende de tu app el limite, yo usaba entre 1 y 3 segundos de limite)  en ese disco ram
  3. Monitorear el disco ram para ver si crece la ocupacion, o si te permite el sistema, monitorear el size del archivo, eso dependeia del sistema de monitoreo, incluso podes hacer que envie en la alerta las nuevas lineas agregadas para saber la consulta lenta al momento de la alerta.

Con eso mantenia una idea de momentos en los que las Consultas empezaba a funcionar mas lento, sea por crecimiento de volumen de datos, o por nuevas funciones agregadas con consultas no optimizadas o que les faltaba el indices.

Fuera de eso, una vez detectado algun problema, iba directo a usar alguna tool de *top y traacing de la DB para analizar mas en profundidad el tema.

respondido por anónimo Jun 26, 2015
...