4 Configuration
1 Actions
Zabbix réagit aux événements en exécutant un ensemble d'opérations. Une action peut-être définie pour n'importe quel événement ou pour un ensemble d'événements générés par Zabbix.
Attributs d'une Action (le nom des paramètre est en anglais):
| Paramètre | Description |
|---|---|
| Name | Nom unique de l'action. |
| Event Source | Source de l'événement. actuellement, trois sources sont supportées: Triggers – événements générés par le changement de statut d'un trigger Discovery – événements générés par le module auto-discovery Auto registration – événements générés par de nouveaux agents actifs |
| Enable escalations | Activer l'escalade. Si activée, l'action sera répétée en fonction des étapes d'opérations définies pour les opérations. |
| Period (seconds) | Période de temps pour l'augmentation des étapes d'escalade. |
| Event Source | Source de l'événement: Triggers – l'action sera exécutée pour les événements générés par les triggers Discovery – l'action sera exécutée pour les événements discovrey |
| Default subject | Sujet par défaut des notifications. Le sujet peut contenir des macros. |
| Default message | Message par défaut des notifications. Le message peut contenir des macros. |
| Recovery message | Si activé, ZABBIX enverra un recovery message après après que le problème originel soit résolus. Le message sera envoyé à ceux qui ont reçu les messages liés au problème auparavant. |
| Recovery subject | Sujet du recovery message. Peut contenir des macros. |
| Recovery message | Recovery message. Peut contenir des macros. |
| Status | Action status: Enabled – l'action est activée Disabled – l'action est désactivée |
Conditions des actions
Une action est exécutée uniquement dans le cas où un événement correspond au conditions définies.
Les conditions suivantes peuvent être définies pour les événements de base des Triggers:
| Type de condition | Opérateurs supportés | Description |
|---|---|---|
| Application | = like not like |
= – l'événement provient d'un déclencheur, qui est une part de l'application like – l'événement provient d'un déclencheur, qui est une part de l'application contenant la chaîne de caractère not like – l'événement provient d'un déclencheur, qui est une part de l'application ne contenant pas la chaîne de caractèreg |
| Host group | = <> |
Compare avec le groupe d'hôtes qui a généré l'événement. = – L'événement provient de ce groupe d'hôtes <> – L'événement ne provient pas de ce groupe d'hôtes |
| Host template | = <> |
Compare avec le modèle d'hôte auquel le trigger appartient. = – L'événement provient d'un trigger hérité de ce modèle d'hôte <> – L'événement ne provient pas d'un trigger hérité de ce modèle d'hôte |
| Host | = <> |
Compare avec l'hôte qui a généré l'événement. = – L'événement provient de cet hôte <> – L'événement ne provient pas de cet hôte |
| Trigger | = <> |
Compare avec le trigger qui a généré l'événement. = – Evénement généré par ce Trigger <> – événement généré par un autre Trigger |
| Trigger description (nom) | like not like |
Compare avec le nom du trigger qui a généré l'événement. like – La chaîne de caractère peut être trouvée dans le nom. Sensible à la casse. not like – La chaîne de caractère ne peut pas être trouvée dans le nom. Sensible à la casse. |
| Trigger severity | = <> >= <= |
Compare avec la Sévérité du trigger. = – Egal à la sévérité du trigger <> – N'est pas égal à la sévérité du trigger >= – Supérieur ou égal à la sévérité du trigger <= – inférieur ou égal à la sévérité du trigger |
| Trigger value | = | Compare avec la valeur du trigger. = – Egal à la valeur du trigger (OK ou PROBLEM) |
| Time period in | in | L'événement se situe dans la période de temps. in – L'heure de déclenchement de l'événement correspond à la période de temps. La période de temps est données au format: dd-dd,hh:mm-hh:mm;dd-dd,hh:mm:hh:mm;… |
| Maintenance status | = <> |
Vérifie si l'hôte est en mode maintenance. = – L'hôte est en mode maintenance. <> – L'hôte n'est pas en mode maintenance. |
Valeur du Trigger:
Le Trigger passe du statut FALSE à TRUE (La valeur du trigger est TRUE)
Le Trigger passe du statut TRUE à FALSE (La valeur du trigger est FALSE)
Le changement de statut FALSE→UNKNOWN→TRUE est traité comme FALSE→TRUE, et TRUE→UNKNOWN→FALSE comme TRUE→FALSE.
Les conditions suivantes peuvent être définies pour les événements basés sur les dicovery:
| Type de condition | Opérateurs supportés | Description |
|---|---|---|
| Host IP | = <> |
Vérifie si l'adresse IP d'un hôte découvert appartient ou n'appartient pas à la plage d'adresses IP. = – L'IP de l'hôte appartient à la plage <> – L'IP de l'hôte n'appartient pas à la plage |
| Service type | = <> |
Vérifie si un service découvert. = – correspond avec le service découvert <> – l'événement correspond à un service découvert |
| Service port | = <> |
Vérifie si le port TCP d'un service découvert appartient ou n'appartient pas à la plage de ports. = – Le port du service appartient à la plage <> – Le port du service n'appartient pas à la plage |
| Discovery status | = | Up – Correspond au événements des hôtes et services Up Down – Correspond au événements des hôtes et services Down |
| Uptime/Downtime | >= <= |
Downtime pour les événements des hôtes et services Down. pour les événements des hôtes et services Up. >= – uptime/downtime est supérieur ou égal <= – uptime/downtime est inférieur ou égal. Le paramètre est donné en seconde. |
| Received value | = <> >= <= like not like |
Compare avec la valeur reçue d'un agent (ZABBIX, SNMP). Comparaison de chaîne de caractères. = – est égal à la valeur <> – n'est pas égal à la valeur >= – supérieur ou égal à la valeur <= – inférieur ou égal à la valeur like – contenu en sous-chaîne not like – ne contient pas de sous-chaîne. Le paramètre est donné en chaîne de caractère. |
Par exemple, cette configuration de conditions (Type de calcul: AND/OR):
Host group = Oracle servers
Host group = MySQL servers
Trigger name like ‘Database is down’
Trigger name like ‘Database is unavailable’
est évalué comme
(Host group = Oracle servers or
Host group = MySQL servers) and
(Trigger name like ‘Database is down’ or
Trigger name like ‘Database is unavailable’)
Operations
Une opération ou un ensemble d'opérations est exécuté lorsqu'un événement correspond aux conditions.
ZABBIX supporte les opérations suivantes:
-
Envoi de messages
-
Commande à distance, inclus IPMI.
Opérations additionnelles disponibles pour les événements de découvertes:
-
Ajouter un hôte
-
Supprimer un hôte
-
Ajouter au groupe
-
Supprimer d'un groupe
-
Associer à un template
-
Dissocier d'un template
| Parametre | Description |
|---|---|
| Step | Si l'escalade est activée pour l'action, paramètres de l'escalade: From – Exécute pour chaque étape à partir de celui-là To – Jusqu'à (0, Pour chaque étape depuis From) Period – Augmente le nombre d'étape après cette période, 0 – Période utilisée par défaut. |
| Operation type | Type d'action: Envoi de message – Envoi un message à l'utilisateur Exécution de commande – exécute une commande à distance |
| Event Source | |
| Send message to | Envoi un message à: Single user – à un utilisateur uniquement User group – à tous les membres d'un groupe |
| Default message | Si sélectionné, le message par défaut sera utilisé. |
| Subject | Sujet du message. Le sujet peut contenir des macros. |
| Message | Le message lui-même. Le message peut contenir des macros. |
| Remote command | Liste de commande distance. |
<Important>0 partir de la version 1.6.2, ZABBIX envoi les notifications uniquement aux utilisateurs qui ont les droit de lecture sur l'hôte (trigger) qui a généré l'événement. Au moins un hôte de l'expression du trigger doit être accessible.</note>
Macros for messages and remote commands
Les macros peuvent être utilisés pour un reporting plus efficace.
Exemple 1
Subject: {TRIGGER.NAME}: {TRIGGER.STATUS}
Le sujet du message sera remplacé par quelque chose comme:
‘La charge processeur est trop élevée sur le serveur zabbix.zabbix.com: ON’
Exemple 2
Message:
La charge processeur est:
{zabbix.zabbix.com:system.cpu.load[,avg1].last(0)}
Le message sera replacé par quelque chose comme:
‘La charge processeur est: 1.45’
Exemple 3
Message:
Dernière valeur:
{{HOSTNAME}:{TRIGGER.KEY}.last(0)}
MAX pour 15 minutes:
{{HOSTNAME}:{TRIGGER.KEY}.max(900)}
MIN pour 15 minutes:
{{HOSTNAME}:{TRIGGER.KEY}.min(900)}
Le message sera replacé par quelque chose comme:
Dernière valeur: 1.45 MAX pour 15 minutes: 2.33 MIN pour 15 minutes: 1.01
2 Macros
Zabbix supporte plusieurs macros qui peuvent être utilisées dans des situations variées. Une utilisation efficace de macros permet de gagner du temps et de rendre la configuration de Zabbix plus transparente.
Liste des macros supportées
La table contient la liste complète des macros supportées par Zabbix.
| MACRO | Notifications et commandes | Notifications de découverte | Notifications d'enregistrement automatique | Scripts GUI | Paramètre clé des items | Labels des cartes | Expressions des Déclencheurs | Nom des Déclencheurs | DESCRIPTION |
|---|---|---|---|---|---|---|---|---|---|
| {DATE} | X | X | X | Date actuelle au format yyyy.mm.dd. | |||||
| {DISCOVERY.DEVICE.IPADDRESS} | X | ||||||||
| {DISCOVERY.DEVICE.STATUS} | X | ||||||||
| {DISCOVERY.DEVICE.UPTIME} | X | ||||||||
| {DISCOVERY.RULE.NAME} | X | ||||||||
| {DISCOVERY.SERVICE.NAME} | X | ||||||||
| {DISCOVERY.SERVICE.PORT} | X | ||||||||
| {DISCOVERY.SERVICE.STATUS} | X | ||||||||
| {DISCOVERY.SERVICE.UPTIME} | X | ||||||||
| {ESC.HISTORY} | X | Historique des escalades. Log des messages envoyés précédemment. | |||||||
| {EVENT.ACK.HISTORY} | X | ||||||||
| {EVENT.ACK.STATUS} | X | ||||||||
| {EVENT.AGE} | X | X | X | Age de l'événement. Utile dans l'escalade des messages. | |||||
| {EVENT.DATE} | X | X | X | Date de l'événement. | |||||
| {EVENT.ID} | X | X | X | ID numérique de l'événement qui a déclenché cette action. | |||||
| {EVENT.TIME} | X | X | X | Heure de l'événement. | |||||
| {HOSTNAME<1-9>} | X | X | X | X | Nom machine du premier item du déclencheur qui a causé une notification. | ||||
| {HOST.CONN<1-9>} | X | X | X | X | IP et nom DNS de l'hôte en fonction des paramètres de l'hôte. | ||||
| {HOST.DNS<1-9>} | X | X | X | X | Nom DNS de l'hôte. | ||||
| {IPADDRESS<1-9>} | X | X | X | X | Adresse IP du premier item du déclencheur qui a causé une notification. | ||||
| {ITEM.LASTVALUE<1-9>} | X | X | La dernière valeur du premier item de l'expression du déclencheur qui a causé une notification.. Supporté depuis Zabbix 1.4.3. C'est un alias de {{HOSTNAME}:{TRIGGER.KEY}.last(0)} | ||||||
| {ITEM.LOG.AGE<1-9>} | X | ||||||||
| {ITEM.LOG.DATE<1-9>} | X | ||||||||
| {ITEM.LOG.EVENTID<1-9>} | X | ||||||||
| {ITEM.LOG.NSEVERITY<1-9>} | X | ||||||||
| {ITEM.LOG.SEVERITY<1-9>} | X | ||||||||
| {ITEM.LOG.SOURCE<1-9>} | X | ||||||||
| {ITEM.LOG.TIME<1-9>} | X | ||||||||
| {ITEM.NAME<1-9>} | X | nom du premier item du déclencheur qui a causé une notification. | |||||||
| {ITEM.VALUE<1-9>} | X | X | La dernière valeur du Nième item de l'expression du déclencheur si utilisée pour afficher les triggers. Valeur historique (lorsque l'événement s'est déroulé) du Nième item de l'expression du déclencheur of the trigger expression if used for displaying events. Supported from Zabbix 1.4.3. | ||||||
| {NODE.ID<1-9>} | X | X | X | ||||||
| {NODE.NAME<1-9>} | X | X | X | ||||||
| {PROFILE.CONTACT<1-9>} | X | Contact du profil. | |||||||
| {PROFILE.DEVICETYPE<1-9>} | X | Type périphérique du profil. | |||||||
| {PROFILE.HARDWARE<1-9>} | X | Matériel du profil. | |||||||
| {PROFILE.LOCATION<1-9>} | X | Situation du profil. | |||||||
| {PROFILE.MACADDRESS<1-9>} | X | Adresse MAC du profil. | |||||||
| {PROFILE.NAME<1-9>} | X | Nom du profil. | |||||||
| {PROFILE.NOTES<1-9>} | X | Notes du profil. | |||||||
| {PROFILE.OS<1-9>} | X | OS du profil. | |||||||
| {PROFILE.SERIALNO<1-9>} | X | Numéro de série du profil. | |||||||
| {PROFILE.SOFTWARE<1-9>} | X | Logiciel du profil. | |||||||
| {PROFILE.TAG<1-9>} | X | Marque du profil. | |||||||
| {STATUS} | X | Alias pour {TRIGGER.STATUS}. | |||||||
| {TIME} | X | X | X | heure actuelle in hh:mm.ss. | |||||
| {TRIGGER.COMMENT} | X | Commentaire du déclencheur. | |||||||
| {TRIGGER.EVENTS.UNACK} | X | Number of unacknowledged PROBLEM events for a trigger which generated event | |||||||
| {TRIGGER.ID} | X | ID numérique du déclencheur qui a déclenché cette action. | |||||||
| {TRIGGER.KEY<1-9>} | X | Key of first item of the trigger which caused a notification. | |||||||
| {TRIGGER.NAME} | X | Nom (description) du déclencheur. | |||||||
| {TRIGGER.NSEVERITY} | X | Valeur numérique de la sévérité du déclencheur. Valeurs possibles: 0 – Non classée, 1 – Information, 2 – Avertissement, 3 – Moyen, 4 – Élevée, 5 – Désastre, Supporté depuis Zabbix 1.6.2. | |||||||
| {TRIGGER.SEVERITY} | X | Sévérité du déclencheur. Valeurs possibles: Non classée, Information, Avertissement, Moyen, Élevée, Désastre, Inconnu | |||||||
| {TRIGGER.STATUS}, {STATUS} | X | État du déclencheur. ON – Si le déclencheur est en l'état VRAI, OFF – Si le déclencheur est dans l'état FAUX. {STATUS} est obsolète. | |||||||
| {TRIGGER.URL} | X | URL du déclencheur. | |||||||
| {TRIGGER.VALUE} | X | X | Valeur actuelle du déclencheur: 0 – Le déclencheur est dans l'état OFF, 1 – Le déclencheur est dans l'état ON, 2 – Déclencheur UNKNOWN. Cette macro peut aussi être utilisée dans les expressions de déclencheur. | ||||||
| {TRIGGERS.UNACK} | X | Number of unacknowledged PROBLEM triggers for a map element. | |||||||
| {host:key.func(param)} | X | X | X | Simple macros as used in trigger expressions. | |||||
| {$MACRO} | X | X | Global and host level macros. See next chapter for details. |
Global and host level macros
Pour une meilleure flexibilté, Zabbix supporte global and host-level macros as well as template-level macros. Ces macros ont une syntaxe spéciale: {$MACRO}. Les macros peuvent être utilisées dans les clés des items et les expressions des déclencheurs.
Les caractères suivants sont autorisés dans les noms des macros: A-Z , 0-9 , _ , .
Zabbix substitue les macros en fonction des priorités suivantes:
-
host macros (checked first)
-
macros defined for templates of the host. Zabbix will check templates of deeper level taking into account template inheritance.
-
global macros (checked last)
Plus clairement,si une macro n'existe pas pour un hôte, Zabbix va essayer de la trouver un des modèles d'hôte. Si il ne la trouve toujours pas, un modèle global sera utilisé s'il existe.
Dans le cas ou Zabbix est incapable de trouver une macro, la macro ne sera pas substituées.
Le niveau global et hôte des macros est un excellent moyen de rendre la maintenance de Zabbix plus aisée.
Utilisation commune dans le cas des macros globale et hôte:
-
taking advantage of templates with host specific attributes: passwords, port numbers, file names, regular expressions, etc
-
global macros for global one-click configuration changes and fine tuning
Example 1
Use of host macro in item “Status of SSH daemon” key:
ssh,{$SSH_PORT}
Example 2
Use of host macro in trigger “CPU load is too high”:
{ca_001:system.cpu.load[,avg1].last(0)}>{$MAX_CPULOAD}
Example 3
Use of two macros in trigger “CPU load is too high”:
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}
Note that a macro can be used as a parameter of trigger function, in this example function min().
4.3 Applications
Application est un paramètre des items des hôtes. Par exemple, l'application ‘MySQL Server’ peut contenir tout les items qui sont en relation avec le serveur MySQL: Disponibilité de MySQL, espace disque, charge processeur, transactions par seconde, nombre de slow queries, etc.
Un item peut être lié avec un ou plusieurs applications.
Applications sont utilisés dans l'interface de Zabbix pour grouper les items.
4.4 Graphes
Les graphes définis par l'utilisateur permettent la création de graphes complexes. Ces graphes peuvent être facilement accessible via le menu item “Graphs”.
4.5 Médias
Média est un channel pour délivrer les alertes Zabbix. De zéro à plusieurs types de médias peuvent être assignés à un utilisateur.
Émail
Notification Émail.
Jabber
Notifications utilisant les messages Jabber.
Script
Script personnalisé. Zabbix passe trois paramètres de ligne de commandes au script: Récipient, Sujet et Message.
GSM Modem
Zabbix supporte l'envoi de message SMS en utilisant le Serial Modem GSM connecté au port série du serveur Zabbix.
Assurez-vous que:
-
La vitesse du périphérique série (normallement /dev/ttyS0 sous Linux) correspond au Modem GSM. Zabbix ne fixe pas la vitesse du lien série. Les paramètres par défaut sont utilisés.
-
Le périphérique série possède les accès en lecture/écriture pour l'utilisateur Zabbix. Exécuter la commande ls –l /dev/ttyS0 pour voir les permissions actuelles du périphérique série.
-
Le Modem GSM possède le code PIN d'entré et qu'il le préserve après réinitialisation. Alternativement, vous pouvez désactiver le code PIN sur la carte SIM. Le code PIN peut être entré par la commande suivante AT+CPIN=“NNNN” (NNNN correspond à votre code PIN, les quotes doivent être présentes) dans un terminal d'administration, tel que Unix minicom ou Windows HyperTerminal.
Zabbix a été testé avec les modems GSM suivants:
-
Siemens MC35
-
Teltonika ModemCOM/G10
6 Modèles d'hôtes
L'utilisation des modèles est un excellent moyen de rendre la maintenance de Zabbix plus facile.
Un modèle peut être lié à un nombre d'hôtes. Les Items, déclencheurs et graphiques du modèle seront automatiquement ajoutés aux hôtes liés. Changez la définition d'un item (déclencheur, graphique) modèle et le changement sera automatiquement appliqué aux hôtes.
Attributs des modèles d'hôtes:
| Paramètre | Description |
|---|---|
| Nom | Nom de modèle (hôte) unique. Le nom doit être unique dans les nœuds ZABBIX. |
| Groupes | Liste des groupes d'hôtes auquel le modèle appartient. |
| Nouveau groupe | Assigner un nouveau groupe d'hôtes au modèle. |
| Lien avec le modèle | Utilisé pour créer des modèles hiérarchiques. |
4.7 Groupes d'hôtes
Les groupes d'hôtes peuvent contenir zéro, un ou plusieurs hôtes.
Attributs des groupes d'hôtes:
| Paramètre | Description |
|---|---|
| Nom groupe | Nom de groupe d'hôte unique. Le nom doit être unique dans les nœuds Zabbix. |
| Hôtes | liste des hôtes appartenant à ce groupe. |
8 Dépendances des hôtes et des déclencheurs
Zabbix ne supporte pas les dépendances des hôtes. Les dépendances des hôtes peuvent être définie en utilisant des options plus flexibles, i.e. les dépendances des déclencheurs.
Comment cela fonctionne?
Un déclencheur peut avoir une liste d'un ou plusieurs déclencheurs dont il dépend. Cela signifie que le déclencheur changera son statut indifféremment de l'état des déclencheurs dans la liste. Cependant, le déclencheur ne générera pas de notification ni d'action dans le cas ou un des déclencheurs de la liste est dans l'état VRAI.
Exemple 1
Dépendance d'un hôte
Supposons que vous avez deux hôtes: un routeur et un serveur. Le serveur est derrière le routeur. Vous voulez donc recevoir uniquement une seule notification si le routeur est down:
“Le routeur est down”
A la place de:
“Le routeur est down” et “L'hôte est down”
Pour permettre cela, nous allons créer une dépendance à un déclencheur:
"L'hôte est down" dépend de "Le routeur est down"
Dans le cas ou le serveur et le routeur sont down, Zabbix n'exécutera pas l'action pour le déclencheur “L'hôte est down”.
19 Éléments
Un élément est un test (métrique) de performance ou de disponibilité.
19.1 Clé de l'élément
19.1.1 Paramètes flexibles et non-flexibles
Un paramètre flexible est un paramètre qui accepte des arguments. Par exemple, vfs.fs.size[*] est un paramètre flexible. * signifie que n'importe quel caractère peut être passé en argument au paramètre. Voici des exemples de configuration valides:
-
vfs.fs.size[/]
-
vfs.fs.size[/opt]
19.1.2 Format de la clé
Le format de la clé de l'élément, y compris les paramètres clés, doit suivre des règles de syntaxe. L'illustration suivante représente la syntaxe supportée. Les éléments et caractères autorisé à chaque point peuvent être déterminés en suivant les lignes – “Si certains blocs peuvent être atteint par le biais de la ligne, c'est permis, sinon cela ne l'est pas” if some block can be reached through the line, it is allowed, if not – it is not allowed.
Clé d'élément
Pour construire une clé d'élément valide, on commence par spécifier le nom de la clé, ensuite on choisit ou non de renseigner un ou plusieurs paramètres comme représenté sur les deux lignes du schéma ci-dessous.
Nom de la clé
Le nom de la clé à une gamme limité de caractères autorisés. Les caractères autorisés sont:
0-9a-zA-Z_-.
Ce qui signifie:
-
Tous les nombres;
-
Toutes les lettres en minuscule;
-
Toutes les lettres en majuscule;
-
underscore “_”;
-
tiret ”-”;
-
point ”.”;
Paramètres de la clé
Une clé d'item peut avoir plusieurs paramètres, séparés par une virgule.
Paramètre de clé individuel
Chaque paramètre de clé peut être déclaré entre guillemets, sans guillemet ou en tableau.
Un paramètre peut aussi être laissé vide, la valeur par défaut est alors utilisée. Dans les cas appropriés, un certain nombre de virgules doivent être ajoutée sur des paramètres supplémentaires sont ajoutés. Par exemple, la clé d'élément icmpping[,,200,,500] spécifie que l'intervalle entre les pings est de 200 millisecondes, le timeout – 500 millisecondes, et tous les autres paramètres sont laissés à leur valeur par défaut.
Paramètre – déclaration entre guillemet
Si le paramètre de l'élément est déclarée entre guillemets, tous les caractères Unicode sont autorisés, en incluant les guillemets qui doivent être échappées par un antislash.
Paramètre – déclaration sans guillemet
Si le paramètre de l'élément est déclarée sans guillemets, tous les caractères Unicode sont autorisés excepté les virgules (,) et les crochets (]).
Paramètre – tableau
Si le paramètre de l'élément est un tableau, il est déclaré entre crochets, où les paramètres individuels respectent les règles et syntaxe des paramètres multiples.
19.1.3 Encodages disponibles
Le paramètre “encodage” est utilisé pour spécifier l'encodage pour les traitements correspondant aux vérifications des éléments, ainsi les données récoltées ne seront pas corrompues. Pour une liste des encodages supportés (code page identifiers), veuillez consulter la documentation respective, tel que pour libiconv (Projet GNU) ou Microsoft Windows SDK documentation pour “Code Page Identifiers”. Si une valeur vide pour le paramètre “encodage” est passée, ANSI avec ses extensions systèmes spécifiques (Windows) ou UTF-8 (default locale for newer Unix/Linux distributions, see your system's settings) sont utilisés par défaut.
19.2 Unsupported items
An item can become unsupported if its value can not be retrieved for some reason. Such items are still rechecked at a fixed interval, configurable in Administration section.
19.3 Supported by Platform
If an item is marked with ”?”, it is not known whether it is supported or not.
If an item is marked with “r”, it means that it requires root privileges.
If a parameter is marked with “i”, it means that it is ignored.
| Parameter / system | Windows | Linux 2.4 | Linux 2.6 | FreeBSD | Solaris | HP-UX | AIX | Tru64 | Mac OS X | OpenBSD | NetBSD | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| agent.ping | X | X | X | X | X | X | X | X | X | X | X | |
| agent.version | X | X | X | X | X | X | X | X | X | X | X | |
| kernel.maxfiles | – | X | X | X | – | – | – | ? | ? | X | X | |
| kernel.maxproc | – | – | X | X | X | – | – | ? | ? | X | X | |
| log[file,<regexp>,<encoding>,<maxlines>,<mode>] | X | X | X | X | X | X | X | X | X | X | X | |
| logrt[file_format,<regexp>,<encoding>,<maxlines>,<mode>] | X | X | X | X | X | X | X | X | X | X | X | |
| eventlog[name,<regexp>,<severity>,<source>,<eventid>,<maxlines>,<mode>] | X | – | – | – | – | – | – | – | – | – | – | |
| net.if.collisions[if] | – | X | X | X | X | – | X | – | – | X | r | |
| net.if.in[if,<mode>] | X | X | X | X | X | – | X | – | – | X | r | |
| mode | bytes | X | X | X | X | X | – | X | – | – | X | r |
| packets | X | X | X | X | X | – | X | – | – | X | r | |
| errors | X | X | X | X | X | – | X | – | – | X | r | |
| dropped | X | X | X | X | – | – | – | – | – | X | r | |
| net.if.list | X | – | – | – | – | – | – | – | – | – | – | |
| net.if.out[if,<mode>] | X | X | X | X | X | – | X | – | – | X | r | |
| mode | bytes | X | X | X | X | X | – | X | – | – | X | r |
| packets | X | X | X | X | X | – | X | – | – | X | r | |
| errors | X | X | X | X | X | – | X | – | – | X | r | |
| dropped | X | X | X | – | – | – | – | – | – | – | – | |
| net.if.total[if,<mode>] | X | X | X | X | X | – | X | – | – | X | r | |
| mode | bytes | X | X | X | X | X | – | X | – | – | X | r |
| packets | X | X | X | X | X | – | X | – | – | X | r | |
| errors | X | X | X | X | X | – | X | – | – | X | r | |
| dropped | X | X | X | – | – | – | – | – | – | – | – | |
| net.tcp.dns[<ip>,zone] | – | X | X | X | X | X | X | X | X | X | X | |
| net.tcp.dns.query[<ip>,zone,<type>] | – | X | X | X | X | X | X | X | X | X | X | |
| net.tcp.listen[port] | X | X | X | X | X | – | – | – | – | – | – | |
| net.tcp.port[<ip>,port] | X | X | X | X | X | X | X | X | X | X | X | |
| net.tcp.service.perf[service,<ip>,<port>] | – | X | X | X | X | X | X | X | – | X | X | |
| net.tcp.service[service,<ip>,<port>] | – | X | X | X | X | X | X | X | – | X | X | |
| net.udp.listen[port] | – | X | X | – | – | – | – | – | – | – | – | |
| proc.mem[<name>,<user>,<mode>,<cmdline>] | – | X | X | X | X | – | X | X | ? | X | X | |
| mode | sum | – | X | X | X | X | – | X | X | ? | X | X |
| avg | – | X | X | X | X | – | X | X | ? | X | X | |
| max | – | X | X | X | X | – | X | X | ? | X | X | |
| min | – | X | X | X | X | – | X | X | ? | X | X | |
| proc.num[<name>,<user>,<state>,<cmdline>] | X | X | X | X | X | – | X | X | ? | X | X | |
| state | all | – | X | X | X | X | – | X | X | ? | X | X |
| sleep | – | X | X | X | X | – | X | X | ? | X | X | |
| zomb | – | X | X | X | X | – | X | X | ? | X | X | |
| run | – | X | X | X | X | – | X | X | ? | X | X | |
| sensor[device,sensor,<mode>] | – | X | – | – | – | – | – | – | – | X | – | |
| services[<type>,<state>,<exclude>] | X | – | – | – | – | – | – | – | – | – | – | |
| system.boottime | – | X | X | X | X | – | – | – | – | X | X | |
| system.cpu.intr | – | X | X | X | X | – | X | – | – | X | X | |
| system.cpu.load[<cpu>,<mode>] | X | X | X | X | X | X | – | X | ? | X | X | |
| mode | avg1 | X | X | X | X | X | X | – | X | ? | X | X |
| avg5 | X | X | X | X | X | X | – | X | ? | X | X | |
| avg15 | X | X | X | X | X | X | – | X | ? | X | X | |
| system.cpu.num[<type>] | X | X | X | X | X | X | X | – | – | X | X | |
| type | online | X | X | X | X | X | X | X | – | – | X | X |
| max | – | X | X | X | X | – | – | – | – | – | – | |
| system.cpu.switches | – | X | X | X | X | – | X | – | – | X | X | |
| system.cpu.util[<cpu>,<type>,<mode>] | X | X | X | X | X | X | X | X | ? | X | X | |
| type | user | – | X | X | X | X | X | X | X | ? | X | X |
| nice | – | X | X | X | – | X | – | X | ? | X | X | |
| idle | – | X | X | X | X | X | X | X | ? | X | X | |
| system | X | X | X | X | – | X | X | X | ? | X | X | |
| kernel | – | – | – | – | X | – | – | – | – | – | – | |
| iowait | – | – | X | – | – | – | X | – | – | – | – | |
| wait | – | – | – | – | X | – | – | – | – | – | – | |
| interrupt | – | – | X | X | – | – | – | – | – | X | – | |
| softirq | – | – | X | – | – | – | – | – | – | – | – | |
| steal | – | – | X | – | – | – | – | – | – | – | – | |
| mode | avg1 | X | X | X | X | – | X | X | X | ? | X | – |
| avg5 | X | X | X | X | – | X | X | – | ? | X | – | |
| avg15 | X | X | X | X | – | X | X | – | ? | X | – | |
| system.hostname | X | X | X | X | X | X | X | X | X | X | X | |
| system.localtime | X | X | X | X | X | X | X | X | X | X | X | |
| type | utc | X | X | X | X | X | X | X | X | X | X | X |
| local | X | X | X | X | X | X | X | X | X | X | X | |
| system.run[command,<mode>] | X | X | X | X | X | X | X | X | X | X | X | |
| mode | wait | X | X | X | X | X | X | X | X | X | X | X |
| nowait | X | X | X | X | X | X | X | X | X | X | X | |
| system.stat[resource,<type>] | – | – | – | – | – | – | X | – | – | – | – | |
| system.swap.in[<device>,<type>] | – | X | X | – | X | – | – | – | – | X | – | |
| type | count | – | X | X | – | X | – | – | – | – | X | – |
| sectors | – | X | X | – | – | – | – | – | – | – | – | |
| pages | – | X | X | – | X | – | – | – | – | X | – | |
| system.swap.out[<device>,<type>] | – | X | X | – | X | – | – | – | – | X | – | |
| type | count | – | X | X | – | X | – | – | – | – | X | – |
| sectors | – | X | X | – | – | – | – | – | – | – | – | |
| pages | – | X | X | – | X | – | – | – | – | X | – | |
| system.swap.size[<device>,<type>] | X | X | X | X | X | – | – | X | ? | X | – | |
| mode | free | X | X | X | X | X | – | – | X | ? | X | – |
| total | X | X | X | X | X | – | – | X | ? | X | – | |
| used | – | X | X | X | – | – | – | – | – | X | – | |
| pfree | – | X | X | X | X | – | – | – | ? | X | – | |
| pused | – | X | X | X | X | – | – | – | ? | X | – | |
| system.uname | X | X | X | X | X | X | X | X | – | X | X | |
| system.uptime | X | X | X | X | X | – | X | ? | ? | X | X | |
| system.users.num | – | X | X | X | X | X | X | X | – | X | X | |
| vfs.dev.read[device,<type>,<mode>] | – | X | X | X | X | – | – | – | – | X | – | |
| type | sectors | – | X | X | – | – | – | – | – | – | – | – |
| operations | – | X | X | – | X | – | – | – | – | X | – | |
| bytes | – | – | – | – | X | – | – | – | – | X | – | |
| sps | – | X | X | – | – | – | – | – | – | – | – | |
| ops | – | X | X | X | – | – | – | – | – | – | – | |
| bps | – | – | – | X | – | – | – | – | – | – | – | |
| mode | avg1 | – | X | X | X | – | – | – | – | – | i | – |
| avg5 | – | X | X | X | – | – | – | – | – | i | – | |
| avg15 | – | X | X | X | – | – | – | – | – | i | – | |
| vfs.dev.write[device,<type>,<mode>] | – | X | X | X | X | – | – | – | – | X | – | |
| type | sectors | – | X | X | – | – | – | – | – | – | – | – |
| operations | – | X | X | – | X | – | – | – | – | X | – | |
| bytes | – | – | – | – | X | – | – | – | – | X | – | |
| sps | – | X | X | – | – | – | – | – | – | – | – | |
| ops | – | X | X | X | – | – | – | – | – | – | – | |
| bps | – | – | – | X | – | – | – | – | – | – | – | |
| mode | avg1 | – | X | X | X | – | – | – | – | – | i | – |
| avg5 | – | X | X | X | – | – | – | – | – | i | – | |
| avg15 | – | X | X | X | – | – | – | – | – | i | – | |
| vfs.file.cksum[file] | X | X | X | X | X | X | X | X | – | X | X | |
| vfs.file.contents[file,<encoding>] | X | X | X | X | X | X | X | X | X | X | X | |
| vfs.file.exists[file] | X | X | X | X | X | X | X | X | X | X | X | |
| vfs.file.md5sum[file] | X | X | X | X | X | X | X | X | – | X | X | |
| vfs.file.regexp[file,regexp,<encoding>] | X | X | X | X | X | X | X | X | – | X | X | |
| vfs.file.regmatch[file,regexp,<encoding>] | X | X | X | X | X | X | X | X | – | X | X | |
| vfs.file.size[file] | X | X | X | X | X | X | X | X | – | X | X | |
| vfs.file.time[file,<mode>] | X | X | X | X | X | X | X | X | – | X | X | |
| mode | modify | X | X | X | X | X | X | X | X | – | X | X |
| access | X | X | X | X | X | X | X | X | – | X | X | |
| change | X | X | X | X | X | X | X | X | – | X | X | |
| vfs.fs.inode[fs,<mode>] | – | X | X | X | X | X | X | X | ? | X | X | |
| mode | total | – | X | X | X | X | X | X | X | ? | X | X |
| free | – | X | X | X | X | X | X | X | ? | X | X | |
| used | – | X | X | X | X | X | X | X | ? | X | X | |
| pfree | – | X | X | X | X | X | X | X | ? | X | X | |
| pused | – | X | X | X | X | X | X | X | ? | X | X | |
| vfs.fs.size[fs,<mode>] | X | X | X | X | X | X | X | X | ? | X | X | |
| mode | total | X | X | X | X | X | X | X | X | ? | X | X |
| free | X | X | X | X | X | X | X | X | ? | X | X | |
| used | X | X | X | X | X | X | X | X | ? | X | X | |
| pfree | X | X | X | X | X | X | X | X | ? | X | X | |
| pused | X | X | X | X | X | X | X | X | ? | X | X | |
| vm.memory.size[<mode>] | X | X | X | X | X | X | X | X | ? | X | X | |
| mode | total | X | X | X | X | X | X | X | X | ? | X | X |
| free | X | X | X | X | X | X | X | X | ? | X | X | |
| used | – | – | – | X | – | – | – | – | – | X | X | |
| shared | – | X | X | X | – | X | X | – | ? | X | X | |
| buffers | – | X | X | – | – | X | X | – | ? | X | X | |
| cached | X | X | X | X | – | X | X | – | ? | X | X | |
| pfree | X | X | X | X | – | – | – | – | – | X | X | |
| pused | – | – | – | X | – | – | – | – | – | X | X | |
| available | – | X | X | – | – | – | – | – | – | – | – | |
| web.page.get[host,<path>,<port>] | X | X | X | X | X | X | X | X | X | X | X | |
| web.page.perf[host,<path>,<port>] | X | X | X | X | X | X | X | X | X | X | X | |
| web.page.regexp[host,<path>,<port>,<regexp>,<length>] | X | X | X | X | X | X | X | X | X | X | X | |
| Parameter / system | Windows | Linux 2.4 | Linux 2.6 | FreeBSD | Solaris | HP-UX | AIX | Tru64 | Mac OS X | OpenBSD | NetBSD | |
19.4 Zabbix Agent
List of supported parameters
| Key | Description | Return value | Parameters | Comments |
|---|---|---|---|---|
| agent.ping | Check the agent availability. | Returns '1' if agent is available, nothing if unavailable. | – | Can be used as a TCP ping. Use function nodata() to check for host unavailability. |
| agent.version | Version of Zabbix Agent. | String | – | Example of returned value: 1.8.2 |
| kernel.maxfiles | Maximum number of opened files supported by OS. | Number of files. Integer. | ||
| kernel.maxproc | Maximum number of processes supported by OS. | Number of processes. Integer. |
||
| log[file,<regexp>,<encoding>,<maxlines>,<mode>] | Monitoring of log file. | Log. | file – full file name regexp – regular expression for pattern encoding – Code Page identifier maxlines – Maximum number of new lines per second the agent will send to Zabbix Server or Proxy. This parameter overrides the 'MaxLinesPerSecond' option in zabbix_agentd.conf mode – one of all (default), skip (skipping processing of older data) Parameter mode will be supported from version 2.0. |
Must be configured as an Active Check. Example: log[/home/zabbix/logs/logfile,,,100] See detailed description. |
| logrt[file_format,<regexp>,<encoding>,<maxlines>,<mode>] | Monitoring of log file with log rotation support. | Log. | file_format – full file name in format [absolute path][filename format as regexp] regexp – regular expression for pattern encoding – Code Page identifier maxlines – Maximum number of new lines per second the agent will send to Zabbix Server or Proxy. This parameter overrides the 'MaxLinesPerSecond' option in zabbix_agentd.conf mode – one of all (default), skip (skipping processing of older data) Parameter mode will be supported from version 2.0. |
Must be configured as an Active Check. Example: logrt[”/home/zabbix/logs/^logfile[0-9]{1,3}$”,,,100] Log rotation is based on last modification times of files. See detailed description. |
| eventlog[name,<regexp>,<severity>,<source>,<eventid>,<maxlines>,<mode>] | Monitoring of event logs. | Log. | name – event log name regexp – regular expression severity – regular expression The parameter accepts the following values: “Information”, “Warning”, “Error”, “Failure Audit”, “Success Audit” source – Source identifier eventid – regular expression maxlines – Maximum number of new lines per second the agent will send to Zabbix Server or Proxy. This parameter overrides the 'MaxLinesPerSecond' option in zabbix_agentd.conf mode – one of all (default), skip (skipping processing of older data) Parameter mode will be supported from version 2.0. |
Must be configured as an Active Check.
Examples: eventlog[Application] eventlog[Security,,"Failure Audit",,529|680] eventlog[System,,"Warning|Error"] eventlog[System,,,,^1$] eventlog[System,,,,@TWOSHORT] – here custom regular expression TWOSHORT is defined as type Result is TRUE and expression itself is ^1$|^70$. |
| net.if.collisions[if] | Out-of-window collision. | Number of collisions. Integer. |
if – interface | |
| net.if.in[if,<mode>] | Network interface incoming statistic. | Integer. | if – interface mode – bytes number of bytes (default) packets number of packets errors number of errors dropped number of dropped packets |
Examples: net.if.in[eth0,errors] net.if.in[eth0] You may use this key with Delta (speed per second) in order to get bytes per second statistics. |
| net.if.list | List of network interfaces: Type Status IPv4 Description | String | Supported since Zabbix agent version 1.8.1. | |
| net.if.out[if,<mode>] | Network interface outgoing statistic. | Integer. | if – interface mode – bytes number of bytes (default) packets number of packets errors number of errors dropped number of dropped packets |
Examples: net.if.out[eth0,errors] net.if.out[eth0] You may use this key with Delta (speed per second) in order to get bytes per second statistics. |
| net.if.total[if,<mode>] | Sum of network interface incoming and outgoing statistics. | Integer. | if – interface mode – bytes number of bytes (default) packets number of packets errors number of errors dropped number of dropped packets |
Examples: net.if.total[eth0,errors] net.if.total[eth0] You may use this key with Delta (speed per second) in order to get bytes per second statistics. Note that dropped packets are supported only if both net.if.in and net.if.out work for dropped packets on your platform. |
| net.tcp.dns[<ip>,zone] | Checks if DNS service is up. | 0 – DNS is down 1 – DNS is up |
ip – IP address of DNS server (ignored) zone – zone to test the DNS |
Example: net.tcp.dns[127.0.0.1,zabbix.com] |
| net.tcp.dns.query[<ip>,zone,<type>] | Performs a query for the supplied DNS record type. | On success returns a character string with the required type of information. | ip – IP address of DNS server (ignored) zone – zone to test the DNS type – Record type to be queried (default is SOA) |
Example: net.tcp.dns.query[127.0.0.1,zabbix.com,MX] type can be one of: A, NS, CNAME, MB, MG, MR, PTR, MD, MF, MX, SOA, NULL, WKS, HINFO, MINFO, TXT |
| net.tcp.listen[port] | Checks if this TCP port is in LISTEN state. | 0 – it is not 1 – it is in LISTEN state |
port – TCP port number | Example: net.tcp.listen[80] On Linux supported since Zabbix agent version 1.8.4 |
| net.tcp.port[<ip>,port] | Check, if it is possible to make TCP connection to port number port. | 0 – cannot connect 1 – can connect |
ip – IP address(default is 127.0.0.1) port – port number |
Example: net.tcp.port[,80] can be used to test availability of WEB server running on port 80. Old naming: check_port[*] |
| net.tcp.service[service,<ip>,<port>] | Check if service is running and accepting TCP connections. | 0 – service is down 1 – service is running 2 – timeout connecting to the service |
service – one of ssh, ntp, ldap, smtp, ftp, http, pop, nntp, imap, tcp ip – IP address (default is 127.0.0.1) port – port number (by default standard service port number is used) |
Example: net.tcp.service[ftp,,45] can be used to test availability of FTP server on TCP port 45. Old naming: check_service[*] Note that before Zabbix version 1.8.3 service.ntp should be used instead of ntp. |
| net.tcp.service.perf[service,<ip>,<port>] | Check performance of service | 0 – service is down sec – number of seconds spent while connecting to the service |
service – one of ssh, ntp, ldap, smtp, ftp, http, pop, nntp, imap, tcp ip – IP address (default is 127.0.0.1) port – port number (by default standard service port number is used) |
Example: net.tcp.service.perf[ssh] can be used to test speed of initial response from SSH server. Old naming: check_service[*] Note that before Zabbix version 1.8.3 service.ntp should be used instead of ntp. |
| net.udp.listen[port] | Checks if this UDP port is in LISTEN state. | 0 – it is not 1 – it is in LISTEN state |
port – UDP port number | Example: net.udp.listen[68] On Linux supported since Zabbix agent version 1.8.4 |
| proc.mem[<name>,<user>,<mode>,<cmdline>] | Memory used by process name running under user user | Memory used by process. | name – process name user – user name (default is all users) mode – one of avg, max, min, sum (default) cmdline – filter by command line |
Example: proc.mem[,root] – memory used by all processes running under user “root”. proc.mem[zabbix_server,zabbix] – memory used by all processes zabbix_server running under user zabbix proc.mem[,oracle,max,oracleZABBIX] – memory used by most memory hungry process running under oracle having oracleZABBIX in its command line |
| proc.num[<name>,<user>,<state>,<cmdline>] | Number of processes name having state running under user user | Number of processes. | name – process name user – user name (default is all users) state – one of all (default), run, sleep, zomb cmdline – filter by command line |
Example: proc.num[,mysql] – number of processes running under user mysql proc.num[apache2,www-data] – number of apache2 running under user www-data proc.num[,oracle,sleep,oracleZABBIX] – number of processes in sleep state running under oracle having oracleZABBIX in its command line On Windows, only name and user arguments are supported. |
| sensor[device,sensor,<mode>] | Hardware sensor reading. | device – device name (if mode is used, it is a regular expression) sensor – sensor name (if mode is used, it is a regular expression) mode – one of avg, max, min (if omitted, device and sensor are treated verbatim). |
On Linux 2.4, reads /proc/sys/dev/sensors. Example: sensor[w83781d-i2c-0-2d,temp1] Prior to Zabbix 1.8.4, format sensor[temp1] was used. On OpenBSD, reads hw.sensors MIB. Example: |
|
| system.boottime | Timestamp of system boot. | Integer. | Time in seconds. | |
| system.cpu.intr | Device interrupts. | Integer. | ||
| system.cpu.load[<cpu>,<mode>] | CPU load. | Processor load. Float. |
cpu – CPU number (default is all CPUs) mode – one of avg1 (default),avg5 (average within 5 minutes), avg15 |
Example: system.cpu.load[] Old naming: system.cpu.loadX |
| system.cpu.num[<type>] | Number of CPUs. | Number of available processors. | type – one of online (default), max | Example: system.cpu.num |
| system.cpu.switches | Context switches. | Switches count. | Old naming: system[switches] | |
| system.cpu.util[<cpu>,<type>,<mode>] | CPU(s) utilisation. | Processor utilisation in percents | cpu – CPU number (default is all CPUs) type – one of idle, nice, user (default), system, kernel, iowait, interrupt, softirq, steal mode – one of avg1 (default),avg5 (average within 5 minutes), avg15 |
Old naming: system.cpu.idleX, system.cpu.niceX, system.cpu.systemX, system.cpu.userX Example: system.cpu.util[0,user,avg5] |
| system.hostname | Return host name. | String value | Example of returned value www.zabbix.com |
|
| system.localtime | System time. | Integer or string value. | utc – (default) the time since the Epoch (00:00:00 UTC, January 1, 1970), measured in seconds. local – the time in the 'yyyy-mm-dd,hh:mm:ss.nn,+hh:mm' format Parameters for this item will be supported from version 2.0. |
|
| system.run[command,<mode>] | Run specified command on the host. | Text result of the command | command – command for execution mode – one of wait (default, wait end of execution), nowait (do not wait) |
Example: system.run[ls -l /] – detailed file list of root directory. Note: To enable this functionality, agent configuration file must have EnableRemoteCommands=1 option. |
| system.stat[resource,<type>] | Virtual memory statistics | Numeric value | ent – number of processor units this partition is entitled to receive (float) kthr,<type> – information about kernel thread states: r – average number of runnable kernel threads (float) b – average number of kernel threads placed in the Virtual Memory Manager wait queue (float) memory,<type> – information about the usage of virtual and real memory: avm – active virtual pages (integer) fre – size of the free list (integer) page,<type> – information about page faults and paging activity: fi – file page-ins per second (float) fo – file page-outs per second (float) pi – pages paged in from paging space (float) po – pages paged out to paging space (float) fr – pages freed (page replacement) (float) sr – pages scanned by page-replacement algorithm (float) faults,<type> – trap and interrupt rate: in – device interrupts (float) sy – system calls (float) cs – kernel thread context switches (float) cpu,<type> – breakdown of percentage usage of processor time: us – user time (float) sy – system time (float) id – idle time (float) wa – idle time during which the system had outstanding disk/NFS I/O request(s) (float) pc – number of physical processors consumed (float) ec – the percentage of entitled capacity consumed (float) lbusy – indicates the percentage of logical processor(s) utilization that occurred while executing at the user and system level (float) app – indicates the available physical processors in the shared pool (float) disk,<type> – disk statistics: bps – indicates the amount of data transferred (read or written) to the drive in bytes per second (integer) tps – indicates the number of transfers per second that were issued to the physical disk/tape (float) This item is supported starting from version 1.8.1. |
|
| system.swap.in[<device>,<type>] | Swap in. | Swap statistics | device – swap device (default is all), type – one of count (default, number of swapins), sectors (sectors swapped in), pages (pages swapped in) | Example: system.swap.in[,pages] Old naming: swap[in] |
| system.swap.out[<device>,<type>] | Swap out. | Swap statistics | device – swap device (default is all), type – one of count (default, number of swapouts), sectors (sectors swapped out), pages (pages swapped out) | Example: system.swap.out[,pages] Old naming: swap[out] |
| system.swap.size[<device>,<mode>] | Swap space. | Number of bytes or percentage | device – swap device (default is all), type – one of free (default, free swap space), total (total swap space), pfree (free swap space, percentage), pused (used swap space, percentage) | Example: system.swap.size[,pfree] – percentage of free swap space Old naming: system.swap.free, system.swap.total |
| system.uname | Returns detailed host information. | String value | Example of returned value: FreeBSD localhost 4.4-RELEASE FreeBSD 4.4-RELEASE #0: Tue Sep 18 11:57:08 PDT 2001 [email protected]: /usr/src/sys/compile/GENERIC i386 |
|
| system.uptime | System's uptime in seconds. | Number of seconds | Use Units s or uptime to get readable values. | |
| system.users.num | Number of users connected. | Number of users | Command who is used on agent side. | |
| vfs.dev.read[device,<type>] | Disk read statistics. | Numeric value | device – disk device (default is all) type – one of sectors, operations, bytes, sps, ops, bps (must specify exactly which parameter to use, since defaults are different under various OSes) |
Example: vfs.dev.read[,operations] Old naming: io[*]
On Linux and FreeBSD vfs.dev.read[<device>, ops/bps/sps] is limited to 8 devices (7 individual devices and one “all” device) |
| vfs.dev.write[device,<type>] | Disk write statistics. | Numeric value | device – disk device (default is all) type – one of sectors, operations, bytes, sps, ops, bps (must specify exactly which parameter to use, since defaults are different under various OSes) |
Example: vfs.dev.write[,operations] Old naming: io[*]
On Linux and FreeBSD vfs.dev.write[<device>, ops/bps/sps] is limited to 8 devices (7 individual devices and one “all” device) |
| vfs.file.cksum[file] | Calculate file check sum | File check sum calculated by algorithm used by UNIX cksum. | file – full path to file | Example of returned value: 1938292000 Example: vfs.file.cksum[/etc/passwd] |
| vfs.file.contents[file,<encoding>] | Get file contents | Text. | file – full path to file | Example: vfs.file.contents[/etc/passwd] This item is limited to files no larger than 64 Kbytes. Supported since Zabbix agent version 2.0. |
| vfs.file.exists[file] | Check if file exists | 0 – file does not exist 1 – file exists | file – full path to file | Example: vfs.file.exists[/tmp/application.pid] |
| vfs.file.md5sum[file] | File's MD5 check sum | MD5 hash of the file. Can be used only for files less than 64MB, unsupported otherwise. | Example of returned value: b5052decb577e0fffd622d6ddc017e82 Example: |
|
| vfs.file.regexp[file,regexp,<encoding>] | Find string in a file | Matched string or EOF if expression not found | file – full path to file, regexp – GNU regular expression encoding – Code Page identifier |
Example: vfs.file.regexp[/etc/passwd,zabbix] |
| vfs.file.regmatch[file,regexp,<encoding>] | Find string in a file | 0 – expression not found 1 – found | file – full path to file regexp – GNU regular expression encoding – Code Page identifier |
Example: vfs.file.regmatch[/var/log/app.log,error] |
| vfs.file.size[file] | File size | Size in bytes. | file – full path to file | File must have read permissions for user zabbix Example: vfs.file.size[/var/log/syslog] |
| vfs.file.time[file,<mode>] | File time information. | Number of seconds. | file – full path to file mode – one of modify (default, modification time), access – last access time, change – last change time |
Example: vfs.file.time[/etc/passwd,modify] |
| vfs.fs.inode[fs,<mode>] | Number of inodes | Numeric value | fs – filesystem mode – one of total (default), free, used, pfree (free, percentage), pused (used, percentage) |
Example: vfs.fs.inode[/,pfree] Old naming: vfs.fs.inode.free[*], vfs.fs.inode.pfree[*], vfs.fs.inode.total[*] |
| vfs.fs.size[fs,<mode>] | Disk space | Disk space in bytes | fs – filesystem mode – one of total (default), free, used, pfree (free, percentage), pused (used, percentage) |
In case of a mounted volume, disk space for local file system is returned. Example: vfs.fs.size[/tmp,free] Old naming: vfs.fs.free[*], vfs.fs.total[*], vfs.fs.used[*], vfs.fs.pfree[*], vfs.fs.pused[*] |
| vm.memory.size[<mode>] | Memory size | Memory size in bytes | mode – one of total (default), shared, free, buffers, cached, pfree, available | Old naming: vm.memory.buffers, vm.memory.cached, vm.memory.free, vm.memory.shared, vm.memory.total |
| web.page.get[host,<path>,<port>] | Get content of WEB page | WEB page source as text | host – hostname path – path to HTML document (default is /) port – port number (default is 80) |
Returns EOF on fail. Example: web.page.get[www.zabbix.com,index.php,80] |
| web.page.perf[host,<path>,<port>] | Get timing of loading full WEB page | Time in seconds | host – hostname path – path to HTML document (default is /) port – port number (default is 80) |
Returns 0 on fail. Example: web.page.perf[www.zabbix.com,index.php,80] |
| web.page.regexp[host,<path>,<port>,<regexp>,<length>] | Get first occurrence of regexp in WEB page | Matched string | host – hostname path – path to HTML document (default is /) port – port number (default is 80) regexp – GNU regular expression length – maximum number of characters to return |
Returns EOF on fail (no match). Example: web.page.regexp[www.zabbix.com,index.php,80,OK,2] |
WIN32-specific parameters
This section contains description of parameter supported by Zabbix WIN32 agent only.
| Key | Description | Return value | Comments |
|---|---|---|---|
| perf_counter[counter,<interval>] | Value of any performance counter, where “counter” is the counter path, and “interval” is the time period for storing the average value. | Average value of the “counter” during last “interval” seconds. Default value, if not given, for “interval” is 1. | Performance Monitor can be used to obtain list of available counters. Until version 1.6 this parameter will return correct value only for counters that require just one sample (like \System\Threads). It will not work as expected for counters that require more that one sample – like CPU utilisation. Since 1.6 interval is used, so the check returns an average value for last “interval” seconds every time. |
| service_state[*] | State of service. Parameter is service name. | 0 – running 1 – paused 2 – start pending 3 – pause pending 4 – continue pending 5 – stop pending 6 – stopped 7 – unknown 255 – no such service |
Parameter must be real service name as seen in service properties under “Name:” or name of EXE file. |
| services[<type>,<state>,<exclude>] | List of services, separated by a newline or 0, if list would be empty. | type – one of all (default), automatic, manual, disabled state – one of all (default), stopped, started, start_pending, stop_pending, running, continue_pending, pause_pending, paused exclude – list of services to exclude it from the result. Excluded services should be written in double quotes, separated by comma, without spaces. This parameter is supported starting from version 1.8.1. |
Examples: services[,started] – list of started services services[automatic, stopped] – list of stopped services, that should be run services[automatic, stopped, “service1,service2,service3”] -list of stopped services, that should be run, excluding services with names service1,service2 and service3 |
| proc_info[<process>,<attribute>,<type>] | Different information about specific process(es). | <process> – process name (same as in proc_cnt[] parameter) <attribute> – requested process attribute. |
The following attributes are currenty supported: vmsize – Size of process virtual memory in Kbytes wkset – Size of process working set (amount of physical memory used by process) in Kbytes pf – Number of page faults ktime – Process kernel time in milliseconds utime – Process user time in milliseconds io_read_b – Number of bytes read by process during I/O operations io_read_op – Number of read operation performed by process io_write_b – Number of bytes written by process during I/O operations io_write_op – Number of write operation performed by process io_other_b – Number of bytes transferred by process during operations other than read and write operations io_other_op – Number of I/O operations performed by process, other than read and write operations gdiobj – Number of GDI objects used by process userobj – Number of USER objects used by process <type> – representation type (meaningful when more than one process with the same name exists). Valid values are: min – minimal value among all processes named <process> max – maximal value among all processes named <process> avg – average value for all processes named <process> sum – sum of values for all processes named <process> Examples: 1. In order to get the amount of physical memory taken by all Internet Explorer processes, use the following parameter: proc_info[iexplore.exe,wkset,sum] 2. In order to get the average number of page faults for Internet Explorer processes, use the following parameter: proc_info[iexplore.exe,pf,avg] Note: All io_xxx,gdiobj and userobj attributes available only on Windows 2000 and later versions of Windows, not on Windows NT 4.0. |
19.5 SNMP Agent
Zabbix must be configured with SNMP support in order to be able to retrieve data provided by SNMP agents.
The following steps have to be performed in order to add monitoring of SNMP parameters:
Step 1
Create a host for the SNMP device.
Enter an IP address and a port of 161. Set the host Status to NOT MONITORED. You can use the host.SNMP template which would automatically add set of items. However, the template may not be compatible with the host.
Step 2
Find out the SNMP string of the item you want to monitor.
After creating the host, use 'snmpwalk' (part of ucd-snmp/net-snmp software which you should have installed as part of the Zabbix installation) or equivalent tool:
shell> snmpwalk <host or host IP> public
This will give you a list of SNMP strings and their last value. If it doesn't then it is possible that the SNMP 'community' is different from the standard public in which case you will need to find out what it is. You would then go through the list until you find the string you want to monitor, e.g. you wanted to monitor the bytes coming in to your switch on port 3 you would use:
interfaces.ifTable.ifEntry.ifOctetsIn.3 = Counter 32: 614794138
You should now use the snmpget command to find the OID for interfaces.ifTable.ifEntry.ifInOctets.3:
shell> snmpget -On 10.62.1.22 interfaces.ifTable.ifEntry.ifOctetsIn.3
where the last number in the string is the port number you are looking to monitor. This should give you something like the following:
.1.3.6.1.2.1.2.2.1.10.3 = Counter32: 614794138
again the last number in the OID is the port number.
3COM seem to use port numbers in the hundreds, e.g. port 1=port 101, port 3=port 103, but Cisco use regular numbers, e.g. port 3=3.
Step 3
Create an item for monitoring.
So, now go back to Zabbix and click on Items, selecting the SNMP host you created earlier. Depending on whether you used a template or not when creating your host you will have either a list of SNMP items associated with your host or just a new item box. We will work on the assumption that you are going to create the item yourself using the information you have just gathered using snmpwalk and snmpget, so enter a plain English description in the 'Description' field of the new item box. Make sure the 'Host' field has your switch/router in it and change the 'Type' field to “SNMPv1 agent”. Enter the community (usually public) and enter the numeric OID that you retrieved earlier in to the 'SNMP OID' field being sure to include the leading dot, i.e. .1.3.6.1.2.1.2.2.1.10.3
Enter the 'SNMP port' as 161 and the 'Key' as something meaningful, e.g. SNMP-InOctets-Bps. Choose the Multiplier if you want one and enter an 'update interval' and 'keep history' if you want it to be different from the default. Set the 'Status' to Monitored, the 'Type of information' to Numeric (float) and the 'Store value' to DELTA (important otherwise you will get cumulative values from the SNMP device instead of the latest change).
Now save the item and go back to the hosts area of Zabbix. From here set the SNMP device to be Monitored and check in Latest data for your SNMP data!
Example 1
General example
| Parameter | Description |
|---|---|
| Community | public |
| Oid | 1.2.3.45.6.7.8.0 (or .1.2.3.45.6.7.8.0) |
| Key | <Unique string to be used as reference to triggers> For example, ‘my_param’. |
Note that OID can be given in either numeric or string form. However, in some cases, string OID must be converted to numeric representation. Utility snmpget may be used for this purpose:
shell> snmpget -On localhost public enterprises.ucdavis.memory.memTotalSwap.0
Monitoring of SNMP parameters is possible if either -with-net-snmp or -with-ucd-snmp flag was specified while configuring Zabbix sources.
Example 2
Monitoring of Uptime
| Parameter | Description |
|---|---|
| Community | public |
| Oid | MIB::sysUpTime.0 |
| Key | router.uptime |
| Value type | Float |
| Units | uptime |
| Multiplier | 0.01 |
19.6 Simple checks
Simple checks are normally used for agent-less monitoring or for remote checks of services. Note that Zabbix agent is not needed for simple checks. Zabbix server is responsible for processing of simple checks (making external connections, etc).
All simple checks, except tcp and tcp_perf, accept one optional parameter:
-
port – port number. If missing, standard default service port is used.
Examples of using simple checks:
ftp,155 http http_perf,8080
List of supported simple checks:
| Key | Description | Return value |
|---|---|---|
| ftp,<port> | Checks if FTP server is running and accepting connections | 0 – FTP server is down 1 – FTP server is running 2 – timeout |
| ftp_perf,<port> | Checks if FTP server is running and accepting connections | 0 – FTP server is down Otherwise, number of seconds spent connecting to FTP server. |
| http,<port> | Checks if HTTP server is running and accepting connections | 0 – HTTP server is down 1 – HTTP server is running 2 – timeout |
| http_perf,<port> | Checks if HTTP (WEB) server is running and accepting connections | 0 – HTTP (WEB) server is down Otherwise, number of seconds spent connecting to HTTP server. |
| icmpping[<target>,<packets>,<interval>,<size>,<timeout>] | Checks if server is accessible by ICMP ping target – host IP or DNS name packets – number of packets interval – time between successive packets in milliseconds size – packet size in bytes timeout – timeout in milliseconds |
0 – ICMP ping fails 1 – ICMP ping successful |
| icmppingloss[<target>,<packets>,<interval>,<size>,<timeout>] | Return percentage of lost packets target – host IP or DNS name packets – number of packets interval – time between successive packets in milliseconds size – packet size in bytes timeout – timeout in milliseconds |
Loss of packets in percents |
| icmppingsec[<target>,<packets>,<interval>,<size>,<timeout>,<mode>] | Return ICMP ping response time target – host IP or DNS name packets – number of packets interval – time between successive packets in milliseconds size – packet size in bytes timeout – timeout in milliseconds mode – one of min, max, avg (default) |
Number of seconds |
| imap,<port> | Checks if IMAP server is running and accepting connections | 0 – IMAP server is down 1 – IMAP server is running 2 – timeout |
| imap_perf,<port> | Checks if IMAP server is running and accepting connections | 0 – IMAP server is down Otherwise, number of seconds spent connecting to IMAP server. |
| ldap,<port> | Checks if LDAP server is running and accepting connections | 0 – LDAP server is down 1 – LDAP server is running 2 – timeout |
| ldap_perf,<port> | Checks if LDAP server is running and accepting connections | 0 – LDAP server is down Otherwise, number of seconds spent connecting to LDAP server. |
| nntp,<port> | Checks if NNTP server is running and accepting connections | 0 – NNTP server is down 1 – NNTP server is running 2 – timeout |
| nntp_perf,<port> | Checks if NNTP server is running and accepting connections | 0 – NNTP server is down Otherwise, number of seconds spent connecting to NNTP server. |
| ntp,<port> | Checks if NTP server is running and accepting connections | 0 – NTP server is down 1 – NTP server is running 2 – timeout |
| ntp_perf,<port> | Checks if NTP server is running and accepting connections | 0 – NTP server is down Otherwise, number of seconds spent connecting to NTP server. |
| pop,<port> | Checks if POP server is running and accepting connections | 0 – POP server is down 1 – POP server is running 2 – timeout |
| pop_perf,<port> | Checks if POP server is running and accepting connections | 0 – POP server is down Otherwise, number of seconds spent connecting to POP server. |
| smtp,<port> | Checks if SMTP server is running and accepting connections | 0 – SMTP server is down 1 – SMTP server is running 2 – timeout |
| smtp_perf,<port> | Checks if SMTP server is running and accepting connections | 0 – SMTP server is down Otherwise, number of seconds spent connecting to SMTP server. |
| ssh,<port> | Checks if SSH server is running and accepting connections | 0 – SSH server is down 1 – SSH server is running 2 – timeout |
| ssh_perf,<port> | Checks if SSH server is running and accepting connections | 0 – SSH server is down Otherwise, number of seconds spent connecting to SSH server. |
| tcp,port | Checks if TCP service is running and accepting connections | 0 – TCP service is down 1 – TCP service is running 2 – timeout |
| tcp_perf,port | Checks if TCP service is running and accepting connections | 0 – the service on the port is down Otherwise, number of seconds spent connecting to the TCP service. |
Timeout processing
Zabbix will not process a simple check longer than Timeout seconds defined in Zabbix server configuration file.
In case if Timeout time is exceeded, 2 is returned.
ICMP pings
Zabbix uses external utility fping for processing of ICMP pings. The utility is not part of Zabbix distribution and has to be additionally installed. If the utility is missing, has wrong permissions or its location does not match FpingLocation defined in configuration file, ICMP pings (icmpping, icmppingsec and icmppingloss) will not be processed.
Run these commands as user root in order to setup correct permissions:
shell> chown root:zabbix /usr/sbin/fping shell> chmod 710 /usr/sbin/fping shell> chmod ug+s /usr/sbin/fping
The default values for ICMP checks parameters:
| Parameter | Value | Description | fping flag | Min | Max |
|---|---|---|---|---|---|
| packets | 3 | pings to the target | -c | 1 | 10000 |
| interval | 25 | milliseconds, “fping” default | -p | 20 | |
| size | 56 or 68 | bytes, “fping” default; 56 bytes on x86, 68 bytes on x86_64 | -b | 24 | 65507 |
| timeout | 500 | milliseconds, “fping” default | -t | 50 |
Zabbix writes addresses to be checked to a temporary file, which is then passed to fping. If items have different parameters, only ones with identical parameters are written to a single file.
19.7 Internal checks
Internal checks allow monitoring of internals of Zabbix. Internal checks are calculated by Zabbix Server.
| Key | Description | Comments | ||
|---|---|---|---|---|
| zabbix[boottime] | Startup time of Zabbix server process in seconds. | Unix timestamp. | ||
| zabbix[history] | Number of values stored in table HISTORY | Do not use if MySQL InnoDB, Oracle or PostgreSQL is used! | ||
| zabbix[history_log] | Number of values stored in table HISTORY_LOG | Do not use if MySQL InnoDB, Oracle or PostgreSQL is used! This item is supported starting from version 1.8.3. |
||
| zabbix[history_str] | Number of values stored in table HISTORY_STR | Do not use if MySQL InnoDB, Oracle or PostgreSQL is used! | ||
| zabbix[history_text] | Number of values stored in table HISTORY_TEXT | Do not use if MySQL InnoDB, Oracle or PostgreSQL is used! This item is supported starting from version 1.8.3. |
||
| zabbix[history_uint] | Number of values stored in table HISTORY_UINT | Do not use if MySQL InnoDB, Oracle or PostgreSQL is used! This item is supported starting from version 1.8.3. |
||
| zabbix[items] | Number of items in Zabbix database | |||
| zabbix[items_unsupported] | Number of unsupported items in Zabbix database | |||
| zabbix[log] | Stores warning and error messages generated by Zabbix server. | Character. Add item with this key to have Zabbix internal messages stored. | ||
| zabbix[proxy,<name>,<param>] | Access to Proxy related information. | <name> – Proxy name List of supported parameters (<param>): lastaccess – timestamp of last heart beat message received from Proxy For example, zabbix[proxy,”Germany”,lastaccess] Trigger function fuzzytime() can be used to check availability of proxies. |
||
| zabbix[queue,<from>,<to>] | Number of server monitored items in the Queue which are delayed by <from> to <to> seconds, inclusive. | <from> – default: 6 seconds <to> – default: infinity Suffixes s,m,h,d,w are supported for these parameters. Parameters from and to are supported starting from version 1.8.3. |
||
| zabbix[trends] | Number of values stored in table TRENDS | Do not use if MySQL InnoDB, Oracle or PostgreSQL is used! | ||
| zabbix[trends_uint] | Number of values stored in table TRENDS_UINT | Do not use if MySQL InnoDB, Oracle or PostgreSQL is used! This item is supported starting from version 1.8.3. |
||
| zabbix[triggers] | Number of triggers in Zabbix database | |||
| zabbix[uptime] | Uptime of Zabbix server process in seconds. | |||
| zabbix[wcache,<cache>,<mode>] | Cache | Mode | ||
| values | all | Number of values processed by Zabbix server. | It is the best indicator of Zabbix performance. | |
| float | ||||
| uint | ||||
| str | ||||
| log | ||||
| text | ||||
| history | pfree | Free space in the history buffer in percentage. | Low number indicates performance problems on the database side. | |
| total | ||||
| used | ||||
| free | ||||
| trend | pfree | |||
| total | ||||
| used | ||||
| free | ||||
| text | pfree | |||
| total | ||||
| used | ||||
| free | ||||
| zabbix[rcache,<cache>,<mode>] | Cache | Mode | ||
| buffer | pfree | |||
| total | ||||
| used | ||||
| free | ||||
19.8 Aggregated checks
Aggregate checks do not require any agent running on a host being monitored. Zabbix server collects aggregate information by doing direct database queries.
Syntax of aggregate item's key
groupfunc["Host group","Item key","item func","parameter"]
Supported group functions:
| GROUP FUNCTION | DESCRIPTION |
|---|---|
| grpavg | Average value |
| grpmax | Maximum value |
| grpmin | Minimum value |
| grpsum | Sum of values |
Supported item functions:
| ITEM FUNCTION | DESCRIPTION |
|---|---|
| avg | Average value |
| count | Number of values |
| last | Last value |
| max | Maximum value |
| min | Minimum value |
| sum | Sum of values |
Examples of keys for aggregate items:
Example 1
Total disk space of host group 'MySQL Servers'.
grpsum["MySQL Servers","vfs.fs.size[/,total]","last","0"]
Example 2
Average processor load of host group 'MySQL Servers'.
grpavg["MySQL Servers","system.cpu.load[,avg1]","last","0"]
Example 3
Average (5min) number of queries per second for host group 'MySQL Servers'
grpavg["MySQL Servers","mysql.qps","avg","300"]
19.9 External checks
External check is a check executed by Zabbix Server by running a shell script or a binary.
External checks do not require any agent running on a host being monitored.
Syntax of item's key:
script[parameters] * script – name of the script. * parameters – list of command line parameters.
If you don't want to pass your parameters to the script you may use:
script[] or script <- this simplified syntax is supported starting from Zabbix 1.8.1
Zabbix server will find and execute the command in directory defined in configuration parameter ExternalScripts in zabbix_server.conf. Command will be executed as the user Zabbix server runs as, so any access permissions or environment variables should be handled in a wrapper script, if necessary, and permissions on the command should allow that user to execute it. Only commands in the specified directory are available.
First command line parameter is host name, other parameters are substituted by parameters.
Zabbix uses the standard output of the script as the value. Standard error and exit code are discarded.
Example 1
Execute script check_oracle.sh with parameters ”-h 192.168.1.4”. Host name 'www1.company.com'.
check_oracle.sh[-h 192.168.1.4]
Zabbix will execute:
check_oracle.sh www1.company.com -h 192.168.1.4.
19.10 SSH checks
Zabbix must be configured with SSH2 support.
SSH checks are used for agent-less monitoring. Note that Zabbix agent is not needed for SSH checks.
Actual commands to be executed must be placed in the Executed script field in the item configuration. Multiple commands can be executed one after another by placing them on a new line.
| Key | Description | Comments |
|---|---|---|
| ssh.run[<unique short description>,<ip>,<port>,<encoding>] | Run a command by using SSH remote session |
19.11 Telnet checks
Telnet checks are used for agent-less monitoring. Zabbix agent is not needed for Telnet checks.
Actual commands to be executed must be placed in the Executed script field in the item configuration. Multiple commands can be executed one after another by placing them on a new line.
Till version 1.8.1, supported characters that prompt the prompt can end with:
-
$
-
#
-
>
Zabbix version 1.8.2 adds support for additional character:
-
%
| Key | Description | Comments |
|---|---|---|
| telnet.run[<unique short description>,<ip>,<port>,<encoding>] | Run a command on a remote device using telnet connection |
19.12 Calculated items
Calculated items is a very nice way of creating virtual data sources. Item values will be periodically calculated based on a arithmetical expression.
Resulting data will be stored in Zabbix database as for any other item – this means storing both history and trends values for fast graph generation.
To use calculated items, choose item type Calculated. You can create any key name using supported symbols. Calculation definition should be entered in the Formula field (named Expression in 1.8.1 and 1.8.2). Key is a unique identifier (per host), using allowed symbols.
A very simple expression might look like:
func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)
More complex expression may use a combination of functions, operators and brackets. You could use all functions and operators supported in trigger expressions. Note that syntax is slightly different, however logic and operator precedence are exactly the same.
| ARGUMENT | DEFINITION |
|---|---|
| func | One of functions supported by trigger expressions: last, min, max, avg, count, etc |
| host:key | Is a reference to an item. It may be defined as key or hostname:key |
| parameter(s) | Optional parameters |
Supported characters for a hostname:
a..zA..Z0..9 ._-
Supported characters for a key:
a..zA..Z0..9.,_
Supported characters for a function:
a..zA..Z0..9_
Unlike trigger expressions, Zabbix processes calculated items according to item update interval, not upon receiving a new value. Also if you change item key of a referenced item, you have to update all formulas that used the old key manually.
A calculated item may become unsupported in several cases:
-
referenced item(s) not found
-
no data to calculate a function
-
division by zero
-
syntax errors
Example 1
Calculate percentage of free disk space on '/'.
Use of function last:
100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]")
Zabbix will take the latest values for free and total disk spaces and calculate percentage according to the given formula.
Example 2
Calculate 10 minute average number of values processed by Zabbix.
Use of function avg:
avg("Zabbix Server:zabbix[wcache,values]",600)
Note that extensive use of calculated items with long time periods may affect performance of Zabbix Server.
Example 3
Calculate total bandwidth on eth0.
Sum of two functions:
last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]")
Example 4
Calculate percentage of incoming traffic.
More complex expression:
100*last("net.if.in[eth0,bytes]")/(last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]"))
10 Paramètres Utilisateurs
Les fonctionnalités des agents Zabbix peuvent être améliorées en definissant des paramètres utilisateurs (UserParameter) dans le fichier de configuration de l'agent.
Les paramètres utilisateurs sont des commandes, exécutées pas l'agent zabbix.
10.1 Paramètres utilisateurs simples
Dans le but de définir un nouveau paramètre pour la supervision, une ligne doit être ajoutée au fichier de configuration de l'agent zabbix qui doit être redémarré.
Le paramètre utilisateur possède la syntaxe suivante:
UserParameter=clé,commande
| Paramètre | Description |
|---|---|
| clé | Clé d'item unique. |
| Commande | La commande qui doit être exécutée pour évaluer la valeur de la clé. |
Exemple 1
Commande simple
UserParameter=ping,echo 1
L'agent retournera toujours '1' pour l'item avec la clé 'ping'.
Exemple 2
Exemple plus complexe
UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc –l
L'agent retournera '1', si le serveur MySQL tourne et '0' dans le cas contraire.
10.2 Paramètres utilisateur flexibles
Les paramètres utilisateur flexibles peuvent être utilisés pour plus de contrôle et de fléxibilité.
Pour des paramètres utilisateur flexibles,
UserParameter=clé[*],commande
| Paramètre | Description |
|---|---|
| Clé | Clé d'item unique. Le symbole [*] spécifie que cette clé accepte les paramètres. |
| Commande | La commande qui doit être exécutée pour évaluer la valeur de la clé. Zabbix analyse le contenu de [] et substitue $1,…,$10 dans la commande. |
\ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @ \0
Exemple 1
Quelque chose de très simple
UserParameter=ping[*],echo $1
Nous pouvons définir un nombre illimité d'items pour tout superviser en ayant le format ping[quelque chose].
-
ping[0] – retournera toujours '0'
-
ping[aaa] – retournera toujours 'aaa'
Exemple 2
Ajoutons un peu plus de sens!
UserParameter=mysql.ping[*],mysqladmin –u$1 –p$2 ping|grep alive|wc –l
Ce paramètre peut être utilisé pour superviser la disponibilité d'une base de données MySQL. Nous pouvons passer le nom d'utilisateur et le mot de passe:
mysql.ping[zabbix,our_password]
Exemple 3
Combien de lignes correspondent à une expression régulière dans un fichier?
UserParameter=wc[*],grep "$2" $1|wc -l
Ce paramètre peut être utilisé pour calculer le nombre de lignes d'un fichier.
wc[/etc/passwd,root] wc[/etc/services|zabbix]
12 Déclencheurs
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 |
12.1 Expression des déclencheurs
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 |
12.2 Fonctions des déclencheurs
Les fonctions suivantes sont 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 |
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 :
{<serveur>:<clef>.<fonction>(<parametre>)}<operateur><const>
Le paramètre ne doit pas être omis dans ces fonctions, même s'il est ignoré. Par exemple : last(0)
Exemple 1
La charge du processeur est trop élevée sur le serveur www.zabbix.com
{zabbix.com:system.cpu.load[all,avg1].last(0)}>5
‘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.
Exemple 2
zabbix.com est surchargé
{zabbix.com:system.cpu.load[all,avg1].last(0)}>5|{zabbix.com:system.cpu.load[all,avg1].min(600)}>2
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)
Exemple 3
/etc/passwd a été changé
Utilisation de la fonction diff:
{zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0
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.
Exemple 4
Quelqu'un télécharge un gros fichier depuis Internet
Utilisation de la fonction min:
{zabbix.com:net.if.in[eth0,bytes].min(300)}>100K
L'expression renvoie vrai (PROBLEM) quand le nombre d'octets reçus sur eth0 est supérieur à 100Ko sur les 5 dernières minutes.
Example 5
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.
Exemple 6
L'agent Zabbix a besoin d'être mise à jour
Utilisation de la fonction str() :
{zabbix.zabbix.com:agent.version.str(beta8)}=1
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).
Exemple 7
Le serveur ne répond pas
{zabbix.zabbix.com:status.last(0)}=2
La dernière valeur du statut de zabbix.zabbix.com correspond à 2 (aucune réponse)
Example 8
Plus de réception de données lors des trois dernières minutes
Utilisation de la fonction nodata():
{zabbix.zabbix.com:tick.nodata(180)}=1
‘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).
Exemple 9
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.
12.3 Les dépendances dans les déclencheurs
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 :
Zabbix - Routeur1 – Routeur2 - Host
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.
12.4 Sévérité des déclencheurs
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 :
-
d'avoir une représentation visuelle des déclencheurs (code couleur). Différentes couleurs pour les différentes sévérités.
-
d'utiliser des alarmes sonores sur la page Statut des déclencheurs. Différentes alarmes pour les différentes sévérités.
-
d'utiliser les médias d'utilisateur. Différents médias (canaux de notification) pour différentes sévérités. Par exemple, SMS – sévérité haute, mail – les autres.
12.5 Hystérésis
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 :
Exemple 1
La température dans la salle serveur est trop haute
({TRIGGER.VALUE}=0&{server:temp.last(0)}>20)|
({TRIGGER.VALUE}=1&{server:temp.last(0)}>15)
Notez l'utilisation de la macro {TRIGGER.VALUE}. Cette macro retourne la valeur actuelle du déclencheur.
4.14 Services IT
Les Services IT sont destinés à ceux qui désirent avoir une vue de haut niveau (business) des infrastructures monitorées. Dans de nombreux cas, nous ne nous intéressons pas aux détails de bas niveau, tels que le manque d'espace disque, une charge processeur élevée, etc. Ce qui nous intéresse est la disponibilité de service fournie par le département IT. Nous pouvons aussi nous intéresser aux faiblesses de notre infrastructure, au SLA (Service Level Agreement) des différents services IT, à la structure de l'infrastructure IT existante et toute autre information de haut niveau.
Le service IT de Zabbix fournis des réponses à toutes les interrogations mentionnées précédemment.
Le Services IT est une représentation hiérarchique des données monitorées.
Une structure très simple des services IT peut ressembler à :
Service IT | |-Stations de travail | | | |-Station de travail 1 | | | |-Station de travail 2 | |-Serveurs
Chaque nœud de la structure possède un statut sur les attributs. Le statut est calculé et propoagé au niveau supérieur en fonction de l'algorithme sélectionné. Triggers create lowest level of the IT Services. [To be finished…]
16 La file d'attente
16.1 Aperçu
La file d'attente Zabbix affiche les éléments qui sont en attente d'actualisation. La file d'attente est juste une représentation logique des données provenant de la base de données. Il n'y a pas de file d'attente IPC ou tout autre mécanisme de file d'attente dans Zabbix.
Les Statistiques montrées par la file d'attente est un bon indicateur de performance du serveur Zabbix.
16.2 Comment lire
La file d'attente sur une application autonome ou lorsqu'elle est affichée sur un nœud maître montre les items en attentes d'actualisation.
Dans ce cas, nous pouvons voir qu'il y a dix huit éléments de type agent Zabbix en attente d'actualisation depuis 0-5 secondes, et un élément de type agent Zabbix (actif) en attente d'actualisation depuis plus de cinq minutes (il est possible que l'agent soit arrêté?).
A noter que l'information affichée pour un nœud enfant n'est pas à jour. Le nœud maître reçoit l'historique avec un certain délai (normalement, jusqu'à 10 secondes pour un transfert de données inter-nœud), l'information est donc retardée.
Sur la capture d'écran, nous pouvons voir qu'il y a 93 éléments en attente d'actualisation depuis plus de 5 minutes sur le nœud “child node”, cependant nous ne devrions pas croire l'information car elle dépend de plusieurs paramètres:
-
Les performances du nœud enfant
-
Les communications entre le maître et les nœuds enfant
-
La possible différence d'heure locale entre le maître et les nœuds enfant
4.17 Utilitaires
4.17.1 Scripts de démarrage
Ces scripts sont utilisés pour démarrer/arrêter automatiquement les processus Zabbix pendant le démarrage/arrêt du système.
ces scripts sont localisés dans le répertoire misc/init.d.
4.17.2 snmptrap.sh
Ce script est utilisé pour recevoir les traps. Ce script doit être utilisé en combinaison avec snmptrapd, qui fait parti du package net-snmp.
Guide de configuration:
-
Installer snmptrapd (part de net-snmp ou ucd-snmp)
-
Éditer snmptrapd.conf.
Ajouter cette ligne:
traphandle default /bin/bash /home/zabbix/bin/snmptrap.sh
-
Copier misc/snmptrap/snmptrap.sh vers ~zabbix/bin
-
Éditer snmptrap.sh pour configurer les paramètres de base
-
Ajouter un hôte spécifique et un élément trapper (de type “caractère”) à Zabbix. Voir snmptrap.sh pour la clé de l'élément.
-
Lancer snmptrapd
18 Les expressions régulières
des expressions régulière complexes peuvent être créées et testées sur l'interface Zabbix dans le menu Administration → Général → Expressions régulières.
18.1 Utiliser les expressions régulières
Après qu'une expression régulière ai été créées, elle peut être utilisée n'importe ou ou les expressions régulières sont supportées en se référant à son nom, précédé par @, par exemple, @mycustomregexp.
18.2 Les types d'expressions régulières
Toutes les expressions régulières de Zabbix, créées avec l'éditeur avancé ou entrées manuellement, supportent les Expressions rationnelles étendues POSIX.
Data source: Zabbix









