GNU/Linux, Open Source, Cloud Computing, DevOps y más...

Script para monitorizar la puntuación de un sitio web en Google PageSpeed Insights de forma automática

No hay comentarios

Logo Google PagespeedUno de los objetivos más perseguidos a la hora de optimizar un sitio web desde el punto de vista de su velocidad de carga es conseguir una buena puntuación en el test de Google PageSpeed Insights. Pero no basta trabajar duro en su optimización, conseguir una buena nota y echarse a dormir, sino que es necesario realizar un seguimiento períodico de la evolución de dicha puntuación en la medida en que un sitio web va evolucionando y sufriendo modificaciones que de una u otra forma van afectando a esta métrica.

A continuación ofrezco un pequeño script que nos permitirá realizar ese seguimiento de forma automática y vigilar que la puntuación en Google PageSpeed Insights no caiga de un determinado valor que nosotros fijemos.

Herramienta psi

El script se basa en una pequeña pero muy útil herramienta llamada psi y desarrollada por Addy Osmani en Javascript, por lo que en primer lugar necesitaremos instalarla mediante el gestor de paquetes Npm de Node.js:

$ npm install --save psi

Una vez instalado, este programa nos muestra en la línea de comandos información similar a la que podemos obtener a través de la aplicación web oficial de Google:

Salida del comando /usr/bin/psi

Script desktop-pagespeed-score-watchdog.sh

A continuación muestro un pequeño script programado en Bash que filtra la información facilitada por el comando psi y vuelca el resultado a un fichero de log que va registrando la evolución de la puntuación a lo largo del tiempo y que puede ser procesado por un sistema de monitorización que genere algún tipo de alerta que nos avise cuando la puntuación de nuestro sitio web caiga por debajo de un valor determinado.

#! /bin/bash 
 
scoreLimitDesktop="90"
website="www.daniloaz.com"
error=0 
 
log () 
{ 
        logFileName=`echo $0 | egrep -o "[^\/]+$"` 
        logStatusFile=$logFileName.status 
        logFile=$logFileName.log 
 
        echo "$1|$2" > /var/log/$logStatusFile 
        echo `date +%Y-%m-%d\ %H:%M:%S`"|$1|$2" >> /var/log/$logFile 
} 
 
if [ ! -f /usr/bin/psi ];then 
    echo "Error: no está disponible el ejecutable /usr/bin/psi." 
    exit 1 
fi 
 
scoreDesktop=`/usr/bin/psi --strategy=desktop "$website" | grep 'Speed:' | awk '{print $2}'` 
 
if [ $scoreDesktop -lt $scoreLimitDesktop ];then 
    msg="ERROR: la puntuación de PageSpeed Desktop de $website ha bajado a ${scoreDesktop}/100."  
    echo $msg 
    log 2 "$msg"
    exit 1 
else 
    msg="OK: la puntuación de PageSpeed Desktop es igual o superior al límite: ${scoreDesktop}/100." 
    echo $msg 
    log 0 "$msg" 
    exit 0 
fi

Este script obtiene la puntuación para ordenador o desktop, pero igualmente podría obtenerla para la versión móvil con sólo cambiar el parámetro –strategy=desktop por –strategy=mobile.

Resultado PageSpeed www.daniloaz.comEl script puede ser ejecutado con la frecuencia que deseemos añadiendo una tarea a nuestro cron:

# Vigilar cada 15 minutos la puntuación del sitio www.daniloaz.com en Google PageSpeed Insights
0,15,30,45      *       *       *       *       /bin/bash /usr/local/scripts/desktop-pagespeed-score-watchdog.sh

Por último, este es el aspecto que presenta el log que va registrando períodicamente la evolución del PagesPeed Score:

$ cat desktop-pagespeed-score-watchdog.sh.log
2017-05-26 12:00:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 12:15:03|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 12:30:03|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 90/100. 
2017-05-26 12:45:03|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 90/100. 
2017-05-26 13:00:03|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 13:15:03|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 13:30:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 13:45:03|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 14:00:03|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 14:15:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 14:30:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 14:45:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 15:00:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 15:15:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 15:30:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100. 
2017-05-26 15:45:04|0|OK: la puntuación de PageSpeed Desktop es igual o superior al límite: 91/100.
2017-05-26 16:00:04|2|ERROR: la puntuación de PageSpeed Desktop de www.daniloaz.com ha bajado a 89/100.
2017-05-26 16:15:03|2|ERROR: la puntuación de PageSpeed Desktop de www.daniloaz.com ha bajado a 89/100.


 

Sobre el autor

Daniel López Azaña
Arquitecto de soluciones Cloud AWS & Linux Sysadmin Freelance

Emprendedor, generador de ideas y mente inquieta. Apasionado de las nuevas tecnologías, especialmente de los sistemas Linux y del software libre. Me gusta escribir además sobre actualidad tecnológica, Cloud Computing, AWSi, DevOps, DevSecOps, seguridad, desarrollo web y programación, SEO, ciencia, innovación, emprendimiento, etc.

DanielScript para monitorizar la puntuación de un sitio web en Google PageSpeed Insights de forma automática

Artículos relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada.