Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

3 Macros de usuario con contexto

Descripción general

Se puede utilizar un contexto opcional en las macros de usuario, lo que permite sobrescribir el valor por defecto con uno específico para el contexto.

El contexto se añade al nombre de la macro; la sintaxis depende de si el contexto es un valor de texto estático:

{$MACRO:"texto estático"}

o una expresión regular:

{$MACRO:regex:"expresión regular"} 

Tenga en cuenta que una macro con contexto de expresión regular solo puede definirse en la configuración de macros de usuario. Si el prefijo regex: se utiliza en otro lugar como contexto de macro de usuario, como en una expresión de disparador, se tratará como un contexto estático.

Las comillas en el contexto son opcionales (consulte también las notas importantes).

Ejemplos de contexto de macro:

Ejemplo Descripción
{$LOW_SPACE_LIMIT} Macro de usuario sin contexto.
{$LOW_SPACE_LIMIT:/tmp} Macro de usuario con contexto (cadena estática).
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} Macro de usuario con contexto (expresión regular). Igual que {$LOW_SPACE_LIMIT:/tmp}.
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} Macro de usuario con contexto (expresión regular). Coincide con todas las cadenas que comiencen con /var/log/.

Casos de uso

Se pueden definir macros de usuario con contexto para lograr umbrales más flexibles en las expresiones de disparadores (basados en los valores obtenidos por el descubrimiento de bajo nivel). Por ejemplo, puede definir las siguientes macros:

  • {$LOW_SPACE_LIMIT} = 10
  • {$LOW_SPACE_LIMIT:/home} = 20
  • {$LOW_SPACE_LIMIT:regex:"^/[a-z]+$"} = 30

Luego, una macro de descubrimiento de bajo nivel puede usarse como contexto de macro en un prototipo de disparador para el descubrimiento de sistemas de archivos montados:

last(/equipo/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}

Después del descubrimiento, se aplicarán diferentes umbrales de poco espacio en los disparadores dependiendo de los puntos de montaje o tipos de sistema de archivos descubiertos. Se generarán eventos de problema si:

  • la carpeta /home tiene menos del 20% de espacio libre en disco
  • las carpetas que coinciden con el patrón regexp (como /etc, /tmp o /var) tienen menos del 30% de espacio libre en disco
  • las carpetas que no coinciden con el patrón regexp y no son /home tienen menos del 10% de espacio libre en disco

Notas importantes

  • Si existe más de una macro de usuario con contexto, Zabbix intentará hacer coincidir primero las macros de contexto simples y luego las macros de contexto con expresiones regulares en un orden indefinido.

No cree diferentes macros de contexto que coincidan con la misma cadena para evitar un comportamiento indefinido.

  • Si no se encuentra una macro con su contexto en el equipo, en las plantillas enlazadas o globalmente, entonces se busca la macro sin contexto.
  • Solo se admiten macros de bajo nivel de descubrimiento en el contexto. Cualquier otra macro se ignora y se trata como texto plano.

Técnicamente, el contexto de la macro se especifica utilizando reglas similares a los parámetros de la clave de la métrica, excepto que el contexto de la macro no se analiza como varios parámetros si hay un carácter ,:

  • El contexto de la macro debe ir entre comillas " si el contexto contiene un carácter } o comienza con un carácter ". Las comillas dentro del contexto entre comillas deben escaparse con el carácter \.
  • El propio carácter \ no se escapa, lo que significa que es imposible tener un contexto entre comillas que termine con el carácter \: la macro {$MACRO:"a:\b\c\"} no es válida.
  • Se ignoran los espacios iniciales en el contexto, los espacios finales no:
    • Por ejemplo, {$MACRO:A} es lo mismo que {$MACRO: A}, pero no {$MACRO:A }.
  • Todos los espacios antes de las comillas iniciales y después de las comillas finales se ignoran, pero todos los espacios dentro de las comillas no:
    • Las macros {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } y {$MACRO: "A" } son iguales, pero las macros {$MACRO:"A"} y {$MACRO:" A "} no lo son.

Las siguientes macros son todas equivalentes, porque tienen el mismo contexto: {$MACRO:A}, {$MACRO: A} y {$MACRO:"A"}. Esto contrasta con las claves de las métricas, donde 'key[a]', 'key[ a]' y 'key["a"]' son semánticamente iguales, pero diferentes a efectos de unicidad.