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 Problemas con dos agentes en Python y PHP

  • Problemas con dos agentes en Python y PHP

    Posted by Kitus on April 5, 2011 at 20:34

    Hola,

    Tengo dos programas que ejecuto desde un agente para recoger dos datos incrementales :

    – Uno escrito en python contacta con un servidor mysql y extrase un select count(*).
    – El otro es el myprofi (http://myprofi.sourceforge.net/) que evalua el log de mysql, saca estadísticas y recupero el valor que me interesa.

    Los programas se ejecutan desde consola sin problemas. Si configuro cada agente por separado funcionan correctamente, pero cuando los meto juntos en el mismo fichero de configuración el que consulta las visitas web, el programa en python, deja de funcionar, no importa el orden en que los ponga.

    ¿Alguna idea por donde puede venir el error? Gracias.

    Os pongo la confguración cuando los dos están juntos y falla el de consulta web :

    server_ip      192.168.0.3
    server_path    /var/spool/pandora/data_in
    temporal /tmp
    logfile /var/log/pandora/pandora_agent.log
    interval        30
    debug          0
    udp_server 0
    udp_server_port 41122
    udp_server_auth_address 0.0.0.0
    group P
    server_port    41121
    transfer_mode tentacle
    # User the agent will run as
    pandora_user root

    module begin
    module_name sql_visitesweb
    module_type generic_data_inc
    module_exec /usr/bin/python /usr/local/bin/cons_sql_totalregistres.py
    module_description Numero de visites des de la ultima consulta
    module_end

    module begin
    module_name sql_select
    module_type generic_data_inc
    module_exec php /usr/local/src/parser.php  -type “select” /var/log/mysql/mysql.$
    module_description Numero de consultes SELECT des de la ultima consulta
    module_end

    El código del programa python es muy simple :

    #!/usr/bin/python
    import MySQLdb
    conn = MySQLdb.connect(host=”xxxxx”,user=”yyyyy”,passwd=”ooooo”)
    cursor=conn.cursor()
    cursor.execute(“SELECT count(*) FROM db.log”)
    row=cursor.fetchone()
    cursor.close()
    conn.close()
    print row[0]

    Kitus replied 13 years, 9 months ago 3 Members · 3 Replies
  • 3 Replies
  • Sancho

    Administrator
    April 5, 2011 at 21:36
    2309 Karma points
    Community awards: bulb Bright ideas
    Community rank: tentacle_master_icon Tentacle Master
    Like it
    Up
    0
    Down
    Drop it
    ::

    Lo unico que se me ocurre es que pueda ser un problema de permisos si el agente se ejecuta con permisos que no sean root.

    De python no se mucho, pero entiendo que la ultima linea: print row[0], vuelta a salida estándar un único numero, verdad ?. Recuerda que pandora espera un unico dato, sin nada que lo pueda confundir (espacios en blanco, caracteres que no sean numericos…

    Solo por probar, prueba a cambiar el tipo de modulo a async_string a ver que te esta devolviendo y con eso quizas tengas mas pistas. Otra opcion es poner el agente en modo debug y echarle un vistazo directamente al XML.

    Hola,

    Tengo dos programas que ejecuto desde un agente para recoger dos datos incrementales :

    – Uno escrito en python contacta con un servidor mysql y extrase un select count(*).
    – El otro es el myprofi (http://myprofi.sourceforge.net/) que evalua el log de mysql, saca estadísticas y recupero el valor que me interesa.

    Los programas se ejecutan desde consola sin problemas. Si configuro cada agente por separado funcionan correctamente, pero cuando los meto juntos en el mismo fichero de configuración el que consulta las visitas web, el programa en python, deja de funcionar, no importa el orden en que los ponga.

    ¿Alguna idea por donde puede venir el error? Gracias.

    Os pongo la confguración cuando los dos están juntos y falla el de consulta web :

    server_ip       192.168.0.3
    server_path     /var/spool/pandora/data_in
    temporal /tmp
    logfile /var/log/pandora/pandora_agent.log
    interval        30
    debug           0
    udp_server 0
    udp_server_port 41122
    udp_server_auth_address 0.0.0.0
    group P
    server_port     41121
    transfer_mode tentacle
    # User the agent will run as
    pandora_user root

    module begin
    module_name sql_visitesweb
    module_type generic_data_inc
    module_exec /usr/bin/python /usr/local/bin/cons_sql_totalregistres.py
    module_description Numero de visites des de la ultima consulta
    module_end

    module begin
    module_name sql_select
    module_type generic_data_inc
    module_exec php /usr/local/src/parser.php  -type “select” /var/log/mysql/mysql.$
    module_description Numero de consultes SELECT des de la ultima consulta
    module_end

    El código del programa python es muy simple :

    #!/usr/bin/python
    import MySQLdb
    conn = MySQLdb.connect(host=”xxxxx”,user=”yyyyy”,passwd=”ooooo”)
    cursor=conn.cursor()
    cursor.execute(“SELECT count(*) FROM db.log”)
    row=cursor.fetchone()
    cursor.close()
    conn.close()
    print row[0]

  • miguel

    Member
    April 6, 2011 at 11:03
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Buenas.

    Puede ser también por un tema de tiempos de ejecución. Has probado a crear un script en Python simplón y rápido en plan:

    #!/usr/bin/python
    print "1"
    

    Saludos.

  • Kitus

    Member
    May 13, 2011 at 16:23
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola,

    Ahora ya funciona correctamente. Era un cúmulo de fallos y una solución evidente :

    – Algún carácter de retorno de final de linea “incorrecto”. Arreglado con Notepad++.
    – El agente se ejecutaba cada 30 segundos, y al poner la opción para limitar el tiempo de ejecución del módulo he visto que algunos tardaba tanto (o se colgaban)  que se solapaba con la ejecución. Al poner un límite he podido ver los módulos que fallaban y los he arreglado.
    – Borrar las bases de datos manualmente. Como estoy haciendo tantas pruebas al final he borrando las tablas de módulos y agentes a manija y ha acabado de solucionar el problema con los últimos módulos-

    Gracias por todo!