Daniel López Azaña

Tema

Social Media

Blog

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

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.
Daniel López Azaña

Sobre el autor

Daniel López Azaña

Emprendedor tecnológico y arquitecto cloud con más de 20 años de experiencia transformando infraestructuras y automatizando procesos.

Especialista en integración de IA/LLM, desarrollo con Rust y Python, y arquitectura AWS & GCP. Mente inquieta, generador de ideas y apasionado por la innovación tecnológica y la IA.

Artículos relacionados

facebook-like-button

Acelera tu web con un botón «Me gusta» de Facebook SUPERLIGERO

Suele ser habitual querer introducir un botón «Me gusta» de Facebook en nuestro sitio web de forma que por un lado mostramos el número de seguidores que tiene nuestra página de Facebook y por otro lado invitamos a su vez al usuario a hacer clic en él para empezar a seguir nuestra página. Sin embargo, este tipo de botones suelen cargar bastante un sitio web ya que consisten en un código Javascript que genera dinámicamente dicho botón con el número actualizado de seguidores y con la funcionalidad necesaria para hacer «Me gusta». Esto se traduce en que cada vez que carga una página de nuestro sitio web se tienen que realizar 11 peticiones extras a los servidores de Facebook para descargarse todos los elementos necesarios. Dado que además a día de hoy dichos servidores se encuentran en la costa oeste de Estados Unidos y no están disponibles a través de ningún servicio de CDN o similar, dependiendo de donde se encuentre el usuario es probable que cada una de esas peticiones tenga que atravesar la mitad del globo para completar la descarga. Todo esto provoca que nuestro sitio web se ralentice innecesariamente y su velocidad de carga se vea afectada, lo cual es bastante negativo en varios aspectos.

23 de septiembre de 2016
Velocidad de carga de páginas web: una importante pieza del puzzle

Las 5 razones más importantes por las que aumentar la velocidad de carga de tu web

Es frecuente no prestar mucha atención a la velocidad de carga de una web siempre que ésta se mantenga en unos niveles más o menos aceptables que no nos hagan esperar eternamente a que el contenido sea presentado en nuestra pantalla. Sin embargo, la velocidad web está cobrando un papel cada vez más relevante y los esfuerzos de optimización en este aspecto pueden ser decisivos para el éxito o fracaso en la consecución de los objetivos que nos hayamos planteado conseguir con nuestro sitio web.

24 de septiembre de 2014
Script para cambiar automáticamente todos los volúmenes gp2 a gp3 con aws-cli

Script para cambiar automáticamente todos los volúmenes gp2 a gp3 con aws-cli

El pasado diciembre Amazon anunció sus nuevos volúmenes EBS gp3, los cuales ofrecen mejores prestaciones y un ahorro en el coste del 20% respecto a los que se venían utilizando hasta ahora, los gp2. Pues bien, tras probar satisfactoriamente estos nuevos volúmenes en varios clientes, no puedo hacer otra cosa más que recomendar su utilización, pues son todo ventajas y en estos 2 meses y medio que han transcurrido desde el anuncio no he apreciado ningún problema ni efecto secundario.

16 de febrero de 2021

Comentarios

Sé el primero en comentar

Enviar comentario