Welcome to Pandora FMS Community!

Find answers, ask questions, and connect with our community around the world.

Bienvenido a la comunidad de Pandora FMS Forums Soporte de la comunidad [CLOSED] monitorizar servicio en unix

  • [CLOSED] monitorizar servicio en unix

    Posted by cabardesp on mayo 9, 2011 at 20:18

    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

    tpalacios replied 13 years, 9 months ago 2 Members · 5 Replies
  • 5 Replies
  • tpalacios

    Member
    mayo 10, 2011 at 16:55
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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:

    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:

    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:

    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. 😉

    Saludos.

  • cabardesp

    Member
    mayo 11, 2011 at 14:37
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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.

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

    devuelve
    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

    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)

  • tpalacios

    Member
    mayo 11, 2011 at 15:43
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    De nada para eso estamos 😉

    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:

    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.

  • cabardesp

    Member
    mayo 11, 2011 at 16:36
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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

  • tpalacios

    Member
    mayo 11, 2011 at 17:51
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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. 😉

    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.