7 Monitorización web

Resumen

Con Zabbix puede comprobar varios aspectos de disponibilidad de sitios web.

Para realizar la supervisión web, el server de Zabbix debe estar inicialmente configurado con soporte para cURL (libcurl).

Para activar la supervisión web, debe definir escenarios web. Un escenario web consiste en una o varias solicitudes HTTP o "pasos". Los pasos se ejecutan periódicamente por el server de Zabbix en un orden predefinido. Si un host es supervisado por proxy, los pasos se ejecutan por el proxy.

Los escenarios web se asocian a hosts/templates de la misma manera que los items, triggers, etc. Esto significa que los escenarios web también pueden crearse a nivel de template y luego aplicarse a varios hosts de una sola vez.

La siguiente información se recopila en cualquier escenario web:

  • velocidad media de descarga por segundo para todos los pasos de todo el escenario
  • número del paso que falló
  • último mensaje de error

La siguiente información se recopila en cualquier paso de un escenario web:

  • velocidad de descarga por segundo
  • tiempo de respuesta
  • código de respuesta

Para más detalles, consulte items de supervisión web.

Los datos recopilados al ejecutar escenarios web se almacenan en la base de datos. Los datos se usan automáticamente para gráficos, triggers y notificaciones.

Zabbix también puede comprobar si una página HTML recuperada contiene una cadena predefinida. Puede ejecutar un inicio de sesión simulado y seguir una ruta de clics simulados del mouse en la página.

La supervisión web de Zabbix admite tanto HTTP como HTTPS. Al ejecutar un escenario web, Zabbix seguirá opcionalmente las redirecciones (consulte la opción Seguir redirecciones más abajo). El número máximo de redirecciones está codificado en 10 (usando la opción de cURL CURLOPT_MAXREDIRS). Todas las cookies se conservan durante la ejecución de un único escenario.

Configuración de un escenario web

Para configurar un escenario web:

  • Vaya a: Data collection → Hosts (o Templates)
  • Haga clic en Web en la fila del host/template
  • Haga clic en Create web scenario a la derecha (o en el nombre del escenario para editar un escenario existente)
  • Introduzca los parámetros del escenario en el formulario

La pestaña Scenario permite configurar los parámetros generales de un escenario web.

Todos los campos de entrada obligatorios están marcados con un asterisco rojo.

Parámetros del escenario:

