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:
o una 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/. |
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:
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:
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:
No cree diferentes macros de contexto que coincidan con la misma cadena para evitar un comportamiento indefinido.
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 ,
:
"
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 \
.\
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.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.