Las expresiones utilizadas en iniciadores son muy flexibles. Puede utilizarlas para crear pruebas l¨®gicas complejas relacionadas con las estad¨ªsticas monitoreadas.
Una expresi¨®n simple utiliza una ´Ú³Ü²Ô³¦¾±¨®²Ô que se aplica a la m¨¦trica con algunos par¨¢metros. La ´Ú³Ü²Ô³¦¾±¨®²Ô 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(/Áú»¢¶Ä²© server/net.if.in[eth0,bytes],5m)>100K
se activar¨¢ si la cantidad de bytes recibidos durante los ¨²±ô³Ù¾±³¾´Çs 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 iniciador:
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 ³ó¾±²õ³Ù¨¦°ù±ð²õ¾±²õ y evitar la oscilaci¨®n del iniciador.
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.
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. 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).
Los par¨¢metros de ´Ú³Ü²Ô³¦¾±¨®²Ô permiten especificar:
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 ´Ú³Ü²Ô³¦¾±¨®²Ô nodata(), que tambi¨¦n se calcula para art¨ªculos no admitidos).
Mientras que otras expresiones de activaci¨®n como par¨¢metros de ´Ú³Ü²Ô³¦¾±¨®²Ô se limitan a funciones no hist¨®ricas en disparadores, esta limitaci¨®n no se aplica en elementos calculados.
Los par¨¢metros espec¨ªficos de la ´Ú³Ü²Ô³¦¾±¨®²Ô se colocan despu¨¦s de la clave de la m¨¦trica y se separan de la clave de la m¨¦trica por una coma. Ver las funciones compatibles para obtener una lista completa de estos par¨¢metros.
La mayor¨ªa de funciones num¨¦ricas aceptan el tiempo como par¨¢metro. Puede utilizar segundos o sufijos de tiempo para indicar la hora. Precedido por una almohadilla, el par¨¢metro tiene un significado diferente:
·¡³æ±è°ù±ð²õ¾±¨®²Ô | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô |
---|---|
sum(/host/key,10m) | Suma de valores en los ¨²±ô³Ù¾±³¾´Çs 10 minutos. |
sum(/host/key,#10) | Suma de los ¨²±ô³Ù¾±³¾´Çs diez valores. |
Los par¨¢metros con una almohadilla tienen un significado diferente con la ´Ú³Ü²Ô³¦¾±¨®²Ô ¨²±ô³Ù¾±³¾´Ç: 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'Se admite un desplazamiento de hora opcional con recuento de tiempo o valor como par¨¢metro de ´Ú³Ü²Ô³¦¾±¨®²Ô. 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.
El desplazamiento de hora especificado en meses (M) y a?os (y) solo se admite para funciones de tendencia. 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 desplazamiento de hora, por ejemplo, medianoche a medianoche por un d¨ªa, de lunes a domingo por una semana, del primer al ¨²±ô³Ù¾±³¾´Ç 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 desplazamiento de tiempo puede ser mayor o igual a 0, mientras que el valor m¨ªnimo del per¨ªodo de tiempo es 1.
±Ê²¹°ù¨¢³¾±ð³Ù°ù´Ç | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô |
---|---|
1d:now/d | Ayer |
1d:now/d+1d | Hoy |
2d:now/d+1d | ?ltimos 2 d¨ªas |
1w:now/s | La semana pasada |
1w:now/s+1s | Esta semana |
Los par¨¢metros de ´Ú³Ü²Ô³¦¾±¨®²Ô pueden contener otras expresiones, como en la siguiente sintaxis:
Tenga en cuenta que no se pueden usar otras expresiones, si la ´Ú³Ü²Ô³¦¾±¨®²Ô hace referencia a historial de art¨ªculos. Por ejemplo, la siguiente sintaxis no est¨¢ permitida:
min(/host/clave,#5*10)
Los siguientes operadores son compatibles con los iniciadores (en orden descendente por prioridad de ejecuci¨®n):
Prioridad | Operador | ¶Ù±ð´Ú¾±²Ô¾±³¦¾±¨®²Ô | Notas para valores desconocidos | Forzar que el operando de conversi¨®n flote 1 |
---|---|---|---|---|
1 | - | Unario menos | -Desconocido ¡ú Desconocido | ³§¨ª |
2 | not | NO l¨®gico | no Desconocido ¡ú Desconocido | ³§¨ª |
3 | * | ²Ñ³Ü±ô³Ù¾±±è±ô¾±³¦²¹³¦¾±¨®²Ô | 0 * Desconocido ¡ú Desconocido (s¨ª, Desconocido, no 0 - para no perder Desconocido en operaciones aritm¨¦ticas)<br >1.2 * Desconocido ¡ú Desconocido |
³§¨ª |
/ | ¶Ù¾±±¹¾±²õ¾±¨®²Ô | Desconocido / 0 ¡ú error Desconocido / 1.2 ¡ú Desconocido 0.0 / Desconocido ¡ú Desconocido |
³§¨ª | |
4 | + | Aritm¨¦tica m¨¢s | 1.2 + Desconocido ¡ú Desconocido | ³§¨ª |
- | Aritm¨¦tica menos | 1.2 - Desconocido ¡ú Desconocido | ³§¨ª | |
5 | < | Menos de. El operador se define como: A<B ? (A<B-0.000001) |
1.2 < Desconocido ¡ú Desconocido | ³§¨ª |
<= | Menor o igual que. El operador se define como: A<=B ? (A¡ÜB+0.000001) |
Desconocido <= Desconocido ¡ú Desconocido | ³§¨ª | |
> | M¨¢s que. El operador se define como: A>B ? (A>B+0.000001) |
³§¨ª | ||
>= | Mayor o igual a. El operador se define como: A>=B ? (A¡ÝB-0.000001) |
³§¨ª | ||
6 | = | Es igual. El operador se define como: A=B ? (A¡ÝB-0.000001) y (A¡ÜB+0.000001) |
No 1 | |
<> | No iguales. El operador se define como: A<>B ? (A<B-0.000001) o (A>B+0.000001) |
No 1 | ||
7 | and | Y l¨®gico | 0 y Desconocido ¡ú 0 1 y Desconocido ¡ú Desconocido Desconocido y Desconocido ¡ú Desconocido |
³§¨ª |
8 | or | L¨®gico O | 1 o Desconocido ¡ú 1 0 o Desconocido ¡ú Desconocido Desconocido o Desconocido ¡ú Desconocido |
³§¨ª |
1 El operando de cadena todav¨ªa se convierte en num¨¦rico si:
(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 not, and y or 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 asociatividad de izquierda a derecha. Unario - y not no son asociativos (es decir -(-1) y not (not 1) deben usarse en lugar de --1 y not not 1).
Resultado de la evaluaci¨®n:
La carga del procesador es demasiado alta en el servidor Áú»¢¶Ä²©.
Al usar la ´Ú³Ü²Ô³¦¾±¨®²Ô 'last()', estamos haciendo referencia a la m¨¢s reciente valor. /Áú»¢¶Ä²© server/system.cpu.load[all,avg1]
da un nombre corto de el par¨¢metro monitoreado. Especifica que el host es 'servidor Áú»¢¶Ä²©' 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 Áú»¢¶Ä²© es superior a 5.
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 ¨²±ô³Ù¾±³¾´Çs 10 minutos.
/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 del checksum de /etc/passwd difiere del m¨¢s reciente.
Expresiones similares podr¨ªan ser ¨²tiles para monitorear cambios en archivos importantes, como /etc/passwd, /etc/inetd.conf, /kernel, etc.
Alguien est¨¢ descargando un archivo grande de Internet.
Uso de la ´Ú³Ü²Ô³¦¾±¨®²Ô min:
La expresi¨®n es verdadera cuando el n¨²mero de bytes recibidos en eth0 es mayor de 100 KB en los ¨²±ô³Ù¾±³¾´Çs 5 minutos.
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 ¨²±ô³Ù¾±³¾´Ç(/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.
El agente de Áú»¢¶Ä²© debe actualizarse.
Uso de la ´Ú³Ü²Ô³¦¾±¨®²Ô buscar():
La expresi¨®n es verdadera si el agente Áú»¢¶Ä²© tiene la versi¨®n beta8.
El servidor es inalcanzable.
La expresi¨®n es verdadera si el host "example.example.com" es inalcanzable m¨¢s de 5 veces en los ¨²±ô³Ù¾±³¾´Çs 30 minutos.
No hay latidos en los ¨²±ô³Ù¾±³¾´Çs 3 minutos.
Uso de la ´Ú³Ü²Ô³¦¾±¨®²Ô nodata():
Para hacer uso de este activador, 'tick' debe definirse como un Áú»¢¶Ä²© trampero 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.
Actividad de la CPU durante la noche.
Uso de la ´Ú³Ü²Ô³¦¾±¨®²Ô time():
El iniciador puede cambiar su estado a problema solo durante la noche (00:00 - 06:00).
Actividad de la CPU en cualquier momento con excepci¨®n.
Uso de la ´Ú³Ü²Ô³¦¾±¨®²Ô 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 2 horas en el cambio de semana (domingo, 23:00 - lunes, 01:00).
Compruebe si la hora local del cliente est¨¢ sincronizada con la hora del servidor Áú»¢¶Ä²©.
Uso de la ´Ú³Ü²Ô³¦¾±¨®²Ô fuzzytime():
El iniciador cambiar¨¢ al estado de problema en caso de que la hora local est¨¦ activada. El servidor MySQL_DB y el servidor Áú»¢¶Ä²© difieren en m¨¢s de 10 segundos. Tenga en cuenta que 'system.localtime' debe configurarse como comprobaci¨®n pasiva.
Comparando la carga promedio actual con la carga promedio del mismo tiempo ayer (usando el cambio de tiempo como now-1d
).
Este iniciador se activar¨¢ si la carga promedio de la ¨²ltima hora supera el carga promedio de la misma hora ayer m¨¢s de dos veces.
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.
Usar resultado de la evaluaci¨®n 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.
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 Áú»¢¶Ä²© server/vfs.file.contents[/etc/os-release])<>last(/LA Áú»¢¶Ä²© server/vfs.file.contents[/etc/os-release])
Comparando dos valores de cadena, los operandos son:
Problema: detecta si el contenido del archivo /tmp/hello
es igual a:
Opci¨®n 1) escribir la cadena directamente
Observe c¨®mo se escapan los caracteres \ y " cuando se compara la cadena directamente.
Opci¨®n 2) usar una macro
en la expresi¨®n:
Comparaci¨®n de per¨ªodos de largo plazo.
Problema: la carga del servidor Exchange aument¨® m¨¢s del 10% el mes pasado
Tambi¨¦n puede usar el campo de nombre de evento 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.
?Tiene un ejemplo de expresiones de iniciador que pueda ser ¨²til para otros? Utilice el formulario de sugerencia de ejemplos para enviarlo a los desarrolladores de Áú»¢¶Ä²©.
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 un disparador.
En este caso, la recuperaci¨®n del problema se llevar¨¢ a cabo en dos pasos:
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! :::
La temperatura en la sala de servidores es demasiado alta.
·¡³æ±è°ù±ð²õ¾±¨®²Ô del problema:
·¡³æ±è°ù±ð²õ¾±¨®²Ô de recuperaci¨®n:
El espacio libre en disco es demasiado bajo.
·¡³æ±è°ù±ð²õ¾±¨®²Ô del problema: son menos de 10 GB durante los ¨²±ô³Ù¾±³¾´Çs 5 minutos
·¡³æ±è°ù±ð²õ¾±¨®²Ô de recuperaci¨®n: son m¨¢s de 40 GB durante los ¨²±ô³Ù¾±³¾´Çs 10 minutos
Generalmente, un operando desconocido (como una m¨¦trica no soportada) en la expresi¨®n representar¨¢ inmediatamente el valor de activaci¨®n como "Desconocido".
Sin embargo, en algunos casos se admiten operandos desconocidos (m¨¦tricas no soportadas, errores de ´Ú³Ü²Ô³¦¾±¨®²Ô) en la evaluaci¨®n de expresiones:
nodata()
se eval¨²a independientemente de si la m¨¦trica a la que se hace referencia es compatible o no.1 or some_function(unsupported_item1) or some_function(unsupported_item2) or ...
" can be evaluated to known result ('1' or "Problem"),0 and some_function(unsupported_item1) and some_function(unsupported_item2) and ...
" can be evaluated to known result ('0' or "OK").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).
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.