Parameter Description
Name Nombre único del escenario.
Se admiten macros de usuario. Note que, si se usan macros de usuario, estas macros se dejarán sin resolver en los nombres de web monitoring item.
Update interval Con qué frecuencia se ejecutará el escenario.
Se admiten sufijos de tiempo, por ejemplo 30s, 1m, 2h, 1d.
Se admiten macros de usuario. Note que, si se usa una macro de usuario y su valor cambia (por ejemplo, 5m → 30s), la siguiente comprobación se ejecutará según el valor anterior (más adelante en el futuro con los valores del ejemplo).
Los nuevos escenarios web se comprobarán en los 60 segundos posteriores a su creación.
Attempts El número de intentos para ejecutar los pasos del escenario web. En caso de problemas de red (timeout, sin conectividad, etc.), Zabbix puede repetir la ejecución de un paso varias veces. El valor establecido afectará por igual a cada paso del escenario. Se pueden especificar hasta 10 intentos; el valor predeterminado es 1.
Note: Zabbix no repetirá un paso debido a un código de respuesta incorrecto o a la falta de coincidencia de una cadena requerida.
Agent Seleccione un agent cliente.
Zabbix se hará pasar por el navegador seleccionado. Esto es útil cuando un sitio web devuelve contenido diferente para distintos navegadores.
Se pueden usar macros de usuario en este campo.
HTTP proxy Puede especificar un proxy HTTP para usar, con el formato [protocol://][username[:password]@]proxy.example.com[:port].
Esto establece la opción cURL CURLOPT_PROXY.
El prefijo opcional protocol:// puede usarse para especificar protocolos de proxy alternativos (la compatibilidad con el prefijo de protocolo se añadió en cURL 7.21.7). Si no se especifica ningún protocolo, el proxy se tratará como un proxy HTTP.
De forma predeterminada, se usará el puerto 1080.
Si se especifica, el proxy sobrescribirá las variables de entorno relacionadas con proxy, como http_proxy, HTTPS_PROXY. Si no se especifica, el proxy no sobrescribirá las variables de entorno relacionadas con proxy. El valor introducido se pasa "tal cual", sin ninguna comprobación de validez.
También puede introducir una dirección de proxy SOCKS. Si especifica el protocolo incorrecto, la conexión fallará y el item pasará a no ser compatible.
Note que solo se admite autenticación simple con proxy HTTP.
Se pueden usar macros de usuario en este campo.
Variables Variables que pueden usarse en los pasos del escenario (URL, variables de post).
Tienen el siguiente formato:
{macro1}=valor1
{macro2}=valor2
{macro3}=regex:<expresión regular>
{macro4}=jsonpath:<jsonpath>
{macro5}=xmlxpath:<xmlxpath>
{macro6}={{macro}.function()} (consulte macro functions)
Por ejemplo:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
{url}=jsonpath:$.host_url
{status}=xmlxpath://host/response/status
{newvar}={{myvar}.btoa()}
Las macros pueden luego referenciarse en los pasos como {username}, {password}, {hostid}, etc. Zabbix las reemplazará automáticamente por los valores reales. Tenga en cuenta que las variables con regex: necesitan un paso para obtener el valor de la expresión regular, por lo que el valor extraído solo puede aplicarse al paso siguiente.
Si la parte del valor comienza con regex:, la parte posterior se trata como una expresión regular que busca en la página web y, si se encuentra, almacena la coincidencia en la variable. Debe haber al menos un subgrupo para que el valor coincidente pueda extraerse.
Se admiten macros de usuario y macros}.
Las variables se codifican automáticamente en URL cuando se usan en campos de consulta o en datos de formulario para variables de post, pero deben codificarse manualmente cuando se usan en post en bruto o directamente en la URL.
Headers Los encabezados HTTP se usan al realizar una solicitud. Se pueden usar encabezados predeterminados y personalizados.
Los encabezados se asignarán usando la configuración predeterminada según el tipo de Agent seleccionado en una lista desplegable a nivel de escenario, y se aplicarán a todos los pasos, salvo que se definan de forma personalizada a nivel de paso.
Debe tenerse en cuenta que definir el encabezado a nivel de paso descarta automáticamente todos los encabezados definidos previamente, excepto un encabezado predeterminado que se asigna al seleccionar 'User-Agent' en una lista desplegable a nivel de escenario.
No obstante, incluso el encabezado predeterminado 'User-Agent' puede sobrescribirse especificándolo a nivel de paso.
Para anular el encabezado a nivel de escenario, el encabezado debe nombrarse y atribuirse sin valor a nivel de paso.
Los encabezados deben enumerarse usando la misma sintaxis con la que aparecerían en el protocolo HTTP, opcionalmente usando algunas funciones adicionales admitidas por la opción cURL CURLOPT_HTTPHEADER.
Por ejemplo:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
Se admiten macros de usuario y macros}.
Enabled El escenario está activo si esta casilla está marcada; en caso contrario, está deshabilitado.

Tenga en cuenta que, al editar un escenario existente, hay dos botones adicionales disponibles en el formulario:

Crear otro escenario basado en las propiedades del existente.
Eliminar los datos históricos y de tendencias del escenario. Esto hará que el server ejecute el escenario inmediatamente después de eliminar los datos.

Si el campo HTTP proxy se deja vacío, otra forma de usar un proxy HTTP es establecer variables de entorno relacionadas con proxy.

Para comprobaciones HTTP, establezca la variable de entorno http_proxy para el usuario del server de Zabbix. Por ejemplo, http_proxy=http://proxy_ip:proxy_port.

Para comprobaciones HTTPS, establezca la variable de entorno HTTPS_PROXY. Por ejemplo, HTTPS_PROXY=http://proxy_ip:proxy_port. Hay más detalles disponibles ejecutando un comando de shell: # man curl.

La pestaña Steps permite configurar los pasos del escenario web. Para añadir un paso del escenario web, haga clic en Add en el bloque Steps.

Las macros de usuario secretas no deben usarse en las URL, ya que se resolverán como "******".

Configuración de pasos

Parámetros del paso:

Parámetro Descripción
Name Nombre único del paso.
Se admiten macros de usuario. Tenga en cuenta que, si se utilizan macros de usuario, estas macros quedarán sin resolver en los nombres de items de monitorización web.
URL URL a la que conectarse y de la que recuperar datos. Por ejemplo:
https://www.example.com
http://www.example.com/download
Los nombres de dominio pueden especificarse con caracteres Unicode. Se convierten automáticamente de punycode a ASCII al ejecutar el paso del escenario web.
El botón Parse puede utilizarse para separar de la URL los campos de consulta opcionales (como ?name=Admin&password=mypassword), moviendo los atributos y valores a Query fields para la codificación automática de URL.
Se pueden usar variables en la URL mediante la sintaxis {macro}. Las variables pueden codificarse manualmente para URL mediante la sintaxis {{macro}.urlencode()}.
Se admiten macros de usuario y macros}.
Limitado a 2048 caracteres.
Query fields Variables HTTP GET para la URL.
Se especifican como pares de atributo y valor.
Los valores se codifican automáticamente para URL. Los valores de las variables del escenario, macros de usuario o macros {HOST.*} se resuelven y luego se codifican automáticamente para URL. El uso de la sintaxis {{macro}.urlencode()} hará una doble codificación URL.
Se admiten macros de usuario y macros}.
Post Variables HTTP POST.
En el modo Form data, se especifican como pares de atributo y valor.
Los valores se codifican automáticamente para URL. Los valores de las variables del escenario, macros de usuario o macros {HOST.*} se resuelven y luego se codifican automáticamente para URL.
En el modo Raw data, los atributos/valores se muestran en una sola línea y se concatenan con el símbolo &.
Los valores sin procesar pueden codificarse/decodificarse manualmente para URL mediante la sintaxis {{macro}.urlencode()} o {{macro}.urldecode()}.
Por ejemplo: id=2345&userid={user}
Si {user} está definido como una variable del escenario web, se sustituirá por su valor cuando se ejecute el paso. Si desea codificar la variable para URL, sustituya {user} por {{user}.urlencode()}.
Se admiten macros de usuario y macros}.
Variables Variables a nivel de paso que pueden utilizarse para las funciones GET y POST.
Se especifican como pares de atributo y valor.
Las variables a nivel de paso sobrescriben las variables a nivel de escenario o las variables del paso anterior. Sin embargo, el valor de una variable a nivel de paso solo afecta al paso siguiente (y no al paso actual).
Tienen el siguiente formato:
{macro}=value
{macro}=regex:<regular expression>
Para más información, consulte la descripción de variables en el nivel de escenario.
Las variables se codifican automáticamente para URL cuando se usan en campos de consulta o datos de formulario para variables post, pero deben codificarse manualmente para URL cuando se usan en post sin procesar o directamente en la URL.
Headers Cabeceras HTTP personalizadas que se enviarán al realizar una solicitud.
Se especifican como pares de atributo y valor.
Una cabecera definida a nivel de paso se utilizará para ese paso en particular.
Debe tenerse en cuenta que definir la cabecera a nivel de paso descarta automáticamente todas las cabeceras definidas previamente, excepto una cabecera predeterminada que se asigna al seleccionar 'User-Agent' en una lista desplegable a nivel de escenario.
Sin embargo, incluso la cabecera predeterminada 'User-Agent' puede sobrescribirse especificándola a nivel de paso.
Por ejemplo, asignar el nombre a una cabecera, pero no establecer ningún valor, desactivará la cabecera predeterminada a nivel de escenario.
Se admiten macros de usuario y macros {HOST.*}.
Esto establece la opción cURL CURLOPT_HTTPHEADER.
Follow redirects Marque la casilla para seguir redirecciones HTTP.
Esto establece la opción cURL CURLOPT_FOLLOWLOCATION.
Retrieve mode Seleccione el modo de recuperación:
Body - recuperar solo el cuerpo de la respuesta HTTP
Headers - recuperar solo las cabeceras de la respuesta HTTP
Body and headers - recuperar el cuerpo y las cabeceras de la respuesta HTTP
Timeout Zabbix no dedicará más del tiempo establecido al procesamiento de la URL (desde un segundo hasta un máximo de 1 hora). En realidad, este parámetro define el tiempo máximo para establecer la conexión con la URL y el tiempo máximo para realizar una solicitud HTTP. Por lo tanto, Zabbix no dedicará más de 2 x Timeout segundos al paso.
Se admiten sufijos de tiempo, por ejemplo, 30s, 1m, 1h. Se admiten macros de usuario.
Required string Patrón de expresión regular requerido.
A menos que el contenido recuperado (HTML) coincida con el patrón requerido, el paso fallará. Si está vacío, no se realizará ninguna comprobación de la cadena requerida.
Por ejemplo:
Homepage of Zabbix
Welcome.*admin
Nota: No se admite en este campo la referencia a expresiones regulares creadas en el frontend de Zabbix.
Se admiten macros de usuario y macros}.
Required status codes Lista de códigos de estado HTTP esperados. Si Zabbix obtiene un código que no está en la lista, el paso fallará.
Si está vacío, no se realizará ninguna comprobación de los códigos de estado.
Por ejemplo: 200,201,210-299
Se admiten macros de usuario.

Cualquier cambio en los pasos del escenario web solo se guardará cuando se guarde el escenario completo.

Vea también un ejemplo real de cómo pueden configurarse los pasos de monitorización web.

Configuración de etiquetas

La pestaña Etiquetas permite definir etiquetas a nivel de escenario.

El etiquetado permite filtrar escenarios web y métricas de monitorización web.

