Esta es una traducción de la página de documentación original en español. Ayúdanos a mejorarla.

#3 Macros de usuario con contexto

Visión general

Se puede usar un contexto opcional en usuario macros, lo que permite anular el valor predeterminado con uno específico del contexto.

El contexto se agrega 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 se puede definir en configuración de macros de usuario. Si el prefijo regex: se usa en otro lugar como contexto de macro de usuario, como en una expresión de activación, se tratará como contexto estático.

Las citas contextuales son opcionales (ver también important notas).

Ejemplos de macro contexto:

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 con el prefijo /var/log/.

Casos de uso

Las macros de usuario con contexto se pueden definir para lograr una mayor flexibilidad umbrales en expresiones desencadenantes (según los valores recuperados por descubrimiento de bajo nivel). Por ejemplo, puede definir las siguientes macros:

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

Entonces, una macro de descubrimiento de bajo nivel se puede usar como macro contexto en un desencadenar el prototipo para el descubrimiento del sistema de archivos montado:

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

Después del descubrimiento, se aplicarán diferentes umbrales de espacio bajo en se desencadena según los puntos de montaje descubiertos o los tipos de sistemas de archivos. Los eventos de problema se generarán si:

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

Notas importantes

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

::: nota de advertencia No cree macros de contexto diferentes que coincidan con el misma cadena para evitar un comportamiento indefinido. :::

  • Si una macro con su contexto no se encuentra en el host, las plantillas vinculadas o globalmente, entonces se busca la macro sin contexto.
  • Solo se admiten macros de descubrimiento de bajo nivel en el contexto. Ningún otras macros se ignoran y se tratan como texto sin formato.

Técnicamente, el contexto macro se especifica usando reglas similares a item key parámetros, excepto que el contexto macro es no se analiza como varios parámetros si hay un carácter ,:

  • El macro contexto debe citarse con " si el contexto contiene un } o comienza con un carácter ". Comillas dentro de comillas El contexto debe escaparse con el carácter \.
  • El carácter \ en sí mismo no se escapa, lo que significa que es imposible tener un contexto citado que termine con el carácter \ - la macro {$MACRO:"a:\b\c\"} no es válido.
  • Los espacios iniciales en contexto se ignoran, los espacios finales se 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 son ignorado, pero todos los espacios dentro de las comillas no son:
    • Macros {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } y {$MACRO: "A" } son iguales, pero las macros {$MACRO:"A"} y {$MACRO:" A "} no son.

Las siguientes macros son todas equivalentes, porque tienen el mismo contexto: {$MACRO:A}, {$MACRO: A} y {$MACRO:"A"}. esto es en contraste con claves de elemento, donde 'clave[a]', 'clave[ a]' y 'clave["a"]' son las mismo semánticamente, pero diferente para propósitos de unicidad.