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:
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.
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
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.