[comment]: # translation:outdated

[comment]: # ({510ac9cc-510ac9cc})
#2 Expresión de activación

[comment]: # ({/510ac9cc-510ac9cc})

[comment]: # ({107cd0e3-473bcd5e})
#### Descripción general

Las expresiones utilizadas en los [iniciadores](/manual/config/triggers) son muy
flexibles. Puede utilizarlas para crear pruebas lógicas complejas relacionadas con las
estadísticas monitoreadas.

Una expresión simple utiliza una **función** que se aplica a la métrica con
algunos parámetros. La función devuelve un resultado que se compara con el umbral, utilizando un operador y una constante.

La sintaxis de una expresión simple y útil es
`function(/host/key,parameter)<operator><constant>`.

Por ejemplo:

    min(/Zabbix server/net.if.in[eth0,bytes],5m)>100K

se activará si la cantidad de bytes recibidos durante los últimos cinco
minutos siempre fue superior a 100 kilobytes.

Si bien la sintaxis es exactamente la misma, desde el punto de vista funcional
hay dos tipos de expresiones de activación:

-   expresión del problema: define las condiciones del problema
-   expresión de recuperación (opcional): define condiciones adicionales de
la resolución del problema

Al definir una expresión de problema sola, esta expresión se utilizará
tanto como umbral del problema como umbral de recuperación del problema. Tan pronto como la expresión del problema se evalúa como VERDADERA, hay un problema. Tan pronto como la expresión del problema se evalúa como FALSA, el
problema se resuelve.

