Translate

jueves, febrero 12, 2015

Monitorizar el espacio de una base de datos MySQL en nagios

Para este check usaremos el check check_mysql_health, ya comentado anteriormente por lo que doy por echo que ya lo tenemos instalo y compilado (por otro lado es parte más fácil ;))
 check_mysql_health es muy manejable, teniendo una gran cantidad de modos predefinidos, incluyendo un modo SQL en el que nos permitirá incluir código SQL., siendo de gran utilidad ya que así sacaremos el espacio total usado por una BB.DD (sumatorio del espacio de todos sus TableSpaces).
Después de mucho buscar y probar, finalmente el código SQL a usar en MySQL necesario a sido el siguiente:

SELECT CONCAT(sum(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024),2))) FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA like 'centreon'

Con este código obtendremos el uso total de la BB.DD de nuestro centreon, imprescindible para vigilar su crecimiento en Nagios.
La forma de usar dicho código con el check en la Shell de Linux es la siguiente:

check_mysql_health --hostname localhost --port 3306  --username root --password XXXX--mode sql --name="SELECT CONCAT(sum(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024),2))) FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA like 'centreon'" --units MB --warning 50 --critical 65

Resultado:

OK - select concat(sum(round(((data_length + index_length - data_free) / 1024 / 1024),2))) from information_schema.tables where table_schema like 'centreon': 7.22MB | 'select concat(sum(round(((data_length + index_length - data_free) / 1024 / 1024),2))) from information_schema.tables where table_schema like 'centreon''=7.22MB;50;65


Ya tenemos un check para ejecutar la monitorización de nuestra BB.DD (en este caso centreon) en nagios. El siguiente paso es el que más tiempo me ha llevado y es la forma de implementar dicho check en centreon ya que existen inumerables problemas con los carácteres y espacios en blanco, para solucionarlo de una forma rápida he creado un script (espacioBBDDcentreon.sh) de shell linux con el siguiente código:

#!/bin/bash

/usr/local/nagios/libexec/mysql/check_mysql_health --hostname localhost --port 3306  --username root --password XXXX--mode sql --name="SELECT CONCAT(sum(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024),2))) FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA like 'centreon'" --units MB --warning 50 --critical 65

Tras esto solo nos queda dar de alta en Comando en centreon, sin opciones ni comodines:

Posteriormente creamos el servicio y lo relacionamos con el servidor a monitorizar:



Y ya empezamos a tener monitorizada nuestra BB.DD (para este ejemplo la base de datos del mismo centreon):

NOTA:
Si queremos monitorizar una BB.DD del gestor de tareas redmine, podemos pasar el comando SQL en una version mas reducida pero que también funciona correctamente, este es el script .sh :

#!/bin/bash

/usr/local/nagios/libexec/mysql/check_mysql_health --hostname SrbRedmine--port 3306  --username root --password XXXX --mode sql --name="SELECT sum( data_length + index_length ) / 1024 / 1024 FROM information_schema.TABLES where TABLE_SCHEMA like 'bitnami_redmine'" --units MB --warning 50 --critical 65

No hay comentarios: