Welcome to Pandora FMS Community!

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

Welcome to Pandora FMS Community Forums Soporte de la comunidad Uso de alerta con ON CHANGE

  • Uso de alerta con ON CHANGE

    Posted by antoq on November 25, 2010 at 01:30

    Hola a todos!
    He definido una alerta que se dispara cuando es modificado un campo cualquiera en una tabla. Para ello utilize la opcion: ON CHANGE.
    Anda correctamente, pero necesito saber cual es el registro en donde se ha modificado el campo.
    Se podra obtener esta informacion a traves de algun report o con algun query a la BBDD?
    Alguien tiene solucionado esto?
    Muchas gracias!!!

    antoq replied 13 years, 9 months ago 2 Members · 10 Replies
  • 10 Replies
  • rnovoa

    Member
    December 14, 2010 at 16:34
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola antoq,

    ¿Esa información la devuelve el módulo al que has asignado la alerta? Si es así puedes utilizar la macro _data_ en cualquier campo de la alerta para mostrarla.

  • antoq

    Member
    December 21, 2010 at 03:21
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Gracias por la respuesta!!
    El problema que tengo es que cuando el alerta se dispara por un cambio en un campo, _data_ me trae un string con todos los campos uno detras del otro. Pero solo uno cambio de valor. Tratandose de por ej miles de registros, como puedo saber cual es el que cambio?

  • rnovoa

    Member
    December 21, 2010 at 13:39
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    ¿Tu módulo devuelve todos los campos uno detrás de otro? La macro _data_ devuelve el valor del módulo que ha hecho que la alerta se dispare.

  • antoq

    Member
    January 8, 2011 at 03:01
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Lo que necesito es: dado un campo critico de un archivo, ej monto del sueldo, del archivo SUELDOS, cuando hay una actualizacion de ese campo en cualquier registro, dispare el alerta. O sea que si se actualiza el monto de algun sueldo se dispare el alerta.
    Para ello defino un modulo que hace la lectura de todos los montos de sueldos, uno detras del otro, y lo guarda en un string en la base de datos. Con ON CHANGE, el modulo vuelve a leer y armar un nuevo string y al compararlo con el que tiene guardado, si hay algun cambio dispara el alerta. Esto funciona muy bien. Pero el problema que tengo es que no puedo saber CUAL fue el valor que se actualizo y que por lo tanto genero el disparo del alerta.
    Muchas gracias

  • rnovoa

    Member
    January 10, 2011 at 14:20
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola antoq,

    Entiendo el problema. Se me ocurren dos opciones para solucionarlo:

    – Modificar el módulo para que sólo devuelva el nombre del registro que ha cambiado, en vez del string entero. Para esto tendría que guardar en un archivo temporal el valor anterior del string para poder compararlo en cada ejecución.
    – Monitorizar los valores de forma individual con un plugin, que genere un módulo por cada uno de los registros (podría ser poco práctico si hay demasiados registros).

  • antoq

    Member
    January 14, 2011 at 19:50
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Lo que pensaba hacer es que el string que graba el modulo sea “clave, valor, clave, valor,…”
    En donde la clave sea la clave unica y el valor los valores a monitorear. Cuando un valor es modificado el alerta se dispara y graba un nuevo string en el mySql.
    En ese momento invocar un programa que compare entre si los 2 ultimos string grabados y determine que valor fue modificado y a que clave corresponde.
    Puede ser?
    Se puede invocar un programa cuando se dispara un alerta, como si fuese una accion?
    En que archivo habria que dejar el resultado para que pueda ser levantado como report?
    Muchas gracias 

  • rnovoa

    Member
    January 18, 2011 at 14:25
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    No he entendido lo del report, ¿a qué te refieres?

    Se puede ejecutar cualquier programa cuando se dispara una alerta, pero ten en cuenta que las alertas se ejecutan en el servidor, no en el agente.

  • antoq

    Member
    January 18, 2011 at 21:15
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Me refiero a que una vez que el programa determino el valor modificado y su respectiva clave, deberia dejar esta informacion en algun archivo para que despues con el reporting de Pandora el usuario pueda crear un informe para ver esta informacion.

    Con respecto a la invocacion de un programa,seria ciertamente en el servidor, pero no tengo claro como.

    Muchas gracias!!

  • rnovoa

    Member
    January 18, 2011 at 22:35
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Creo que sería más fácil implementarlo en el agente como te comentaba antes, sobre todo de cara a utilizarlo en informes. De todos modos haz la prueba y nos cuentas.

  • antoq

    Member
    May 5, 2011 at 03:41
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Voy bien, pero me he encontrado con un nuevo problema:

    Con onChange la alerta se dispara cuando hay un cambio de valor. Pero una vez que se disparo, como hago para validar ese valor y que no dispare hasta que haya otro nuevo cambio de valor?

    Muchas gracias!!!