• Publicidad

Cron.d usando MRTG

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cron.d usando MRTG

Notapor monitor9 » 2012-12-18 10:56 @497

Buenas tardes, tengo un problema con MRTG que no logro resolver.

Aparentemente todo se crea bien pero los datos no se actualizan, “parece uno relacionado con el cron”.

Les dejo como lo he configurado. Realicé los siguientes pasos:

Se ha instalado mrtg, mrtg-contrib, mrtgutils, rrdtool, rrdtool librrds-perl y snmp en una plataforma de Linux(Debian) que está dentro de una VMWare Player y ésto está dentro de un PC.

Luego se han realizado los siguientes pasos:

  1. Para crear el archivo de .cfg:
    cfgmaker --output=/etc/mrtg/cfg/ NESPT0SW03.cfg community@IP-del-equipo

    el archivo se crea correctamente y modifico lo siguiente:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using text Syntax Highlighting
    WorkDir: /var/www/mrtg/NESPT0SW01
    Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

    e incluyo las siguientes líneas:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using text Syntax Highlighting
    Htmldir: /var/www/mrtg/NESPT0SW01
    Imagedir: /var/www/mrtg/NESPT0SW01
    Logdir: /var/www/mrtg/NESPT0SW01
    Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


    (todo esto para indicarle dónde tienen que ir los archivos)
  2. Creo el index.html para mostrar las gráficas:
    indexmaker --output=/var/www/mrtg/NESPT0SW01/index.html /etc/mrtg/cfg/NESPT0SW01.cfg
  3. Ejecuto el siguiente comando y me muestra las gráficas:
    env LANG=C /usr/bin/mrtg /etc/mrtg/cfg/NESPT0SW01.cfg
  4. Reinicio el servidor Apache
  5. En el cron.d de mrtg tengo el siguiente código para que se ejecute cada 5 minutos. La ruta completa es /etc/crond./mrtg
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using text Syntax Highlighting
    0-55/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg/cfg/NESPT0SW01.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg/cfg/NESPT0SW01.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi
    Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Nota: lo curioso es que si ejecuto el código del punto 3 (env LANG=C /usr/bin/mrtg /etc/mrtg/cfg/NESPT0SW01.cfg) y refresco la página se actualizan los datos. Parece que el cron no se ejecutara.

¿Alguien sabría orientarme?

¡Muchas gracias!
Avatar de Usuario
monitor9
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2012-12-18 08:15 @386
Ubicación: Madrid

Publicidad

Re: Cron.d usando MRTG

Notapor explorer » 2012-12-18 14:54 @662

Bienvenido a los foros de Perl en Español, monitor9.

¿No sale nada en el registro /var/log/mrtg/mrtg.log?

Esto suena a que el cron no tiene permisos de ejecución del MRTG.

Según la línea del cron.d que has puesto, quieres que se ejecute como root el binario /usr/bin/mrtg, por lo que no debería haber problemas ahí.

Lo dicho: hecha un vistazo al registro de actividad de mrtg.log, pero lo que también puedes hacer es abrir una terminal de línea de comandos y ejecutar el comando

tail -F /var/log/syslog /var/log/auth.log /var/log/mrtg/mrtg.log

y quédate esperando cinco minutos, para que veas si el cron se ejecuta o no. Deberían salirte líneas como estas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Dec 18 20:45:01 hs-1509 /USR/SBIN/CRON[4239]: (root) CMD (if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi)
Dec 18 20:45:01 hs-1509 CRON[4230]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec 18 20:45:01 hs-1509 CRON[4230]: pam_unix(cron:session): session closed for user root
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
(ésta es de mi máquina Debian)
En el archivo suslog queda registrado el comando que se ejecuta.
En el archivo auth.log queda registrado el cambio de usuario para poder ejecutar el comando.
En el archivo mrtg.log queda registrado (por defecto) los posibles errores que el comando saque.

Ten en cuenta otra cosa: no es lo mismo el $PATH que tienes en la línea de comandos, a el $PATH que tiene el crond, así que en caso de referenciar binarios, lo normal es indicar una ruta absoluta a ellos. Bueno, siendo el MRTG, no creo que sea esto, pero, lo digo por si acaso.

Y una más: si se instaló el mrtg usando alguno de los gestores de paquetes de software de Debian (apt-get, aptitude, etc.), entonces la instalación en el cron.d es automática, así que me extraña que me digas que has tenido que hacerlo... en mi Debian se instaló en /etc/cron.d/mrtg:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
*/5 *   * * *   root    if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cron.d usando MRTG

Notapor monitor9 » 2012-12-19 06:26 @309

Buenos días.

Lo primero de todo, muchas gracias por la ayuda. Llevo un par de meses con temas Linux, MRTG y RRDTOOL. Ya he montado otra VMWare Player para medir dispositivos, por lo que tenía una guía de cómo hacerlo, que no es más que los pasos que indiqué en el primer mensaje.

He tomado la opción de ejecutar los pasos nuevamente, con alguna pequeña variación:

  1. Para crear el archivo de .cfg:
    cfgmaker --output=/etc/mrtg/cfg/ NESPT0SW01.cfg community@IP-del-equipo

    el archivo se crea correctamente y modifico lo siguiente:
    WorkDir: /var/www/mrtg/NESPT0SW01

    e incluyo las siguientes líneas:
    Htmldir: /var/www/mrtg/NESPT0SW01
    Imagedir: /var/www/mrtg/NESPT0SW01
    Logdir: /var/www/mrtg/NESPT0SW01


    (todo esto a para indicarle dónde tienen que ir los archivos)
  2. Creo el index.html para mostrar las gráficas:
    indexmaker --output=/var/www/mrtg/NESPT0SW01/index.html /etc/mrtg/cfg/NESPT0SW01.cfg

  3. Ejecuto el siguiente comando y me muestra las gráficas:
    env LANG=C /usr/bin/mrtg /etc/mrtg/cfg/NESPT0SW01.cfg
  4. Reinicio el servidor Apache2.
  5. En el cron.d de mrtg tengo el siguiente código para que se ejecute cada 5 minutos. La ruta completa es /etc/crond./mrtg
    0-55/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg/cfg/NESPT0SW01.cfg ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg/cfg/NESPT0SW01.cfg 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi

    (Lo que he variado está marcado en rojo, creo que esto no tendría que tener la menor importancia.)


¡¡¡Ahora todo funciona correctamente!!!



Aclaro varios de los puntos que no comenté anteriormente:

Las instalaciones las realicé desde el shell con apt-get install mrtg

El cron de mrtg (/etc/crond./mrtg), tienes razón, lo crea de forma automática. Tengo que medir varios dispositivos y quería que tuvieran cada uno una línea independiente en el cron. Este era el primero que estaba creando, ya he creado todos y están tomando datos.

Por el mismo motivo he creado directorios donde van los archivos generados por MRTG y que no crea MRTG.


Si lo ves correcto damos por cerrado el tema.

¡Muchas gracias por la ayuda, explorer!
Avatar de Usuario
monitor9
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2012-12-18 08:15 @386
Ubicación: Madrid


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 28 invitados