Pandora FMS community forums

Full Version: [CLOSED] monitorizar servicio en unix
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
estoy intentando monitorizar el servicio mysql en un servidor SLES11.
he definido el siguiente modulo :

module_begin
module_name servicio_mysql
module_type generic_proc
module_service mysqld
module_description Comprueba si el servicio de Mysql esta activado
module_end

El modulo me devuelve siempre el valor 0, independientemente de si el servicio esta arrancado o no.

Los procesos en ejecucion son;
# ps -ef|grep mysql
root      2931     1  0 17:48 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --mysqld=mysqld --user=mysql --pid-file=/var/lib/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --datadir=/var/lib/mysql
mysql     2971  2931  0 17:48 pts/0    00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/mysqld.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock



He intentado poner
module_type generic_data
y
module_service /usr/sbin/mysqld
y con module_proc

Sigue devolviendo como valor 0.

Alguien me puede decir que estoy haciendo mal.
Muchas gracias
Hola cabardesp,

Peculiar problema el tuyo. Vayamos por partes:

Es cierto que poniendo únicamente el nombre del servicio no funciona... comprobado está...

El module service ejecuta esto:

Code:
ps aux | awk 'NR > 1 {ps = ""; for (i = 11; i <= NF; ++i) {ps = (ps " " $i) }; print $3, $6, ps}'

Si a este comando le añades un | grep mysqld, verás que lo que saca es la ruta absoluta del servicio, y he visto que a eso también has llegado.

Lo peculiar es que mientras que yo he añadido la ruta absoluta después de module_service al reproducir tu caso y me ha funcionado... a ti te sigue fallando.

Esto es lo que contiene mi archivo de configuración... mira a ver si tienes algún error de sintaxis y copia y pega... pero con esto debería funcionar:

Code:
module_begin
module_name Service_MySQL
module_type generic_proc
module_service /usr/sbin/mysqld
module_end
Si te sigue sin funcionar, prueba a usar:

Code:
module_begin
module_name MySQLDaemon
module_type generic_proc
module_exec ps -Af | grep mysqld | grep -v "grep" | wc -l
module_end

Pruébalo e infórmanos, para bien o para mal. Wink

Saludos.
Muchas gracias por contestar.
Te comento he añadido las dos definiciones de modulo que me pasas (copiar/pegar para evitar fallos)  y me pasas lo siguiente:
Con el servicio mysql iniciado: el modulo MySQLDaemon me devuelve 2 (correcto) y el modulo Service_MySQL me devuelve 0
Con el servicio mysql parado: el modulo MySQLDaemon me devuelve 0 (correcto) y el modulo Service_MySQL me devuelve 0
por tanto algo falla cuando utilizo module_service.

Code:
ps aux | awk 'NR > 1 {ps = ""; for (i = 11; i <= NF; ++i) {ps = (ps " " $i) }; print $3, $6, ps}' | grep mysqld
devuelve
[tt]0.0 1448  /bin/sh /usr/bin/mysqld_safe --mysqld=mysqld --user=mysql --pid-file=/var/lib/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --datadir=/var/lib/mysql
1.1 14916  /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/mysqld.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
0.0 660  grep mysqld[/tt]

Pero yo creo que tiene algo que ver con los parametros que se pasan --basedir=...., ya que en el mismo servidor monitorizo el servicio cron (/usr/sbin/cron) que no lleva parametros y funciona correctamente (devuelve 1 cuando esta iniciado y cero cuando no)
De nada para eso estamos Wink

Coincido contigo.

El problema tiene que estar justo en ese punto.

Ahora lo comprobaré y veremos como se puede arreglar.. de momento prueba a poner donde el módulo:

Code:
module_service /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/mysqld.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock

Tanto si funciona como si no, házmelo saber por favor.

Si sigue sin funcionar, puedes ir tirando con el otro módulo sin el module_service mientras corregimos el bug.

Un saludo.

Vale, poniendo la linea completa que devuelve el comando ps funciona, pero con un pequeño fallo. Los cambios de estado del servicio (iniciado, parado) no los detecta el agente.
Pero si paro el agente y lo vuelvo a arrancar si me lo detecta.
Me explico:
1) inicio mysql--inicio pandora_agent Correcto
2) paro mysql al tiempo de refresco pandora_agent no se entera de que lo he parado
3) reinicio pandora_agent si me dice que mysql esta parado.

Este comportamiento tambien lo tiene con el servicio cron
El servicio cron y todos jeje

Esto es porque con el module_service el agente cachea los datos, pero como luego no borra la caché, mantiene siempre el mismo dato... es un bug claramente. Wink

Esto último ya está arreglado, pero queda pendiente el no tener que poner en module_service la ruta completa más los parámetros de cada servicio...

Mientras solucionamos el problema, puedes seguir usando el módulo alternativo que te puse para monitorizar el estado del servicio.

Gracias por hacernos llegar este problema y un saludo.