Últimos Cambios |
||
Blog personal: El hilo del laberinto |
Última Actualización: 28 de Diciembre de 2.000 - Jueves
En esta página se describe una librería software cuyo fin es analizar los ficheros de detalle generados por un servidor RADIUS y extraer información útil: tráfico generado, número de llamadas, duración de las llamadas, números de teléfono, etc. La librería se ha ampliado para obtener datos de otras fuentes no RADIUS, como archivos de logs MRTG.
Los ISPs que utilicen MRTG para obtener estadísticas deberían leer mi página web sobre el truncado de datos que realiza este programa.
Esta librería puede invocarse tanto como CGI como desde la línea de comando. En cualquier caso, su salida es en formato HTML.
La librería conexiones dispone de una lista de correo de muy bajo tráfico, para intercambio de trucos, sugerencias, bugs, etc. En dicha lista se publican, también novedades como la aparición de una nueva versión o la corrección de algún problema importante.
NOTA: He comprobado un poco el asunto y he llegado a la siguiente conclusión:
No podemos, sencillamente, eliminar las operaciones en 64 bits, porque es bastante sencillo que un usuario de un ISP tenga un tráfico mayor de 32 bits (4Gigabytes). De hecho yo tengo un buen montón de usuarios que superan los 4Gigabytes mensuales de forma rutinaria.
Las operaciones implementadas son:
Los datos que se proporcionan son:
$ ./timelocal Fri Nov 5 11:05:51 1999
941796351
Es una función que uso bastante a la hora de comparar, mezclar o procesar logs de manera automática, y que -en Solaris al menos- ocupa sólo 5Kbytes (si se hace un strip para eliminar la tabla de símbolos).
Es una utilidad simple y sin apenas control de errores. Espera que la entrada sea correcta.
> Acabo de poner la última beta (19b9) en el web. Pruébala y dime si te
> funciona:Acabo de probarla... y funciona !! ;)
O al menos aparentemente... ;)
De todas formas, he estado viendo lo cambias que comentas de esta version, y revisando despacio mis logs...
La secuencia para cada usuario es como sigue:
Usuarios que se desconectan de forma normal, o por perdida de portadora:
Registro START sin IP
Registro ALIVE con IP
Registro STOP con IP (con I/O packets/Octets correctos)
Registro STOP sin IP (con I/O packets a 0 (cero) y sin campo de I/O Octects)Usuarios que el NAS desconecta por idle-timeout:
Registro START sin IP
Registro ALIVE con IP
Registro STOP con IP (con I/O packets/Octets correctos)Como ves en este ultimo caso no se repite el paquete STOP. Y no entiendo porque se repite en el primer caso.
En cualquier caso no hay paquetes ALIVE entre medias. El motivo de usar los Alive como ya te dije es que el cisco no manda la IP asignada en el paquete Start. Uso la siguiente configuracion en el cisco:
! aaa accounting update newinfo aaa accounting network default start-stop radius ! radius-server retransmit 1 radius-server timeout 3El 'retransmit 1' es para que solo intente mandar 1 vez los paquetes. Si le pongo un valor mayor (por defecto es 3) envia 3 veces los alive. Esto creo que tiene que ver con que no reconoce los 'ack' que le responde el radius despues de recibir cada paquete. Pero no me preocupa porque no afecta a lo de que no aparece la ip inicial.
Este script permite disponer en todo momento de cuatro ficheros RADIUS por cada fichero de detalle original:
Dejo parte de la configuración, pues, manual.
(*) El cambio en estas opciones supone la recompilación automática de toda la librería.
Como contrapartida, la generación de las cachés, aunque es un proceso muy esporádico, es lento. Aproximadamente el doble que el trabajar directamente con los ficheros en bruto.
En esta primera implementación del sistema caché, el fichero de caché mide aproximadamente 30.3% respecto al fichero original.
Solución: Los registros que no contengan la IP del usuario son ignorados.
Solución: Los registros Alive se consideran equivalentes a los registros "Start".
Solución: Si Acct-Terminate-Cause contiene un texto, usa el texto como explicación. Ello supone numerosos cambios en la librería, incluyendo los nuevos ficheros "causa_desconexion.h" y "causa_desconexion.c".
Con estas modificaciones existe un problema: Si se envían varios Alive por conexión, la librería no funciona correctamente. ¿Alguien puede decirme si eso es un problema?. Por si acaso, lo añado a la Lista de Cosas por Hacer.
La opción PNG requiere tener instaladas las librerías ZLIB y libpng.
Para poder utilizar esta funcionalidad es preciso tener instalada la librería GD y definir "GRAFICOS" en el Makefile.
Al menos en este momento (verano), los resultados son correctos.
El tiempo de ejecución es idéntico al de la versión anterior de la librería.
Gracias a Javier Castillo (castillo@alhsys.es) por la información.
Gracias a Josep Olivet (josep@altecom.es) por proporcionarme aliciente para realizar los siguientes cambios:
Gracias a Josep Olivet (josep@altecom.es) por enviarme un fichero de detalle para posibilitar los siguientes cambios:
La librería ejecutará un programa si el path que se especifica para el fichero de log contiene algún espacio.
Para ello se crea el módulo "timestamp", que genera el timestamp de la librería bajo un fichero de creación automática "version2.c".
Obsérverse que en los dos primeros casos la librería se ejecuta, de todas formas. Pero el servidor Apache es lo bastante listo como para reconocer que la página que se ha generado de nuevo no tiene cambios, e informar de ello al cliente.
Ahora no se imprime nada.
Por ejemplo, si tus ficheros de detalle miden 50 megabytes, y tu disco duro es capaz de transferir 1 megabyte por segundo, está claro que la librería va a tardar al menos 50 segundos en completar cualquier petición.
También se puede comprobar la velocidad del disco duro cronometrando la duración de "cp path_fichero_detalle /dev/null".
¿Cómo mejorar la velocidad?. En el futuro la librería conexiones será capaz de procesar ficheros comprimidos con GZIP, lo que aumentará la velocidad de proceso considerablemente, aún a costa de multiplicar el consumo de CPU.
Casi siempre la causa del problema son los permisos de acceso. El usuario bajo el cual se ejecuta el CGI, generalmente el mismo usuario bajo el cual se ejecuta el servidor Web, debe tener permiso de lectura sobre los ficheros de detalle, así como permiso de "entrada" sobre todos los directorios por los que tenga que pasar.
Para comprobarlo, lo más sencillo es hacer un CGI con este esquema:
#!/bin/sh # /usr/bin/head FICHERO_DE_DETALLE_1 /usr/bin/head FICHERO_DE_DETALLE_2 ...
Al ejecutar el CGI anterior podemos comprobar si los permisos son correctos. Si no lo son, tendremos que cambiarlos, o bien ejecutar el CGI como SUID (no se recomienda por motivos de seguridad).
Publicación de la versión 15 de la librería.
La solución es relativamente sencilla: renombramos los archivos de detalle antes de empezar los informes, y los informes trabajan tanto sobre el archivo renombrado como sobre el archivo original, por si éste fuera creado de nuevo entre tanto.
Publicación de la versión 14 de la librería. Por primera vez se incluye el código fuente completo, con una licencia semejante (aunque no igual) a la GNU GPL. Liberando el código fuente se espera contribuir a su mayor difusión y a un desarrollo más rápido.
Esta diferenciación permite generar históricos con el cambio de mes.
Se anuncia en diversos foros la disponibilidad de esta página y de la librería "CONEXIONES".
Por demanda, se distribuye también la librería para Windows/x86. Esta librería no es ELF, y no está probada.
Primera versión de este documento.
La versión 13 es la primera versión realmente pública de esta librería, contemplando la configuración de los parámetros locales de cada instalación por el propio administrador. Adicionalmente, la velocidad se ha multiplicado por TRES respecto a la versión 12.
Algunas de sus características:
Se hace pública la disponibilidad de la librería en la lista de correo de Proveedores de Internet Españoles. La versión distribuida es básicamente igual a la versión interna de Argo. No es configurable de forma local y por ello no funciona correctamente en la mayoría de los otros sistemas. Disponible como ejecutable bajo Solaris/Sparc y Linux/x86.
Primera versión de esta librería, ejecutable vía CGI.
Más información sobre los OpenBadges
Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS