El propósito de la plantilla es automatizar el monitoreo de servidores de un sistema de video vigilancia basado en registradores Trassir bajo el control del mismo software basado en Linux a través del servidor web SDK.
Trassir SDK se incluye en la configuración del servidor web, también debe especificar una contraseña allí. Según la
documentación del fabricante, no necesita crear una cuenta separada para tomar lecturas sobre el servidor.
Trassir SDK ofrece acceso al estado del servidor mediante solicitud
https://{ip }:{ }/health?password={ SDK}
Cuando abre este enlace a través de un navegador, aparece un mensaje que indica que el certificado utilizado no es seguro y debe seguir las instrucciones del navegador para continuar.
Para un ejemplo específico, en el cuerpo de respuesta obtenemos lo siguiente:
{ "disks": "1", "database": "1", "channels_total": "13", "channels_online": "13", "uptime": "882232", "cpu_load": "33.96", "network": "1", "automation": "1", "disks_stat_main_days": "16.41", "disks_stat_priv_days": "0.00", "disks_stat_subs_days": "16.41" } /* Meanings of values: -1 - undefined value 0 - bad health (error) 1 - good health (ok) Values for channels are channel counters. Value of cpu_load is given in percents.
La primera parte de la salida del carácter {al carácter} corresponde a la documentación y es una salida de formato JSON estandarizada, que corresponde a la documentación, y luego hay una descripción de la salida, que no se ajusta al estándar.
Anteriormente, para usar esta salida en el sistema de monitoreo Zabbix, tenía que escribir su propio script, que se usaría en el agente y obtendría los datos necesarios. Con este enfoque, debe almacenar el archivo de respuesta y monitorear su relevancia, o solicitar cada elemento por separado, es decir use 11 consultas en lugar de 1.
En la versión de Zabbix 4.0, ha aparecido un tipo de elemento de datos de agente de agente, que permite recibir datos a través de protocolos http y https y procesarlos, así como elementos dependientes, que se calculan a partir de los principales.
La idea es obtener una respuesta del servidor en un elemento de datos de texto y luego seleccionar los elementos de datos necesarios.
Inicialmente, definiremos macros para el número de puerto y la contraseña para la versatilidad y seguridad de nuestra plantilla.
Creamos una plantilla y agregamos un elemento de datos con el tipo "agente HTTP", una clave como se desee, la URL https: // {HOST.IP}: {$ TRASSIR_SDK_PORT} / health y el campo de solicitud de contraseña {$ TRASSIR_SDK_PASS}. Aquí {HOST.IP} es una macro que, al agregar una plantilla al host, se convertirá a la dirección IP del host.
Como ya hemos descubierto experimentalmente anteriormente, esta solicitud no cumple totalmente con el formato JSON, y simplemente no funciona para extraer datos de ella.
Usaremos la nueva funcionalidad de Zabbix y agregaremos la expresión regular \ {(\ n |.) * \} En la pestaña "preprocesamiento" de la plantilla del elemento de datos con la salida \ 0 que devolverá solo datos en formato JSON.
A quién le importa por qué esto es asíDesarrollar tales expresiones para principiantes es mucho más fácil en el
editor visual . En esta expresión, buscamos un carácter específico de la llave de apertura y, dado que en las expresiones regulares se usan estos corchetes, es necesario especificar la barra diagonal inversa antes del carácter. Los datos JSON pueden contener caracteres (en realidad no, pero omita este momento), así como saltos de línea. Estas opciones de caracteres que indican un punto o un carácter de control de salto de línea \ n se indican entre paréntesis con una barra vertical. Detrás de los corchetes hay un asterisco, que indica que el carácter encontrado o el avance de línea se puede repetir un número infinito de veces. Luego viene la llave de cierre. La salida \ 0 significa que se mostrarán todas las secuencias encontradas.
A continuación, se crea un elemento de datos dependiente para el cual el elemento de datos principal indica la respuesta recibida previamente en formato JSON y el preprocesamiento se indica con el paso "Ruta JSON" que le permite acceder a cualquier elemento de datos especificando la ruta JSON. En nuestro ejemplo, todos los datos están en el nivel superior, por lo que especificamos $ .disks y así sucesivamente para todos los elementos.
Solo resta crear desencadenantes que verifiquen si hay datos nuevos, su entrada en rangos normales, así como gráficos opcionales.
Resulta que recibimos datos de un sistema externo de manera muy fácil y rápida mediante métodos regulares de Zabbix, cuyo resultado no cumple totalmente con el estándar. La ausencia de scripts externos simplifica la comprensión del sistema de monitoreo y aumenta la facilidad de mantenimiento.
La plantilla especificada
está disponible en el portal de intercambio share.zabbix.com .