Les expressions utilis¨¦es dans les d¨¦clencheurs sont tr¨¨s flexibles. Vous pouvez les utiliser pour cr¨¦er des tests logiques complexes concernant les statistiques surveill¨¦es.
Une expression simple et utile peut ressembler ¨¤ ceci :
Bien que la syntaxe soit exactement la m¨ºme, du point de vue fonctionnel, il existe deux types d'expressions de d¨¦clencheur :
Lors de la »å¨¦´Ú¾±²Ô¾±³Ù¾±´Ç²Ô d'une seule expression probl¨¦matique, cette expression sera utilis¨¦e ¨¤ la fois comme seuil de probl¨¨me et seuil de r¨¦cup¨¦ration du probl¨¨me. D¨¨s que l'expression probl¨¨me a pour r¨¦sultat "VRAI", il y a un probl¨¨me. D¨¨s que l'expression du probl¨¨me est ¨¦valu¨¦e ¨¤ "FAUX", le probl¨¨me est r¨¦solu.
Lors de la »å¨¦´Ú¾±²Ô¾±³Ù¾±´Ç²Ô ¨¤ la fois de l'expression du probl¨¨me et de l'expression de r¨¦cup¨¦ration suppl¨¦mentaire, la r¨¦solution du probl¨¨me devient plus complexe : non seulement l'expression du probl¨¨me doit ¨ºtre "FAUX", mais ¨¦galement l'expression de r¨¦cup¨¦ration doit ¨ºtre "VRAI". Ceci est utile pour ¨¦viter le bagotage de d¨¦clenchement dans l'³ó²â²õ³Ù¨¦°ù¨¦²õ¾±²õ.
Les fonctions de d¨¦clenchement permettent de r¨¦f¨¦rencer les valeurs collect¨¦es, l'heure actuelle et d'autres facteurs.
Une liste compl¨¨te des fonctions support¨¦es est disponible.
La plupart des fonctions num¨¦riques acceptent un nombre de secondes comme param¨¨tre.
Vous pouvez utiliser le pr¨¦fixe # pour sp¨¦cifier qu'un param¨¨tre a une signification diff¨¦rente :
APPEL DE FONCTION | SIGNIFICATION |
---|---|
sum(600) | Somme de toutes les valeurs pendant 600 secondes |
sum(#5) | Somme des 5 derni¨¨res valeurs |
La fonction last utilise une signification diff¨¦rente pour les valeurs lorsqu'elle est pr¨¦fix¨¦e par un hashtag - il lui permet de choisir la ni¨¨me valeur pr¨¦c¨¦dente, ainsi les valeurs 3, 7, 2, 6, 5 (du plus r¨¦cent au moins r¨¦cent), last(#2) renverrait 7 et last(#5) renverrait 5.
Plusieurs fonctions prennent en charge un deuxi¨¨me param¨¨tre time_shift
. Ce param¨¨tre permet de r¨¦f¨¦rencer les donn¨¦es d'une p¨¦riode pass¨¦e. Par exemple, avg(1h,1d) renvoie la valeur moyenne pour une heure il y a un jour.
Vous pouvez utiliser les symboles d'unit¨¦s support¨¦s dans les expressions des d¨¦clencheurs, par exemple '5m' (minutes) au lieu de '300' secondes ou '1d' (jour) au lieu de '86400' secondes. '1K' repr¨¦sentera '1024' octets.
Les nombres avec le signe '?+'? ne sont pas support¨¦s.
Les op¨¦rateurs suivants sont support¨¦s pour les d¨¦clencheurs (en priorit¨¦ descendante d'ex¨¦cution) :
PRIORIT? | OPERATEUR | D?FINITION | Notes pour les valeurs inconnues |
---|---|---|---|
1 | - | Moins unaire | -Inconnu ¡ú Inconnu |
2 | not | NON logique | not Inconnu ¡ú Inconnu |
3 | * | Multiplication | 0 * Inconnu ¡ú Inconnu (oui, Inconnu, pas 0 - pour ne pas perdre Inconnu dans les op¨¦rations arithm¨¦tiques) 1.2 * Inconnu ¡ú Inconnu |
/ | Division | Inconnu / 0 ¡ú erreur Inconnu / 1.2 ¡ú Inconnu 0.0 / Inconnu ¡ú Inconnu |
|
4 | + | Signe plus arithm¨¦tique | 1.2 + Inconnu ¡ú Inconnu |
- | Signe moins arithm¨¦tique | 1.2 - Inconnu ¡ú Inconnu | |
5 | < | Inf¨¦rieur ¨¤. L'op¨¦rateur est d¨¦fini comme : A<B ? (A<B-0.000001) |
1.2 < Inconnu ¡ú Inconnu |
<= | Inf¨¦rieur ou ¨¦gal ¨¤. L'op¨¦rateur est d¨¦fini comme : A<=B ? (A¡ÜB+0.000001) |
Inconnu <= Inconnu ¡ú Inconnu | |
> | Sup¨¦rieur ¨¤. L'op¨¦rateur est d¨¦fini comme : A>B ? (A>B+0.000001) |
||
>= | Sup¨¦rieur ou ¨¦gal ¨¤. L'op¨¦rateur est d¨¦fini comme : A>=B ? (A¡ÝB-0.000001) |
||
6 | = | Est ¨¦gal. L'op¨¦rateur est d¨¦fini comme : A=B ? (A¡ÝB-0.000001) et (A¡ÜB+0.000001) |
|
<> | Diff¨¦rent. L'op¨¦rateur est d¨¦fini comme : A<>B ? (A<B-0.000001) ou (A>B+0.000001) |
||
7 | and | ET logique | 0 and Inconnu ¡ú 0 1 and Inconnu ¡ú Inconnu Inconnu and Inconnu ¡ú Inconnu |
8 | or | OU logique | 1 or Inconnu ¡ú 1 0 or Inconnu ¡ú Inconnu Inconnu or Inconnu ¡ú Inconnu |
Les op¨¦rateurs not, and et or sont sensibles ¨¤ la casse et doivent ¨ºtre en minuscules. Ils doivent ¨¦galement ¨ºtre entour¨¦s par des espaces ou des parenth¨¨ses.
Tous les op¨¦rateurs, sauf le - unaire et not, ont une associativit¨¦ de gauche ¨¤ droite. Le - unaire et not sont non-associatif (signifiant -(-1) et not(not 1) devraient ¨ºtre utilis¨¦ ¨¤ la place de --1 et not not 1).
R¨¦sultat de l'¨¦valuation :
Les valeurs requises pour l'¨¦valuation du d¨¦clencheur sont mises en cache par le serveur Áú»¢¶Ä²©. Cette ¨¦valuation de d¨¦clencheur entra?ne une charge de la base de donn¨¦es plus ¨¦lev¨¦e pendant un certain temps apr¨¨s le red¨¦marrage du serveur. Le cache de valeurs n'est pas effac¨¦ lorsque les valeurs d'¨¦l¨¦ment de l'historique sont supprim¨¦es (manuellement ou par la proc¨¦dure de nettoyage). Le serveur utilisera donc les valeurs mises en cache jusqu'¨¤ ce qu'elles soient plus anciennes que les p¨¦riodes d¨¦finies dans les fonctions de d¨¦clenchement ou que le serveur soit red¨¦marr¨¦.
La charge du processeur est trop ¨¦lev¨¦e sur www.zabbix.com
'www.zabbix.com:system.cpu.load[all,avg1]' donne le nom court du param¨¨tre surveill¨¦. Il indique que le serveur est 'www.zabbix.com' et que la cl¨¦ surveill¨¦e est 'system.cpu.load[all,avg1]'. En utilisant la fonction 'last()', nous faisons r¨¦f¨¦rence ¨¤ la valeur la plus r¨¦cente. Enfin, '>5' signifie que le d¨¦clencheur est dans l'¨¦tat PROBL?ME lorsque la mesure de charge la du processeur la plus r¨¦cente sur www.zabbix.com est sup¨¦rieure ¨¤ 5.
www.zabbix.com est surcharg¨¦
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5 or {www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
L'expression est vraie lorsque la charge du processeur actuel est sup¨¦rieure ¨¤ 5 ou que la charge du processeur ¨¦tait sup¨¦rieure ¨¤ 2 au cours des 10 derni¨¨res minutes.
/etc/passwd a ¨¦t¨¦ modifi¨¦
Utilisation de la fonction diff :
L'expression est vraie lorsque la valeur pr¨¦c¨¦dente du checksum de /etc/passwd diff¨¨re de la plus r¨¦cente.
Des expressions similaires pourraient ¨ºtre utiles pour surveiller les changements dans les fichiers importants, tels que /etc/passwd, /etc/inetd.conf, /kernel, etc.
Quelqu'un t¨¦l¨¦charge un gros fichier sur Internet
Utilisation de la fonction min :
L'expression est vraie lorsque le nombre d'octets re?us sur eth0 est sup¨¦rieur ¨¤ 100 Ko dans les 5 derni¨¨res minutes.
Les deux n?uds du serveur SMTP en cluster sont en panne
Notez l'utilisation de deux h?tes diff¨¦rents dans une expression :
{smtp1.zabbix.com:net.tcp.service[smtp].last()}=0 and {smtp2.zabbix.com:net.tcp.service[smtp].last()}=0
L'expression est vraie lorsque les deux serveurs SMTP sont d¨¦sactiv¨¦s sur smtp1.zabbix.com et smtp2.zabbix.com.
L'agent Áú»¢¶Ä²© doit ¨ºtre mis ¨¤ jour
Utilisation de la fonction str() :
L'expression est vraie si l'agent Áú»¢¶Ä²© est en version beta8 (vraisemblablement 1.0beta8).
Le serveur est inaccessible
L'expression est vraie si l'h?te "zabbix.zabbix.com" est inaccessible plus de 5 fois au cours des 30 derni¨¨res minutes.
Aucun heartbeat dans les 3 derni¨¨res minutes
Utilisation de la fonction nodata() :
Pour utiliser ce d¨¦clencheur, 'tick' doit ¨ºtre d¨¦fini comme un ¨¦l¨¦ment trappeur Áú»¢¶Ä²©. L'h?te doit envoyer p¨¦riodiquement des donn¨¦es pour cet ¨¦l¨¦ment ¨¤ l'aide de zabbix_sender. Si aucune donn¨¦e n'est re?ue dans les 180 secondes, la valeur de d¨¦clenchement devient PROBL?ME.
Notez que 'nodata' peut ¨ºtre utilis¨¦ pour n'importe quel type d'¨¦l¨¦ment.
Activit¨¦ du processeur pendant la nuit
Utilisation de la fonction time() :
{zabbix:system.cpu.load[all,avg1].min(5m)}>2 and {zabbix:system.cpu.load[all,avg1].time()}>000000 and {zabbix:system.cpu.load[all,avg1].time()}<060000
Le d¨¦clencheur peut changer son statut ¨¤ VRAI, uniquement la nuit (00:00-06:00).
CPU activity at any time with exception
Use of function time() and not operator:
{zabbix:system.cpu.load[all,avg1].min(5m)}>2
and not ({zabbix:system.cpu.load[all,avg1].dayofweek(0)}=7 and {zabbix:system.cpu.load[all,avg1].time(0)}>230000)
and not ({zabbix:system.cpu.load[all,avg1].dayofweek(0)}=1 and {zabbix:system.cpu.load[all,avg1].time(0)}<010000)
The trigger may change its state to true at any time, except for 2 hours on a week change (Sunday, 23:00 - Monday, 01:00).
V¨¦rifiez si l'heure locale du client est synchronis¨¦e avec l'heure du serveur Áú»¢¶Ä²©
Utilisation de la fonction fuzzytime() :
Le d¨¦clencheur passera ¨¤ l'¨¦tat ¡®probl¨¨me¡¯ dans le cas o¨´ l'heure locale sur le serveur MySQL_DB et le serveur Áú»¢¶Ä²© diff¨¨re de plus de 10 secondes. Notez que 'system.localtime' doit ¨ºtre configur¨¦ comme v¨¦rification passive.
Comparaison de la charge moyenne d¡¯aujourd'hui avec la charge moyenne de la m¨ºme heure hier (en utilisant un second param¨¨tre time_shift
).
Cette expression se d¨¦clenchera si la charge moyenne de la derni¨¨re heure d¨¦passe la charge moyenne de la m¨ºme heure hier plus de deux fois.
Utilisation de la valeur d'un autre ¨¦l¨¦ment pour obtenir un seuil de d¨¦clenchement :
{Template PfSense:hrStorageFree[{#SNMPVALUE}].last()}<{Template PfSense:hrStorageSize[{#SNMPVALUE}].last()}*0.1
Le d¨¦clencheur se d¨¦clenchera si le stockage libre tombe en dessous de 10%.
Utilisation du r¨¦sultat de l'¨¦valuation pour obtenir le nombre de d¨¦clencheurs sur un seuil :
({server1:system.cpu.load[all,avg1].last()}>5) + ({server2:system.cpu.load[all,avg1].last()}>5) + ({server3:system.cpu.load[all,avg1].last()}>5)>=2
Le d¨¦clencheur se d¨¦clenchera si au moins deux des d¨¦clencheurs de l'expression sont sup¨¦rieurs ¨¤ 5.
Parfois, un intervalle est n¨¦cessaire entre les ¨¦tats probl¨¨me et r¨¦cup¨¦ration, plut?t qu'un simple seuil. Par exemple, si nous voulons d¨¦finir un d¨¦clencheur signalant un probl¨¨me lorsque la temp¨¦rature de la salle des serveurs d¨¦passe 20¡ãC et que nous souhaitons qu'il reste dans l'¨¦tat du probl¨¨me jusqu'¨¤ ce que la temp¨¦rature descende sous 15¡ãC, un seuil de d¨¦clenchement simple ¨¤ 20¡ãC ne suffira pas.
Au lieu de cela, nous devons d'abord d¨¦finir une expression de d¨¦clenchement pour l'¨¦v¨¦nement probl¨¦matique (temp¨¦rature sup¨¦rieure ¨¤ 20¡ãC). Ensuite, nous devons d¨¦finir une condition de r¨¦cup¨¦ration suppl¨¦mentaire (temp¨¦rature inf¨¦rieure ¨¤ 15¡ãC). Pour ce faire, vous d¨¦finissez un param¨¨tre Expression de r¨¦cup¨¦ration suppl¨¦mentaire lors de la »å¨¦´Ú¾±²Ô¾±³Ù¾±´Ç²Ô du d¨¦clencheur.
Dans ce cas, la r¨¦cup¨¦ration du probl¨¨me se fera en deux ¨¦tapes :
L'expression de r¨¦cup¨¦ration sera ¨¦valu¨¦e uniquement lorsque l'¨¦v¨¦nement posant probl¨¨me est r¨¦solu en premier.
L'expression de r¨¦cup¨¦ration seule ¨¤ VRAI ne r¨¦sout pas le probl¨¨me si l'expression du probl¨¨me est toujours VRAI !
La temp¨¦rature dans la salle des serveurs est trop ¨¦lev¨¦e.
Expression du probl¨¨me :
Expression de r¨¦cup¨¦ration :
L'espace disque disponible est trop faible.
Expression du probl¨¨me : il est inf¨¦rieur ¨¤ 10 Go pour les 5 derni¨¨res minutes
Expression de r¨¦cup¨¦ration : elle est sup¨¦rieure ¨¤ 40 Go pour les 10 derni¨¨res minutes
Les versions ant¨¦rieures ¨¤ Áú»¢¶Ä²© 3.2 sont tr¨¨s strictes sur les ¨¦l¨¦ments non support¨¦s dans une expression de d¨¦clencheur. Tout ¨¦l¨¦ment non support¨¦ dans l'expression rend imm¨¦diatement la valeur de d¨¦clenchement Inconnue
.
Depuis Áú»¢¶Ä²© 3.2, il existe une approche plus flexible des ¨¦l¨¦ments non support¨¦s en admettant des valeurs inconnues dans l'¨¦valuation de l'expression :
or
Unsuported_item1.some_function() or
Unsuported_item2.some_function() or
..." peut ¨ºtre ¨¦valu¨¦ ¨¤ '1' (Vrai),and
Unsuported_item1.some_function() and
Unsuported_item2.some_function() and
..." peut ¨ºtre ¨¦valu¨¦ ¨¤ '0' (Faux).Inconnues
. Dans les deux cas mentionn¨¦s ci-dessus, une valeur connue sera produite ; dans d'autres cas, la valeur de d¨¦clenchement sera Inconnue
.Inconnue
et participe ¨¤ l'¨¦valuation de l'expression.Notez que les valeurs inconnues peuvent "dispara?tre" uniquement dans les expressions logiques comme d¨¦crit ci-dessus. Dans les expressions arithm¨¦tiques, les valeurs inconnues conduisent toujours au r¨¦sultat Inconnu
(sauf pour la division par 0).
Si une expression de d¨¦clencheur avec plusieurs ¨¦l¨¦ments non support¨¦s est ¨¦valu¨¦e ¨¤ Inconnue
le message d'erreur dans l'interface fait r¨¦f¨¦rence au dernier ¨¦l¨¦ment non support¨¦ ¨¦valu¨¦.