Al definir tanto la expresión del problema como la expresión de recuperación complementaria, la resolución del problema se vuelve más compleja: no solo la expresión del
problema tiene que ser FALSA, sino que también la expresión de recuperación tiene que ser VERDADERA. Esto es útil para crear [histéresis](#histéresis) y evitar
la oscilación del iniciador.

:::noteclassic
No resulta productivo utilizar la macro {TRIGGER.VALUE} en una expresión de recuperación porque esta expresión solo se evalúa cuando el iniciador está en el estado "Problema". En consecuencia, {TRIGGER.VALUE} siempre se resolverá en "1" (que indica un estado "Problema") mientras se evalúa la expresión.
:::

[comment]: # ({/107cd0e3-473bcd5e})

[comment]: # ({d4e5ef03-d4e5ef03})
#### Funciones

Las funciones permiten calcular los valores recogidos (promedio, mínimo,
máximo, suma), buscar cadenas, hacer referencia a la hora actual y otros factores.

Se incluye una lista completa de [funciones admitidas](/manual/appendix/functions).
disponible.

Por lo general, las funciones devuelven valores numéricos para comparar. al regresar
cadenas, la comparación es posible con **=** y **<>**
operadores (ver [ejemplo](#example_14)).

[comment]: # ({/d4e5ef03-d4e5ef03})

[comment]: # ({b255de16-b255de16})
#### Parámetros de la función

Los parámetros de función permiten especificar:

- clave de host y elemento (funciones que hacen referencia únicamente al historial del elemento del host)
- parámetros específicos de la función
- otras expresiones (no disponible para funciones que hacen referencia al host)
    historial de elementos, consulte [otras expresiones](#other_expressions) para
    ejemplos)

La clave del host y del elemento se puede especificar como `/host/key`. el referenciado
el elemento debe estar en un estado compatible (excepto para la función **nodata()**,
que también se calcula para artículos no admitidos).

Mientras que otras expresiones de activación como parámetros de función se limitan a
funciones no históricas en disparadores, esta limitación no se aplica en
[elementos calculados](/manual/config/items/itemtypes/calculado).

[comment]: # ({/b255de16-b255de16})

[comment]: # ({42e3b569-cf9e09bb})
##### Parámetros específicos de la función

Los parámetros específicos de la función se colocan después de la clave de la métrica y van separados de la clave de la métrica por una coma. Ver las [funciones
compatibles](/manual/appendix/functions) para obtener una lista completa de estos parámetros.

La mayoría de las funciones numéricas aceptan el tiempo como parámetro. Puede utilizar
segundos o [sufijos de tiempo](/manual/apendix/suffixes) para indicar el tiempo.
Precedido por un hashtag, el parámetro tiene un significado diferente:

|Expresión|Descripción|
|----------|-----------|
|**sum**(/host/key,**10m)**|Suma de valores en los últimos 10 minutos.|
|**sum**(/host/key,**\#10)**|Suma de los últimos diez valores.|

Los parámetros con un hashtag tienen un significado diferente con la función
**last**: denotan el enésimo valor anterior, por lo que, dados los valores 3, 7,
2, 6, 5 (del más reciente al menos reciente):

-   `last(/host/key,#2)` devolvería '7'
-   `last(/host/key,#5)` devolvería '5'

[comment]: # ({/42e3b569-cf9e09bb})

[comment]: # ({983388a2-6699e631})
##### Desplazamiento de hora

Se admite un desplazamiento de tiempo opcional con el tiempo o el recuento de valores como 
parámetro de función. Este parámetro permite referenciar datos de un
período de tiempo en el pasado.

El desplazamiento de hora comienza con 'now', especificando la hora actual, y es
seguido de `+N<unidad de tiempo>` o `-N<unidad de tiempo>` - para sumar o restar N
unidades de tiempo

Por ejemplo, `avg(/host/key,1h:now-1d)` devolverá el valor promedio
durante una hora hace un día.

::: noteimportant
El desplazamiento de hora especificado en meses (M) y años (y) solo se admite para [funciones de tendencia](/manual/appendix/functions/trends).
Otras funciones admiten segundos (s), minutos (m), horas (h), días (d) y semanas (w).
:::

**Desplazamiento de tiempo con períodos de tiempo absolutos**

Se admiten períodos de tiempo absolutos en el parámetro de cambio de hora, por ejemplo, medianoche
a medianoche por un día, de lunes a domingo por una semana, del primer al último día del
mes por un mes.

El desplazamiento de tiempo para períodos de tiempo absolutos comienza con "now", especificando la
hora actual, y va seguido de cualquier número de operaciones de tiempo:
`/<unidad de tiempo>` - define el principio y el final de la unidad de tiempo,
por ejemplo, de medianoche a medianoche para un día, `+N<unidad de tiempo>` o
`-N<unidad de tiempo>` - para sumar o restar N unidades de tiempo.

Tenga en cuenta que el valor del cambio de tiempo puede ser mayor o igual a 0,
mientras que el valor mínimo del período de tiempo es 1.

|Parámetro|Descripción|
|--|--------|
|1d:now/d|Ayer|
|1d:now/d+1d|Hoy|
|2d:now/d+1d|Últimos 2 días|
|1s:now/s|La semana pasada|
|1s:now/s+1s|Esta semana|

[comment]: # ({/983388a2-6699e631})

[comment]: # ({c5d3ec54-c5d3ec54})
##### Otras expresiones

Los parámetros de función pueden contener otras expresiones, como en la siguiente
sintaxis:

    min(min(/host/clave,1h),min(/host2/key2,1h)*10)

Tenga en cuenta que no se pueden usar otras expresiones, si la función hace referencia a
historial de artículos. Por ejemplo, la siguiente sintaxis no está permitida:

~~`min(/host/clave,#5*10)`~~

[comment]: # ({/c5d3ec54-c5d3ec54})

[comment]: # ({6f8e2042-10bc91a2})
#### Operadores

Los siguientes operadores son compatibles con los activadores **(en orden descendente
prioridad de ejecución)**:

|Prioridad|Operador|Definición|**Notas para [valores desconocidos](/manual/config/triggers/expression#expressions_with_unknown-operands)**|Forzar que el operando de conversión flote ^**1**^|
|-|-|----|----------------|--|
|**1**|**-**|Unario menos|**-**Desconocido → Desconocido|Sí|
|**2**|**no**|NO lógico|**no** Desconocido → Desconocido|Sí|
|**3**|**\***|Multiplicación|0 **\*** Desconocido → Desconocido<br>(sí, Desconocido, no 0 - para no perder<br>Desconocido en operaciones aritméticas)<br >1.2 **\*** Desconocido → Desconocido|Sí|
|<|**/**|División|Desconocido **/** 0 → error<br>Desconocido **/** 1.2 → Desconocido<br>0.0 **/** Desconocido → Desconocido|Sí|
|**4**|**+**|Aritmética más|1.2 **+** Desconocido → Desconocido|Sí|
|<|**-**|Aritmética menos|1.2 **-** Desconocido → Desconocido|Sí|
|**5**|**\<**|Menos de. El operador se define como:<br><br>A<B ⇔ (A<B-0.000001)|1.2 **<** Desconocido → Desconocido|Sí|
|<|**<=**|Menor o igual a. El operador se define como:<br><br>A<=B ⇔ (A≤B+0.000001)|Desconocido **<=** Desconocido → Desconocido|Sí|
|<|**>**|Más que. El operador se define como:<br><br>A>B ⇔ (A>B+0.000001)| |Sí|
|<|**>=**|Mayor o igual a. El operador se define como:<br><br>A>=B ⇔ (A≥B-0.000001)| |Sí|
|**6**|**=**|Es igual. El operador se define como:<br><br>A=B ⇔ (A≥B-0.000001) y (A≤B+0.000001)| |No ^**1**^|
|<|**<>**|No iguales. El operador se define como:<br><br>A<>B ⇔ (A<B-0.000001) o (A>B+0.000001)| |No ^**1**^|
|**7**|**y**|Y lógico|0 **y** Desconocido → 0<br>1 **y** Desconocido → Desconocido<br>Desconocido **y** Desconocido → Desconocido| Sí|
|**8**|**o**|Lógico O|1 **o** Desconocido → 1<br>0 **o** Desconocido → Desconocido<br>Desconocido **o** Desconocido → Desconocido| Sí|

^**1**^ El operando de cadena todavía se convierte en numérico si:

- otro operando es numérico
- se utiliza un operador distinto de **=** o **<>** en un operando

(Si la conversión falla, el operando numérico se convierte en un operando de cadena y
ambos operandos se comparan como cadenas).

Los operadores **no**, **y** y **o** distinguen entre mayúsculas y minúsculas y deben estar en
minúscula. También deben estar rodeados de espacios o paréntesis.

Todos los operadores, excepto unario **-** y **not**, tienen operación de izquierda a derecha.
asociatividad. Unario **-** y **not** no son asociativos (es decir
**-(-1)** y **not (not 1)** deben usarse en lugar de **--1** y
**no no 1**).

Resultado de la evaluación:

- **<**, **<=**, **>**, **>=**, **=**, **<>**
    Los operadores producirán '1' en la expresión de activación si el valor especificado
    La relación es verdadera y '0' si es falsa. Si al menos un operando es
    Desconocido el resultado es Desconocido;
- **y** para operandos conocidos producirá '1' si ambos operandos
    comparar desigual con '0'; en caso contrario, da '0'; por desconocido
    operandos **y** produce '0' solo si un operando se compara igual a
    '0'; de lo contrario, arroja 'Desconocido';
- **o** para operandos conocidos producirá '1' si cualquiera de sus operandos
    comparar desigual con '0'; en caso contrario, da '0'; por desconocido
    operandos **o** produce '1' solo si un operando no es igual a
    '0'; de lo contrario, arroja 'Desconocido';
- El resultado del operador de negación lógica **no** para un valor conocido
    el operando es '0' si el valor de su operando no es igual a '0';
    '1' si el valor de su operando se compara con '0'. Para desconocido
    El operando **no** produce 'Desconocido'.

[comment]: # ({/6f8e2042-10bc91a2})

[comment]: # ({195c3f4f-195c3f4f})
#### Almacenamiento en caché de valores

Los valores requeridos para la evaluación del disparador son almacenados en caché por el servidor Zabbix.
Debido a este disparador, la evaluación provoca una mayor carga de la base de datos para
algún tiempo después de que el servidor se reinicia. La caché de valores no se borra cuando
los valores del historial del artículo se eliminan (ya sea manualmente o por el ama de llaves), por lo que
el servidor usará los valores almacenados en caché hasta que sean más antiguos que el tiempo
períodos definidos en las funciones de activación o el servidor se reinicia.

[comment]: # ({/195c3f4f-195c3f4f})

[comment]: # ({abac99e3-abac99e3})
#### Ejemplos de disparadores

[comment]: # ({/abac99e3-abac99e3})

[comment]: # ({17b607dc-17b607dc})
##### Ejemplo 1

La carga del procesador es demasiado alta en el servidor Zabbix.

    último(/Servidor Zabbix/sistema.cpu.cargar[todos,avg1])>5

Al usar la función 'last()', estamos haciendo referencia a la más reciente
valor. `/Zabbix server/system.cpu.load[all,avg1]` da un nombre corto de
el parámetro monitoreado. Especifica que el host es 'servidor Zabbix'
y la clave que se supervisa es 'system.cpu.load\[all,avg1\]'. Finalmente,
`>5` significa que el gatillo está en el estado PROBLEMA siempre que sea más
La medición reciente de la carga del procesador del servidor Zabbix es superior a 5.

[comment]: # ({/17b607dc-17b607dc})

[comment]: # ({9a129732-9a129732})
##### Ejemplo 2

www.example.com está sobrecargado.

    last(/www.example.com/system.cpu.load[all,avg1])>5 o min(/www.example.com/system.cpu.load[all,avg1],10m)>2

La expresión es verdadera cuando la carga actual del procesador es más
de 5 o la carga del procesador fue superior a 2 durante los últimos 10 minutos.

[comment]: # ({/9a129732-9a129732})

[comment]: # ({8710cd40-49592749})
##### Ejemplo 3

/etc/passwd ha sido cambiado.

    last(/www.example.com/vfs.file.cksum[/etc/passwd],#1)<>last(/www.example.com/vfs.file.cksum[/etc/passwd],#2 )

La expresión es verdadera cuando el valor anterior de /etc/passwd checksum
es distinto del más reciente.

Expresiones similares podrían ser útiles para monitorear cambios en archivos
importantes, como /etc/passwd, /etc/inetd.conf, /kernel, etc.

[comment]: # ({/8710cd40-49592749})

[comment]: # ({46e72843-46e72843})
##### Ejemplo 4

Alguien está descargando un archivo grande de Internet.

Uso de la función min:

    min(/www.ejemplo.com/net.if.in[eth0,bytes],5m)>100K

La expresión es verdadera cuando el número de bytes recibidos en eth0 es mayor
de 100 KB en los últimos 5 minutos.

[comment]: # ({/46e72843-46e72843})

[comment]: # ({7956e04e-7956e04e})
##### Ejemplo 5

Ambos nodos del servidor SMTP en clúster están inactivos.

Tenga en cuenta el uso de dos hosts diferentes en una expresión:

    último(/smtp1.ejemplo.com/net.tcp.servicio[smtp])=0 y último(/smtp2.ejemplo.com/net.tcp.servicio[smtp])=0

La expresión es verdadera cuando ambos servidores SMTP están inactivos en ambos
smtp1.ejemplo.com y smtp2.ejemplo.com.

[comment]: # ({/7956e04e-7956e04e})

[comment]: # ({62cfb014-62cfb014})
##### Ejemplo 6

El agente de Zabbix debe actualizarse.

Uso de la función buscar():

    find(/ejemplo.ejemplo.com/agente.version,"me gusta","beta8")=1

La expresión es verdadera si el agente Zabbix tiene la versión beta8.

[comment]: # ({/62cfb014-62cfb014})

[comment]: # ({567b88a9-567b88a9})
##### Ejemplo 7

El servidor es inalcanzable.

    cuenta(/ejemplo.ejemplo.com/icmpping,30m,,"0")>5

La expresión es verdadera si el host "example.example.com" es inalcanzable más
de 5 veces en los últimos 30 minutos.

[comment]: # ({/567b88a9-567b88a9})

[comment]: # ({2f13cb92-2f13cb92})
##### Ejemplo 8

No hay latidos en los últimos 3 minutos.

Uso de la función nodata():

    nodata(/ejemplo.ejemplo.com/tick,3m)=1

Para hacer uso de este activador, 'tick' debe definirse como un Zabbix
[trampero](/manual/config/items/itemtypes/trapper) elemento. El anfitrión debe
envíe periódicamente datos para este artículo usando zabbix\_sender. Si no hay datos
recibido dentro de los 180 segundos, el valor de activación se convierte en PROBLEMA.

*Tenga en cuenta* que 'nodata' se puede utilizar para cualquier tipo de elemento.

[comment]: # ({/2f13cb92-2f13cb92})

[comment]: # ({8fe70766-2c48905a})
##### Ejemplo 9

Actividad de la CPU durante la noche.

Uso de la función time():

    min(/Zabbix server/system.cpu.load[all,avg1],5m)>2 and time()<060000

El iniciador puede cambiar su estado a problemático solo por la noche (00:00 - 06:00).

[comment]: # ({/8fe70766-2c48905a})

[comment]: # ({a6c0840e-7e0ba13a})
##### Ejemplo 10

Actividad de la CPU en cualquier momento con excepción.

Uso de la función time() y operador **not**:

    min(/zabbix/system.cpu.load[all,avg1],5m)>2
    and not (dayofweek()=7 and time()>230000)
    and not (dayofweek()=1 and time()<010000)

El iniciador puede cambiar su estado a problema en cualquier momento,
excepto en 2 horas durante el cambio de semana (domingo, 23:00 - lunes, 01:00).

[comment]: # ({/a6c0840e-7e0ba13a})

[comment]: # ({409b4657-0e6bfc51})
##### Ejemplo 11

Compruebe si la hora local del cliente está sincronizada con la hora del servidor Zabbix.

Uso de la función fuzzytime():

    fuzzytime(/MySQL_DB/system.localtime,10s)=0

El iniciador cambiará al estado de problema en caso de que la hora local esté activada.
El servidor MySQL\_DB y el servidor Zabbix difieren en más de 10 segundos. Tenga en cuenta
que 'system.localtime' debe configurarse como [comprobación
pasiva](/manual/appendix/items/activepassive#passive_checks).

[comment]: # ({/409b4657-0e6bfc51})

[comment]: # ({9efdd3fc-47b2e2fd})
##### Ejemplo 12

Comparando la carga promedio actual con la carga promedio durante el mismo tiempo de
ayer (usando el cambio de tiempo como `now-1d`).

    avg(/server/system.cpu.load,1h)/avg(/server/system.cpu.load,1h:now-1d)>2

Este iniciador se activará si la carga promedio de la última hora supera la
carga promedio de la misma hora ayer en más de dos veces.

[comment]: # ({/9efdd3fc-47b2e2fd})

[comment]: # ({f40f2b77-bb0f5278})
##### Ejemplo 13

Usar el valor de otra métrica para obtener un umbral de activación:

    last(/Template PfSense/hrStorageFree[{#SNMPVALUE}])<last(/Template PfSense/hrStorageSize[{#SNMPVALUE}])*0.1

El iniciador se activará si el almacenamiento gratuito cae por debajo del 10 por ciento.

[comment]: # ({/f40f2b77-bb0f5278})

[comment]: # ({4a0b6e62-0cc34ec7})
##### Ejemplo 14

Usar [resultado de la evaluación](#operators) para obtener el número de iniciadores
que superan un umbral:

    (last(/server1/system.cpu.load[all,avg1])>5) + (last(/server2/system.cpu.load[all,avg1])>5) + (last(/server3/system.cpu.load[all,avg1])>5)>=2

El iniciador se activará si al menos dos de los iniciadores en la expresión
se encuentran en un estado problemático.

[comment]: # ({/4a0b6e62-0cc34ec7})

[comment]: # ({37eb6db6-adfc6b9d})
##### Ejemplo 15

Comparar valores de cadena de dos métricas: aquí los operandos son funciones que
retornan cadenas.

Problema: cree una alerta si la versión de Ubuntu es diferente en diferentes
equipos

    last(/NY Zabbix server/vfs.file.contents[/etc/os-release])<>last(/LA Zabbix server/vfs.file.contents[/etc/os-release])

[comment]: # ({/37eb6db6-adfc6b9d})

[comment]: # ({f3a35db5-c2b4949f})
##### Ejemplo 16

Comparando dos valores de cadena: los operandos son:

- una función que devuelve una cadena
- una combinación de macros y cadenas

Problema: detectar cambios en la consulta de DNS

La clave de la métrica es:

    net.dns.record[8.8.8.8,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1]

con macros definidas como

    {$WEBSITE_NAME} = example.com
    {$DNS_RESOURCE_RECORD_TYPE} = MX

y normalmente devuelve:

    example.comMX0 mail.example.com

Así que nuestra expresión de activación para detectar si el resultado de la consulta de DNS se desvió
del resultado esperado es:

    last(/Zabbix server/net.dns.record[8.8.8.8,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1])<>"{$WEBSITE_NAME}{$DNS_RESOURCE_RECORD_TYPE}0 mail.{$WEBSITE_NAME}"

Observe las comillas alrededor del segundo operando.

[comment]: # ({/f3a35db5-c2b4949f})

[comment]: # ({6ae6282c-60fad4fc})
##### Ejemplo 17

Comparando dos valores de cadena, los operandos son:

- una función que devuelve una cadena
- una cadena constante con caracteres especiales \\ y "

Problema: detecta si el contenido del archivo `/tmp/hello` es igual a:

    \" //hello ?\"

Opción 1) escribir la cadena directamente

    last(/Zabbix server/vfs.file.contents[/tmp/hello])="\\\" //hello ?\\\""

Observe cómo se escapan los caracteres \\ y " cuando se compara la cadena
directamente.

Opción 2) usar una macro

    {$HELLO_MACRO} = \" //hello ?\"

en la expresión:

    last(/Zabbix server/vfs.file.contents[/tmp/hello])={$HELLO_MACRO}

[comment]: # ({/6ae6282c-60fad4fc})

[comment]: # ({88460166-6906462b})
##### Ejemplo 18

Comparación de períodos de largo plazo.

Problema: la carga del servidor Exchange aumentó más del 10% el mes pasado

    trendavg(/Exchange/system.cpu.load,1M:now/M)>1.1*trendavg(/Exchange/system.cpu.load,1M:now/M-1M)

También puede usar el campo de [nombre de evento](/manual/config/triggers/trigger#configuration)  en la
configuración del iniciador para crear un mensaje de alerta significativo, por ejemplo para
recibir algo como

`"La carga del servidor Exchange aumentó un 24% en julio (0,69) en comparación con junio (0,56)"`

el nombre del evento debe definirse como:

    La carga del servidor {HOST.HOST} aumentó en {{?100*trendavg(//system.cpu.load,1M:now/M)/trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(0)}% en {{TIME}.fmttime(%B,-1M)} ({{?trendavg(//system.cpu.load,1M:now/M)}.fmtnum(2)} ) en comparación con {{TIME}.fmttime(%B,-2M)} ({{?trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(2)})

También es útil permitir el cierre manual en la configuración del iniciador para
este tipo de problema.

[comment]: # ({/88460166-6906462b})

[comment]: # ({3f1b1c81-3f1b1c81})
#### Histéresis

A veces se necesita un intervalo entre el problema y los estados de recuperación,
en lugar de un simple umbral. Por ejemplo, si queremos definir un
disparador que informa un problema cuando la temperatura de la sala del servidor sube
20°C y queremos que permanezca en el estado problemático hasta que la temperatura
cae por debajo de 15°C, un simple umbral de activación a 20°C no será suficiente.

En su lugar, necesitamos definir una expresión desencadenante para el evento del problema.
primero (temperatura superior a 20°C). Entonces necesitamos definir un adicional
condición de recuperación (temperatura por debajo de 15°C). Esto se hace definiendo un
parámetro *Recovery expression* adicional cuando
[definiendo](/manual/config/triggers/trigger) un disparador.

En este caso, la recuperación del problema se llevará a cabo en dos pasos:

- Primero, la expresión del problema (temperatura superior a 20°C) deberá
    evaluar a FALSO
- En segundo lugar, la expresión de recuperación (temperatura inferior a 15°C) tendrá
    para evaluar a VERDADERO

La expresión de recuperación se evaluará solo cuando el evento del problema sea
resuelto primero.

::: nota de advertencia
La expresión de recuperación siendo VERDADERA por sí sola no
resolver un problema si la expresión del problema sigue siendo VERDADERA!
:::

[comment]: # ({/3f1b1c81-3f1b1c81})

[comment]: # ({942a7e0e-942a7e0e})
##### Ejemplo 1

La temperatura en la sala de servidores es demasiado alta.

Expresión del problema:

    último(/servidor/temp)>20

Expresión de recuperación:

    último(/servidor/temp)<=15

[comment]: # ({/942a7e0e-942a7e0e})

[comment]: # ({bddf0717-bddf0717})
##### Ejemplo 2

El espacio libre en disco es demasiado bajo.

Expresión del problema: son menos de 10 GB durante los últimos 5 minutos

    max(/servidor/vfs.fs.tamaño[/,gratis],5m)<10G

Expresión de recuperación: son más de 40 GB durante los últimos 10 minutos

    min(/servidor/vfs.fs.tamaño[/,gratis],10m)>40G

[comment]: # ({/bddf0717-bddf0717})

[comment]: # ({4158a8e3-6fc2eb1c})
#### Expresiones con operandos desconocidos

Generalmente, un operando desconocido (como una métrica no soportada) en la expresión representará inmediatamente el valor del iniciador como "Desconocido".

Sin embargo, en algunos casos se admiten operandos desconocidos (métricas no soportadas, errores de función) en la evaluación de expresiones:

-   La función `nodata()` se evalúa independientemente de si la métrica al que se hace referencia está soportada o no.
-   Las expresiones lógicas con OR y AND se pueden evaluar con valores conocidos
    en dos casos independientemente de operandos desconocidos:
    - **Caso 1**: "`1 o alguna_función(unsupported_item1) o alguna_función(unsupported_item2) o ...`" se puede evaluar con un resultado conocido ("1" o "Problema"),
    - **Caso 2**: "`0 y alguna_función(unsupported_item1) y alguna_función(unsupported_item2) y..." se pueden evaluar con un resultado conocido ("0" o "OK").\
        Zabbix intenta evaluar tales expresiones lógicas tomando
        métricas como operandos desconocidos. En los dos casos anteriores se producirá un valor conocido ("Problema" u "OK", respectivamente); en **todos los demás** casos, el iniciador se evaluará como "Desconocido".
- Si la evaluación de la función de una métrica soportada da como resultado un error,
    el valor de la función se vuelve "desconocido" y participa como operando desconocido
    en una evaluación adicional de la expresión.

Tenga en cuenta que los operandos desconocidos pueden "desaparecer" sólo en expresiones lógicas como las
descritas arriba. En expresiones aritméticas los operandos desconocidos siempre conducen al
resultado "Desconocido" (excepto la división por 0).

::: noteimportant
Una expresión que da como resultado "Desconocido" no cambia el estado del iniciador ("Problema/OK").
Entonces, si fue "Problema" (ver Caso 1), permanece en el mismo estado de problema incluso si la parte conocida
se resuelve ("1" se convierte en "0"), porque la expresión ahora se evalúa como "Desconocida".
y eso no cambia el estado de activación.
:::

Si una expresión de iniciador con varias métricas no soportadas se evalúa como
`Desconocido` el mensaje de error en la interfaz se refiere a la última
métrica no soportada evaluada.

[comment]: # ({/4158a8e3-6fc2eb1c})