Configuración de la autenticación

La pestaña Authentication permite configurar las opciones de autenticación del escenario. Un punto verde junto al nombre de la pestaña indica que algún tipo de autenticación HTTP está habilitada.

Parámetros de autenticación:

Parameter Description
HTTP authentication Seleccione la opción de autenticación:
None - no se usa autenticación;
Basic - se usa autenticación básica;
NTLM - se usa autenticación NTLM (Windows NT LAN Manager);
Kerberos - se usa autenticación Kerberos (consulte también: Configuración de Kerberos con Zabbix);
Digest - se usa autenticación Digest.
User Introduzca el nombre de usuario (hasta 255 caracteres).
Este campo está disponible si HTTP authentication está configurado en Basic, NTLM, Kerberos o Digest. Se admiten macros de usuario.
Password Introduzca la contraseña del usuario (hasta 255 caracteres).
Este campo está disponible si HTTP authentication está configurado en Basic, NTLM, Kerberos o Digest. Se admiten macros de usuario.
SSL verify peer Marque la casilla para verificar el certificado SSL del servidor web.
El certificado del servidor se tomará automáticamente de la ubicación de la autoridad de certificación (CA) del sistema. Puede sobrescribir la ubicación de los archivos CA mediante el parámetro de configuración SSLCALocation de server o proxy de Zabbix.
Esto establece la opción cURL CURLOPT_SSL_VERIFYPEER.
SSL verify host Marque la casilla para verificar que coincidan el campo Common Name o el campo Subject Alternate Name del certificado del servidor web.
Esto establece la opción cURL CURLOPT_SSL_VERIFYHOST.
SSL certificate file Nombre del archivo de certificado SSL utilizado para la autenticación del cliente. El archivo de certificado debe estar en formato PEM1. Si el archivo de certificado también contiene la clave privada, deje vacío el campo SSL key file. Si la clave está cifrada, especifique la contraseña en el campo SSL key password. El directorio que contiene este archivo se especifica mediante el parámetro de configuración SSLCertLocation de server o proxy de Zabbix.
En este campo se pueden usar macros HOST.* y macros de usuario.
Esto establece la opción cURL CURLOPT_SSLCERT.
SSL key file Nombre del archivo de clave privada SSL utilizado para la autenticación del cliente. El archivo de clave privada debe estar en formato PEM1. El directorio que contiene este archivo se especifica mediante el parámetro de configuración SSLKeyLocation de server o proxy de Zabbix.
En este campo se pueden usar macros HOST.* y macros de usuario.
Esto establece la opción cURL CURLOPT_SSLKEY.
SSL key password Contraseña del archivo de clave privada SSL.
En este campo se pueden usar macros de usuario.
Esto establece la opción cURL CURLOPT_KEYPASSWD.

[1] Zabbix solo admite archivos de certificado y de clave privada en formato PEM. Si tiene los datos de su certificado y clave privada en un archivo con formato PKCS #12 (normalmente con la extensión *.p12 o *.pfx), puede generar a partir de él el archivo PEM usando los siguientes comandos:

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Zabbix server detecta los cambios en los certificados sin necesidad de reiniciarse.

Si tiene el certificado de cliente y la clave privada en un solo archivo, especifíquelo en el campo "SSL certificate file" y deje vacío el campo "SSL key file". El certificado y la clave deben seguir estando en formato PEM. Combinar el certificado y la clave es sencillo:

cat client.crt client.key > client.pem

Visualización

Para ver los escenarios web configurados para un host, vaya a Monitoring → Hosts, localice el host en la lista y haga clic en el hipervínculo Web de la última columna. Haga clic en el nombre del escenario para obtener información detallada.

También se puede mostrar una vista general de los escenarios web en Dashboards mediante el widget de supervisión web.

Los resultados recientes de la ejecución del escenario web están disponibles en la sección Monitoring → Latest data.

Monitoreo extendido

A veces es necesario registrar el contenido de la página HTML recibida.
Esto es especialmente útil si falla algún paso de un escenario web.
El nivel de depuración 5 (trace) cumple ese propósito.
Este nivel se puede configurar en los archivos de configuración de server y proxy o mediante una opción de control en tiempo de ejecución (-R log_level_increase="http poller,N", donde N es el número del proceso).
Los siguientes ejemplos muestran cómo se puede iniciar el monitoreo extendido siempre que ya esté configurado el nivel de depuración 4:

# Increase log level of all http pollers:
zabbix_server -R log_level_increase="http poller"

# Increase log level of second http poller:
zabbix_server -R log_level_increase="http poller,2"

Si no se requiere el monitoreo web extendido, se puede detener usando la opción -R log_level_decrease.