Ganglia Metrics para Lighttpd
sep 9, 06:24
Una de las cosas que me encanta de Ganglia es la facilidad para agregar métricas con el comando gmetric, las cuales posteriormente podamos visualizar en la interface web. Con un simple script en bash (en realidad en cualquier lenguaje) podemos generar la información necesaria para gmetric.
Por ejemplo, en un servidor web nos interesa conocer la cantidad de conexiones que se realizan ya sea a apache, lighttpd, nginx, etc. Como ejemplo para esta ocasión usaré lighty .
Lo primero que tenemos que hacer es habilitar la página de status de lighty a través del modulo mod_status . Para esto lo agregamos en la sección de módulos:
server.modules = (
# otros modulos
"mod_status",
# más modulos
)
Ahora, por seguridad no queremos que esta página esté disponible para todo el mundo y en este caso en específico solo queremos que sea leída por nuestro script. Por lo tanto habilitaremos la url de status sólo para ser accesible desde el localhost:
$HTTP["remoteip"] == "127.0.0.1" {
status.status-url = "/server-status"
}
Podríamos añadirle más opciones de seguridad pero con esto será suficiente. La página de status que se genera está en código HTML pero si queremos una versión en texto podemos acceder agregando ?auto a la url de status que definimos arriba.
Entonces para que nuestro script acceda a la información de status y guardarla en un archivo deberíamos usar algo cómo:
wget -q -O - http://127.0.0.1/server-status?auto > /tmp/status
El archivo temporal tendrá una estructura similar a ésta:
Total Accesses: 2308494998
Total kBytes: 95387409298
Uptime: 13293149
BusyServers: 516
IdleServers: 1532
Lo que nos interesa como métricas son los Busy Servers y los Idle Servers. No hay que confundirse con los nombres, recordemos que lighty no lanza “servidores” como Apache, el nombre es solo por compatibilidad. En este caso los “Busy Servers” representan la cantidad de conexiones activas en el momento. Así podemos parsear nuestro archivo y agregarlo como una métrica de ganglia a través de gmetric:
gmetric --name lighttpd_busy_servers --value `grep BusyServers /tmp/status | cut -d " " -f 2` --type float --units "Busy Servers"
Lo que hemos hecho es obtener el valor de BusyServers y agregarlo como una métrica tipo float de nombre lighttpd_busy_servers y cuya unidad es “Busy Servers” . Lo único que nos faltaría es crear una tarea vía cron para que nuestro script se ejecute cada cierto tiempo. Ganglia se encarga del resto y nos hará una bonita gráfica.
Dejo disponible el script para quien esté interesado en usarlo: ganglia_lighttpd.sh
Hola
— Hector Paz · ene 22, 18:03 · #
Hola de nuevo
— Hector · ene 22, 18:22 · #