Cómo monitorizar Varnish Cache

Este es un artículo invitado escrito por Darío Rodriguez, miembro del equipo de desarrollo de Pandora FMS.

Varnish es un acelerador de aplicaciones web, esto es, un proxy inverso que actúa como cache HTTP. Es una aplicación muy útil para servicios o aplicaciones web que tienen una gran volumen de tráfico de datos, ya que permite aumentar la velocidad del servicio mediante el cacheo de contenidos. La arquitectura típica de aplicaciones que usan un cache HTTP, es la que aparece en la siguiente imagen.

vcache1

Todo el tráfico HTTP pasa por el servidor Varnish con el fin de usar la cache del mismo antes de realizar la petición a los servidores situados en el backend.

En todas las aplicaciones en las que está presente un servidor de cache HTTP, Varnish este se convierte en una pieza fundamental de la arquitectura. Esto es así ya que el servidor de cache es el que procesa todas las peticiones. Por ello es muy importante asegurarnos de que su funcionamiento es óptimo en todo momento, de lo contrario podría convertirse en un cuello de botella que ralentice toda la aplicación.

La mejor forma de vigilar el correcto funcionamiento de Varnish es mediante la monitorización de las variables de rendimiento más importantes de este servidor.

Párametros de rendimiento de Varnish Cache

Junto con la instalación de Varnish, se instalan varias aplicaciones que nos ayudan a evaluar el rendimiento del servidor aportando diversas estadísticas. Las aplicaciones son las siguientes:

  • varnishtop: Lista agrupada de entradas más frecuentes de diferentes logs.
  • varnishhist: representa un histograma con el tiempo que tarda el procesado de las peticiones.
  • varnishsizes: realiza la misma tarea que “varnishhist” pero mostrando el tamaño de los objetos.
  • varnishstat: muestra gran cantidad de contenidos sobre aciertos de cache, consumo de recursos,etc.
  • varnishlog: permite ver las peticiones realizadas al servidor web situado en el backend.

Si quiere mas información acerca de estos comandos y otros adicionales podrá encontrarla en la documentación de Varnish.

El comando que más información nos aporta a la hora de revisar el rendimiento de la aplicación es varnishstat. Los demás comandos aportan información detallada de las peticiones y logs, estos comandos serán muy útiles cuando sea necesario configurar y depurar el funcionamiento del servidor de cache.

Al ejecutar el comando el comando varnishstat -1, en el mismo servidor que tiene instalado Varnish, obtendremos una larga lista de métricas.

vcache2

Las métricas básicas para comprobar el rendimiento de Varnish son las siguientes:

  • client_conn : conexiones de clientes aceptadas
  • client_req : peticiones de clientes recibidas
  • backend_fail : conexiones fallidas al backend
  • cache_miss : fallos de cache
  • n_object : número de objetos instanciados
  • n_wrk : número hilos en trabajo
  • n_wrk_create : número de hilos de trabajo creados
  • n_wrk_failed : número de fallos al crear hilos de trabajo
  • n_wrk_max : número máximo de hilos de trabajo
  • n_wrk_drop : número de peticiones de trabajo abandonadas
  • n_lru_nuked : número de objetos LRU
  • esi_errors : errores de parseo ESI
  • n_expired: número de objetos expirados

Con este comando obtenemos una instantánea de las estadísticas de rendimiento. Una instantánea no nos sirve para comprobar la tendencia, ya que necesitamos los datos de, por ejemplo, la última semana o el último mes para poder comparar diferentes configuraciones a lo largo del tiempo.

Para obtener esta información tendremos que monitorizar las variables más importantes durante un período de tiempo, con estos datos podremos ver de forma sencilla si los cambios realizados en la configuración de Varnish mejoran el rendimiento. Para realizar la monitorización usaremos Pandora FMS y el plugin para Varnish Cache disponible en su librería. Además de la monitorización, Pandora FMS nos permite configurar alertas que nos avisen ante problemas en el rendimiento e informes que nos muestren la evolución de las diferentes métricas. Con estas funcionalidades desplegaremos una monitorización que nos alertará ante cualquier fallo en nuestro servidor Varnish.

Monitorización de Varnish con Pandora FMS

El primer paso para desplegar la monitorización es descargar e instalar Pandora FMS. Puede encontrar una imagen ISO e incluso una máquina virtual preconfigurada para VMware en su página oficial de descarga.

Una vez instalado Pandora FMS es necesario instalar un agente en la máquina donde se ejecuta el servidor de cache Varnish. Existen agentes para diferentes distribuciones Linux.

Para no alargar el artículo no vamos a describir el proceso de instalación de cada componente de forma detallada, ya que puede consultar todos los pasos en la documentación oficial de Pandora FMS.

Ahora es el turno de instalar el plugin para Varnish. Podrá encontrar el plugin en la Librería de módulos de Pandora FMS.

vcache3

Para instalar el plugin sólo tiene descomprimir el archivo ZIP y copiar los archivos “varnish-plugin.pl” y “varnish-plugin.conf” a la carpeta de plugins del agente instalado en el servidor de Varnish. Puede usar los siguientes comandos:

# unzip varnish-plugin.zip
# cp varnish-plugin.* /etc/pandora/plugins

Ahora que el plugin está en su ubicación correcta, podemos configurarlo. Para ello tendremos que editar el archivo de configuración, por defecto el archivo se llama “varnish-plugin.conf”. El archivo de configuración por defecto tiene la siguiente estructura:

