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.


Error: Your Requested widget " ai_widget-6" is not in the widget list.
  • [do_widget_area above-nav-left]
    • [do_widget_area above-nav-right]
      • [do_widget_area footer-1]
        • [do_widget id="wpp-4"]
      • [do_widget_area footer-2]
        • [do_widget id="recent-posts-4"]
      • [do_widget_area footer-3]
        • [do_widget id="recent-comments-3"]
      • [do_widget_area footer-4]
        • [do_widget id="archives-4"]
      • [do_widget_area logo-bar]
        • [do_widget id="oxywidgetwpml-3"]
      • [do_widget_area menu-bar]
        • [do_widget id="search-3"]
      • [do_widget_area sidebar]
        • [do_widget id="search-4"]
        • [do_widget id="ai_widget-2"]
        • [do_widget id="categories-5"]
        • [do_widget id="ai_widget-3"]
        • [do_widget id="ai_widget-4"]
        • [do_widget id="ai_widget-5"]
      • [do_widget_area sub-footer-1]
        • [do_widget id="text-4"]
      • [do_widget_area sub-footer-2]
        • [do_widget_area sub-footer-3]
          • [do_widget_area sub-footer-4]
            • [do_widget_area upper-footer-1]
              • [do_widget id="search-2"]
              • [do_widget id="recent-posts-2"]
              • [do_widget id="recent-comments-2"]
              • [do_widget id="archives-2"]
              • [do_widget id="categories-2"]
              • [do_widget id="meta-2"]
            • [do_widget_area upper-footer-2]
              • [do_widget_area upper-footer-3]
                • [do_widget_area upper-footer-4]
                  • [do_widget_area widgets_for_shortcodes]
                    • [do_widget id="search-5"]
                    • [do_widget id="ai_widget-6"]
                  • [do_widget_area wp_inactive_widgets]
                    • [do_widget id="wpp-2"]
                    • [do_widget id="text-1"]
                    • [do_widget id="recent-posts-3"]
                    • [do_widget id="categories-3"]
                    • [do_widget id="archives-3"]
                    • [do_widget id="icl_lang_sel_widget-3"]

                  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.