Un déclencheur est défini comme une expression logique et représente l'état du système.
Le statut des déclencheurs (expression) est recalculé chaque fois que le serveur Zabbix reçoit une nouvelle valeur, si cette valeur fait partie de cette expression. L'expression peut contenir les valeurs suivantes:
VALEUR | DESCRIPTION |
---|---|
VRAI | Signifie généralement que quelque chose s'est passé. Par exemple, la charge processeur est trop élevée. |
FAUX | C'est l'état normal du déclencheur. |
INCONNU | Dans ce cas, Zabbix ne peut pas évaluer l'expression du déclencheur. Cela peut être causé par plusieurs raisons: Le serveur est inaccessible L'expression du déclencheur ne peut être évaluée L'expression du déclencheur a été récemment modifiée |
Les expressions utilisées pour les déclencheurs sont très flexible. Vous pouvez les utiliser pour créer des tests logiques complexes concernant les statistiques supervisées Les opérateurs suivant sont supportés pour les déclencheurs (classé par ordre de priorité):
PRIORITÉ | OPÉRATEUR | DÉFINITION | |
---|---|---|---|
1 | / | Division | |
2 | *** |Multiplication | |3** | - | Moins arithmétique |
4 | + | Plus arithmétique | |
5 | < | Inférieur à | |
6 | > | Supérieur à | |
7 | # | Non égal. L'opérateur est défini comme: A=B ⇔ (A<B-0.000001) | (A>B+0.000001) |
|
8 | = | Est égal. L'opérateur est défini comme: A=B ⇔ (A>B-0.000001) & (A<B+0.000001) |
|
9 | & | ET logique | |
10 | | | OU logique |
Les fonctions suivantes sont supportées:
Toutes les fonctions retournent uniquement des valeurs numériques.Par exemple, la comparaison de chaînes de caractères n'est pas supportées.
FONCTION | ARGUMENT | TYPES DE VALEURS SUPPORTÉES | DÉFINITION |
---|---|---|---|
abschange | ignoré | float, int, str, text, log | Retourne la valeur absolue de la différence entre les deux dernières valeurs. Pour les chaînes: 0 – les valeurs sont égales 1 – les valeurs diffèrent |
avg | sec or #num | float, int | Valeur moyenne pour la période de temps. Le paramètre définit la longueur de la période de temps en seconde. |
change | ignoré | float, int, str, text, log | Retourne la différence entre les deux dernières valeurs. Pour les chaînes: 0 – les valeurs sont égales 1 – les valeurs diffèrent |
count | sec or #num | float, int, str, text, log | Nombre de valeurs dans l'historique pour la période de temps en seconde ou nombre de dernières #num valeurs qui correspondent à la condition. La fonction accepte un second paramètre optionnel pattern et un troisième paramètre operation. Par exemple, count(600,12) retournera le nombre exact de valeur stockées dans l'historique égales à '12'. Items entier: correspondance exacte Items décimaux: correspondance à 0.00001 près Items composés de Chaînes, texte et log: correspondance si contient le modèle. Le troisième paramètre fonctionne uniquement pour les valeurs entières ou décima. Opérateurs supportés: eq – égal ne – non égal gt – supérieur ge – supérieur ou égal lt – inférieur le – inférieur ou égal Par exemple, count(600,12,"gt") retournera le nombre exacte de valeurs stockées dans l'historique qui sont supérieures à '12' durant les 600 dernières secondes. Un autre exemple: count(#10,12,"gt") retournera le nombre exacte de valeurs stockées dans l'historique qui sont supérieures à '12' parmi les 10 dernières valeurs. Paramètre #num supporté depuis Zabbix 1.6.1. |
date | ignoré | tous | Retourne la date actuelle au format AAAAMMJJ. Par exemple: 20031025 |
dayofweek | ignoré | tous | Retourne le jour de la semaine dans l'ordre de 1 à 7. Lun – 1, Dim – 7. |
delta | sec or #num | float, int | identique à max()-min() |
diff | ignoré | float, int, str, text, log | Retourne: 1 – si il y a une différence entre les deux dernières valeurs 0 – les valeurs sont identiques |
fuzzytime | sec | float, int | Retourne 1 si le timestamp (la valeur de l'item) ne diffère pas du temps du serveur Z plus de N secondes, 0 – Sinon. Utilisé fréquemment avec system.localtime pour vérifier que le temps local est bien synchronisé avec le temps local du serveur Zabbix. |
iregexp | 1st – string 2nd – sec or #num |
str, log, text | Cette fonction n'est pas sensible à la casse, contrairement à la fonction analogue de regexp. |
last | sec #num |
float, int, str, text, log | La dernière (ou plus récente) valeur. Paramètres: sec – ignoré #num – la num (énième) dernière valeur Par exemple, last(0) est toujours égale à last(#1) last(#3) – la troisième plus récente valeur ZAbbix ne garantie pas l'ordre exact des valeurs si plus de deux valeurs existent et ont moins d'une seconde de différence dans l'historique. Paramètre #num est supporté depuis la version 1.6.2 de Zabbix. |
logseverity | ignoré | log | Retourne le niveau de sévérité de la dernière entrée du log. Le paramètre est ignoré. 0 – niveau de sévérité par défaut N – niveau de sévérité (l'integer est le plus utilisé pour les événements des logs de Windows). Zabbix prend le niveau de sévérité dans le champs Information des fichiers de log de Windows. |
logsource | string | log | Vérifie si la dernière entrée du fichier de log s'applique aux paramètres . 0 – ne correspond pas 1 – correspond Habituellement utilisé sur les événements des log Windows. Par exemple, logsource("VMWare Server") |
max | sec, #num | float, int | Valeur maximale pour une période de temps donnée. Le paramètre définit la période à traiter en secondes. |
min | sec, #num | float, int | Valeur minimale pour une période de temps donnée. Le paramètre définit la période à traiter en secondes. |
nodata | sec | tous | Retourne : 1 – si aucune donnée n'a été reçu lors de la période définit (en secondes). La période a traité ne doit pas être inférieure à 30 secondes. 0 - sinon |
now | ignoré | tous | Retourne le nombre de secondes depuis l'Epoch (00:00:00 UTC, 1 Janvier 1970). |
prev | ignoré | float, int, str, text, log | Retourne la valeur précédente. Le paramètre est ignoré. Est équivalent à last(#2) |
regexp | 1st – string 2nd – sec or #num |
str, log, text | Vérifie si la dernière valeur correspond à l'expression régulière. Le paramètre définit l'expression régulière, sous la forme Posix. Le second paramètre est optionnel, il s'agit du nombre de secondes ou du nombre de lignes à analyser. Dans ce cas, plus d'une seule valeur sera traité. Cette fonction est sensible à la casse. Retourne: 1 – Trouvée 0 - sinon |
str | 1st – string 2nd – sec or #num |
str, log, text | Recherche une string dans la dernière valeur (la plus récente). La paramètre définit la string à trouver. Attention à la casse ! Le paramètre optionnel est le nombre de secondes ou de ligne à analyser. Dans ce cas, plus d'une seule valeur sera traité. Returns: 1 – trouvée 0 – sinon |
sum | sec, #num | float, int | Somme des valeur sur une période données. Le paramètre définit la période en secondes. |
time | ignoré | tous | Retourne la date actuelle sous la forme HHMMSS . Exemple: 123055 |
Certaines fonctions ne peuvent pas être utilisées pour des paramètres non numériques!
La plupart des fonctions numérique acceptent le nombre de secondes comme argument. Vous pouvez aussi utiliser le préfixe # pour spécifier que l'argument a un sens différent:
ARGUMENT | DEFINITION |
---|---|
sum(600) | Somme de toutes les valeurs des 600 dernières secondes |
sum(#5) | Somme des 5 dernières valeurs |
Les constantes suivantes sont supportées dans les triggers:
CONSTANT | DEFINITION |
---|---|
<nombre> | Nombre positif flotant. Exemples: 0, 1, 0.15, 123.55 |
<nombre><K|M|G> | K – 1024*N M – 1024*1024*N G – 1024*1024*1024*N Exemples: 2K, 4G, 0.5M |
Une expression simple et utile pourrait ressembler à ça :
Le paramètre ne doit pas être omis dans ces fonctions, même s'il est ignoré. Par exemple : last(0)
La charge du processeur est trop élevée sur le serveur www.zabbix.com
‘zabbix.com:system.cpu.load[all,avg1]’ fait référence à un paramètre surveillé. On spécifie le serveur avec ‘zabbix.com’ et la clef à surveiller est ‘system.cpu.load[all,avg1]’. En utilisant la fonction ‘last()’, nous faisons référence à la valeur la plus récente. Finalement, ‘>5’ signifie que le déclencheur passe à vrai (PROBLEM) seulement si la valeur la plus récente de la charge du processeur du serveur zabbix.com est supérieure à 5.
zabbix.com est surchargé
L'expression retourne vraie (PROBLEM) lorsque la charge du processeur est supérieure à 5 OU que la charge du processeur est supérieure à 2 lors des 10 dernières minutes (600 secondes)
/etc/passwd a été changé
Utilisation de la fonction diff:
L'expression retourne vraie (PROBLEM) lorsque la valeur précédente du checksum du fichier /etc/passwd diffère de la valeur la plus récente.
Des expressions similaires peuvent se révéler très utile pour surveiller des fichiers importants comme /etc/passwd, /etc/shadow, /etc/inetd.conf, /kernel, etc.
Quelqu'un télécharge un gros fichier depuis Internet
Utilisation de la fonction min:
L'expression renvoie vrai (PROBLEM) quand le nombre d'octets reçus sur eth0 est supérieur à 100Ko sur les 5 dernières minutes.
Les deux serveurs SNMP sont tombés
Notez l'utilisation de deux machines (host) différentes dans une même expression :
{smtp1.zabbix.com:net.tcp.service[smtp].last(0)}=0&{smtp2.zabbix.com:net.tcp.service[smtp].last(0)}=0
L'expression retourne vrai (PROBLEM) si les serveurs SNMP des deux machines (smtp1.zabbix.com et smtp2.zabbix.com) sont tombés.
L'agent Zabbix a besoin d'être mise à jour
Utilisation de la fonction str() :
L'expression retourne vrai (PROBLEM) si l'agent Zabbix du serveur zabbix.zabbix.com est actuellement à la version beta8 (il s'agit d'une sous-chaine de 1.0beta8).
Le serveur ne répond pas
La dernière valeur du statut de zabbix.zabbix.com correspond à 2 (aucune réponse)
La valeur 2 ici se réfère à une valeur mappée
Le ‘status’ est un paramètre spécial qui est calculé si et seulement si il correspond à une machine (host) et qu'au moins un paramètre est surveillé actuellement. Voir la description de ‘status’ pour plus de détails.
Plus de réception de données lors des trois dernières minutes
Utilisation de la fonction nodata():
‘tick’ doit être de type ‘Zabbix trapper’. Dans l'ordre, afin d'avoir un déclencheur fonctionnel, un item ‘tick’ doit être préalablement défini. La machine enverra régulièrement des données sur cet objet en utilisant le binaire zabbix_sender. Si aucune donnée n'est reçue depuis 180 secondes, le déclencheur passe à vrai (PROBLEM).
Activité du CPU pendant la nuit
Utilisation de la fonction time() :
{zabbix:system.cpu.load[all,avg1].min(300)}>2&{zabbix:system.cpu.load[all,avg1].time(0)}>000000&{zabbix:system.cpu.load[all,avg1].time(0)}<060000
La déclencheur passera à vrai si la valeur minimale du avg1 des 300 dernières secondes de relevé est supérieure à 2 et qu'il est entre 00:00 et 06:00.
Les dépendances des déclencheurs peuvent être utilisé pour définir des relations entre des déclencheurs.
Ces dépendance sont une très bonne façon de limiter le nombre de messages à envoyer dans le cas où un événement appartient à plusieurs ressources.
Par exemple, une machine Host est derrière un routeur Routeur2 et le Routeur2 est derrière le Routeur1 Nous avons ce schéma :
Si le Routeur1 tombe, il parait normal que Host et Routeur2 ne soit plus accessibles. On ne veut pas recevoir les trois notifications de Routeur1, Routeur2 et Host. C'est là que les dépendances de déclencheurs deviennent très utiles.
Dans ce cas, nous allons définir les dépendances suivantes:
le déclencheur ‘Host est tombé’ dépend du trigger ‘Router2 est tombé’
le déclencheur ‘Routeur2 est tombé’ dépend du trigger ‘Router1 est tombé’
Ainsi, avant de changer le statut du déclencheur ‘Host est tombé’, Zabbix va vérifié s'il n'y a pas de dépendances de déclencheurs définies. Si c'est le cas, et si l'un des déclencheurs est à vrai (PROBLEM), alors le statut du déclencheur ne changera pas et donc les actions ne seront pas exécutées et les notifications, pas envoyées.
Zabbix effectue cette vérification récursivement. Si Routeur1 ou Routeur2 n'est pas disponible, le déclencheur de Host ne sera pas mis à jour.
La sévérité des déclencheurs détermine l'importance d'un déclencheur. Zabbix propose ces différents niveaux de sévérité:
SEVERITÉ | DEFINITION | COULEUR |
---|---|---|
Non classé | Sévérité inconnue. | Gris. |
Information | A titre d'information. | Vert clair. |
Avertissement | Pour être averti | Jaune clair. |
Moyen | Problème d'importance moyenne. | Rouge grisé. |
Haut | Quelque chose d'important vient de se produire. | Rouge. |
Désastre | Un désastre. Pertes financières, etc. | Rouge vif. |
Les sévérités sont utilisées afin :
Parfois, un déclencheur peut avoir différentes conditions pour différents états. Par exemple, nous voulons créer un déclencheur qui passerai à vrai (PROBLEM) quand la température de la salle des serveurs est supérieure à 20°C et qui resterai à vrai (PROBLEM) tant que la température n'est pas en dessous de 15°C.
Afin de faire ça, nous allons créer le déclencheur suivant :
La température dans la salle serveur est trop haute
Notez l'utilisation de la macro {TRIGGER.VALUE}. Cette macro retourne la valeur actuelle du déclencheur.