METRIC
hit_ratio
connect_accept_ratio
backend_success_ratio
work_thread_ratio
STATS
client_conn
client_req
backend_fail
cache_miss
n_object
n_wrk
n_wrk_create
n_wrk_failed
n_wrk_max
n_wrk_drop
n_lru_nuked
esi_errors
n_expired

Este archivo permite configurar dos tipos de métricas. La primera son las estadísticas y están definidas por el token STATS. Esta categoría permite recoger cualquier valor que aparece al ejecutar el comando varnishstats -1. Los diferentes parámetros se pueden seleccionar por el nombre que aparece en la primera columna de la salida que devuelve el comando. La segunda métrica, son los ratios definida por el token METRIC. Los ratios ayudan a la comprensión de los valores de rendimiento de Varnish, aportando información normalizada como porcentajes. Los ratios disponibles son los siguientes:

  • hit_ratio: ratio aciertos cache
  • connect_accept_ratio: ratio conexiones aceptadas por peticiones recibidas
  • backend_success_ratio: ratio conexiones exitosas con servidor backend
  • work_thread_ratio: ratio hilos trabajando por hilos creados

Realizando cambios en el archivo de configuración del plugin podremos ajustar la monitorización a nuestras necesidades, añadiendo o quitando variables o métricas a monitorizar.Para que el agente de Pandora FMS ejecute el plugin de forma periodica es necesario añadir un nuevo módulo plugin al archivo de configuración. Para comenzar la monitorización editaremos el archivo de configuración del agente (por defecto en “/etc/pandora/pandora_agent.conf”), añadiendo la siguiente línea:
module_plugin /etc/pandora/plugins/varnish-plugin.pl /etc/pandora/plugins/varnish-plugin.conf

Una vez que el agente envíe los datos al servidor de Pandora, aparecerán los módulos con sus diferentes valores.

En este ejemplo además de monitorizar las variables relativas al proxy cache Varnish (backend_fail, backend_success_ratio, cache_miss, etc), hemos añadido otras relativas al funcionamiento de la máquina (CPU User, Load Average, Mem Usage y Proctotal). Con esta configuración obtenemos una visión global del rendimiento y los recursos consumidos por el servidor de cache.

vcache4

En este momento Pandora está recogiendo datos con los que posteriormente podremos crear informes para evaluar la evolución del rendimiento.

Como además queremos usar las funcionalidades de alerta de Pandora FMS, necesitaremos realizar algunas configuraciones adicionales a los módulos. El siguiente paso es configurar los valores que definen el estado del módulo. Estos valores los definiremos sobre los módulos que representan ratios ya que dan un valor normalizado entre 0 y 100 y nos aportan la información suficiente para evaluar, en una primera instancia, el rendimiento de Varnish. La configuración de los umbrales sería la siguiente:

Modulo Min Warn Max Warn Min Crit Max Crit
backend_success_ratio 51 70 0 50
connect_accept_ratio 0 5 20 100
hit_ratio 51 70 0 50
work_thread_ratio 51 70 0 50
Mem Usage 80 90 91 100
CPU User 85 90 91 100

Con esta configuración, por ejemplo, el módulo hit_ratio pasará a un estado Crítico cuando el número de aciertos en la cache este entre el 0% y 50%, y pasará a un estado de Advertencia cuando el número de aciertos en cache sea de entre 51% y 70%. Además hemos definido unos umbrales para poder configurar alertas sobre los módulos de sistemas, en concreto sobre el uso de CPU y memoria. Ahora que los módulos tiene definidos los estados, podemos crear las diferentes alertas para que Pandora nos avise cuando detecte algún problemas.

Hemos definido diferentes métodos de aviso según sea el estado más o menos crítico. De tal forma que para los menos críticos, Pandora enviará un email a la lista de los administradores de sistemas y para los más críticos, enviará un SMS a los jefes y encargados de la arquitectura TI del sitio web.

Llegados a este punto tenemos configurada una monitorización reactiva de nuestro servidor de cache Varnish, es decir, somos alertados de los problemas y reaccionamos para buscar la solución. Pero, lo que buscamos a la hora de monitorizar nuestro servidor Varnish es una monitorización proactiva y para ello nos debemos fijar en las tendencias y actuar en consecuencia.

Para poder visualizar las tendencias de una forma sencilla, Pandora FMS ofrece la posibilidad de crear informes con la información agrupada en una sola vista. En este caso hemos creado un informe en el que agrupamos información sobre los parámetros de rendimiento de Varnish junto con los parámetros de rendimiento del sistema.

vcache5
vcache6

Además, Pandora FMS permite programar el envío de informes por email, por ejemplo cada semana o cada mes. De tal forma que tendremos un estudio de tendencias sobre Varnish de forma automática en nuestro email, sin necesidad de entrar a la consola de Pandora FMS.

vcache7

Conclusión

Con esta configuración conseguimos ser alertados ante fallos o caídas de rendimiento en nuestro servidor Varnish Cache. Gracias a las funcionalidades de alerta estaremos informados de cualquier problema que pueda surgir en nuestra aplicación web referente al cache. Por medio de los informes podremos ver las tendencias y realizar un mantenimiento preventivo del servidor para evitar fallos futuros. Esta monitorización nos permitirá estar protegidos ante cuellos de botella que ralenticen el sistema de forma inevitable, ya que Varnish es nuestro único punto de entrada y recibe todo el tráfico web.