Script que monitoriza Google PageSpeed Insights

Script que monitoriza Google PageSpeed Insights.

Cuando tratamos de optimizar un sitio web con el fin de mejorar su velocidad, una de las primeras puntuaciones que solemos buscar es la que nos ofrece:

Google PageSpeed Insights

Es evidente que dependiendo de muchos factores esta puntuación oscila, por tanto vamos a crear un script que nos realizara un seguimiento exhaustivo de la puntuación, y ademas nos avisara mediante un archivo *.log si nuestra nota sube o baja, dependiendo del valor que nosotros mismos hayamos predefinido.

Vamos a verlo que es muy simple…

 

Monitoriza Google PageSpeed Insights

Existe una herramienta compatible con cualquier Linux llamada «psi«, que está pensada para ofrecernos los datos de Google PageSpeed Insightsen nuestra consola / terminal, por tanto la instalaremos.

Para instalar la aplicación necesitamos instalar primero «npm», que es un manejador de paquetes para Node.js. Viene por defecto en todos los repositorios oficiales de las distribuciones Linux más populares…

Debian, Ubuntu y derivados

apt-get install npm

Rhel, CentOS y derivados
yum install npm

Suse, OpenSuse
zypper install npm

Fedora
dnf install npm

Una vez instalado npm vamos a instalar psi.

Script que monitoriza Google PageSpeed Insights 1

 

Instalamos psi en CLI.

npm install --global psi

Una vez instalado puedes ver su pequeño manual, con_
psi --help

PageSpeed Insights with reporting

Usage
$ psi <url>

Options
–key Google API Key. By default the free tier is used
–strategy Strategy to use when analyzing the page: mobile|desktop
–format Output format: cli|json|tap
–locale Locale results should be generated in
–threshold Threshold score to pass the PageSpeed test
–optimized Get the URL of optimized resources
–download Download optimized resources

Example
$ psi todomvc.com –strategy=mobile

 

Por ejemplo… podemos usar (recuerda colocar tu sitio web):

psi sololinux.es

O bien definir el formato que queremos medir:
  • mobile
  • desktop

psi sololinux.es --mobile

ejemplo de respuesta…

——————————————————–

URL: sololinux.es
Strategy: mobile
Speed: 78
Usability: 99

CSS size | 305 kB
HTML size | 207 kB
Image size | 213 kB
JavaScript size | 1.17 MB
CSS resources | 16
Hosts | 15
JS resources | 30
Resources | 80
Static resources | 56
Other size | 64.8 kB
Total size of request bytes sent | 15.9 kB

Enable GZIP compression | 4.31
Leverage browser caching | 2.17
Minify CSS | 0.42
Minify HTML | 0.15
Minify JavaScript | 1.13
Minimize render blocking resources | 40
Size tap targets appropriately | 0.91

——————————————————–

Como puedes ver en el ejemplo, la salida nos aporta bastantes datos.

Vamos a crear el script.

Script que monitoriza Google PageSpeed Insights 2

 

Script que monitoriza Google PageSpeed Insights

Este script que te propongo filtrara la información que le aportara psi y volcara el resultado en un fichero log que ira registrando la evolución de la puntuación. incluso podrías recibir una alerta por mail cuando la puntuación este por debajo del valor determinado (para tal efecto puedes tomar como referencia este script o este otro).

nano desktop-pagespeed.sh

Copia y pega.
#! /bin/bash 

# Umbral de puntuacion
scoreLimitDesktop="85"
# Tu sitio web
website="www-sololinux.es"
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 se encuentra 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

Observa que tenemos la especificación «–strategy=desktop», la puedes modificar por «–strategy=mobile».

Guarda el archivo y cierra el editor.

 

Creamos una tarea cron que vaya ejecutando el script.

# Cada 15 minutos de forma ininterrumpida.
# Coloca la ruta correcta de tu script.

0,15,30,45      *       *       *       *       /bin/bash /usr/local/scripts/desktop-pagespeed.sh

Como punto final, visualizamos manualmente el «log» de puntuaciones.
cat desktop-pagespeed.sh.log

 

Espero te resulte útil.

 

 

Agregar comentario