Monitoreo de Licencias · 4 min read · Jan 13, 2026

Monitoreo de Licencias Flexnet Con rrdtool - Página 2

4. Creando los gráficos

Los gráficos se pueden crear fácilmente con la ayuda del programa rrdcgi, que está en el paquete rrdtool. La creación se realiza solo bajo demanda para ahorrar ciclos de CPU, debes crear algunos scripts CGI con etiquetas RRD:: especiales, que son interpretadas por rrdcgi.

Mi script CGI se ve así:

#!/usr/bin/rrdcgi


Uso de Licencias Prod1

Uso de Licencias Prod1 en

' -s -24hours -w 600 -h 200 -W gbi@localhost@localdomain -v "Licencias usadas" --lazy --title "Usuarios de CL" -l 0 -Y DEF:value=/var/rrd/CL.rrd:value:MAX DEF:total=/var/rrd/CL.rrd:total:MAX AREA:value#660000 LINE3:total#FF00FF>

Para más detalles, consulta las páginas del manual de rrdcgi y rrdgraph.

Este es un ejemplo de un gráfico de estilo MRTG bien conocido:

Uso diario de licencias

No hay mucho que ver aquí.

El script anterior fue mi primer enfoque simple. La idea era implementar un conjunto de scripts para cada producto y para diferentes períodos, uno para diario, uno para semanal, uno para mensual y uno para anuales. Pero esto lleva a una inundación de scripts que son casi idénticos. Después de otra mirada en la documentación de rrdcgi, se encontró otra posibilidad, que lleva a una solución con un script por producto y botones de opción para la selección interactiva del período de tiempo de interés. El script se ve así:

#!/usr/bin/rrdcgi


Uso de Licencias Prod1

Uso de Licencias Prod1 en

Período de tiempo

Diario, Semanal, Mensual, Anual.

.png --imginfo '' -s - -w 600 -h 200 -W [email protected] -v "Licencias usadas" --lazy --title "Usuarios de CL" -l 0 -Y DEF:value=/var/rrd/CL.rrd:value:MAX DEF:total=/var/rrd/CL.rrd:total:MAX AREA:value#660000 LINE3:total#FF00FF>

Los botones de opción sobre los gráficos para seleccionar el período de tiempo se ven así:

Botones de opción

5. Creación de las bases de datos rrd

Hay un tema que no he mencionado hasta ahora, cómo se crean las bases de datos rrd. He utilizado, como puedes imaginar, otro script. Se ve así:

#!/usr/bin/python
# Script para crear todas las bases de datos rrd para todas las instancias de licencias 
# de una manera compatible con mrtg


import sys, string, rrdtool

search = [ { 'term':"Usuarios de CL:", 'val':10, 'max':5, 'db':'CL' },
           { 'term':"Usuarios de xyzabc:", 'val':10, 'max':5, 'db':'xyzabc' },
           { 'term':"Usuarios de qwerty:", 'val':10, 'max':5, 'db':'qwerty' } ]


for x in search:

      rrdtool.create( '/var/rrd/' + x[ 'db' ] + '.rrd', '-s 300', \
    'DS:value:GAUGE:600:U:U', 'DS:total:GAUGE:600:U:U', \
        'RRA:MAX:0.5:1:600', 'RRA:MAX:0.5:6:700', 'RRA:MAX:0.5:24:775', \
    'RRA:MAX:0.5:288:797' )

Por supuesto, debes ajustar esto a tus necesidades.

6. Otro script CGI

Para facilitar aún más el manejo del sistema Flexnet y los usuarios que necesitan alquilar una licencia para hacer su trabajo, se creó otro script CGI. Se utiliza para mostrar quién ha alquilado cuántas licencias, es solo la salida de “lmutil lmstat -a”, pero sin iniciar sesión en un sistema donde lmutil esté instalado. Pero ten en cuenta que esto puede chocar con la protección de la privacidad en tu empresa, porque la información personal es accesible libremente. Así que puede que tengas que proteger la ejecución de este script con algún mecanismo de autenticación, pero este tema no se cubre en este tutorial.

El script es nuevamente un script dash como el de el capítulo 2, puedes consultar más de un producto en más de un servidor, si se implementa de acuerdo. También es un llamado here-script, que es un tipo especial y raramente utilizado de script de shell. Nuevamente, siéntete libre de ajustarlo a tus necesidades:

#!/bin/dash

case $1 in
        prod1)          PORT=27000; PROD="Prod1";;
        prod2)          PORT=27002; PROD="Prod2";;
        prod3)          PORT=27042; PROD="Prod3";;
        *|prod4)        PORT=27001; PROD="Prod4";;
esac

echo Content-type: text/html
echo ""

/bin/cat << EOM

Estado de Licencia $PROD





Estado de Licencia $PROD


EOM

/usr/local/bin/lmutil lmstat -c $PORT@LICENSESERVER -a

/bin/cat << EOM


GBi

14.6.2010 EOM

Simplemente copia este script en el directorio cgi-bin de tu servidor web ( /usr/lib/cgi-bin en mi caso), hazlo legible y ejecutable para todos, no olvides cargar el módulo CGI de tu servidor web (si tiene uno, o no está cargado ya), y estarás listo para despegar. La salida se ve así:

Estado de licencia

Este script se llama en tu navegador web con una URL como:

http://server/cgi-bin/licstate.cgi?prod2

Así que puedes seleccionar uno de varios productos simplemente proporcionando un “parámetro de línea de comando” al script CGI.

Al proporcionar un script como este a los usuarios de productos donde las licencias disponibles tienden a estar casi al máximo todo el tiempo, es fácil que los usuarios manejen sus problemas relacionados con el uso de licencias entre ellos, y no hay necesidad de que el administrador esté involucrado en absoluto ;-).

7. URLs

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.