19 Extensions

Aperçu

Bien que Zabbix offre une multitude de fonctionnalités, il reste toujours possible d’y ajouter des capacités supplémentaires. Les extensions constituent un moyen pratique de modifier et d’améliorer les capacités de supervision de Zabbix sans modifier son code source.

Vous pouvez étendre les fonctionnalités de Zabbix soit en utilisant les options d’extension intégrées (éléments trapper, paramètres utilisateur, etc.), soit en utilisant ou en créant des extensions personnalisées (modules chargeables, plugins, etc.).

Cette section fournit un aperçu avec des références vers toutes les options permettant d’étendre Zabbix.

Collecte de données avec des commandes personnalisées

Éléments trapper

Les éléments trapper sont des éléments qui acceptent des données entrantes au lieu de les interroger. Les éléments trapper sont utiles pour envoyer des données spécifiques au serveur ou au proxy Zabbix, par exemple des données périodiques de disponibilité et de performance dans le cas de scripts utilisateur de longue durée d’exécution. L’envoi de données au serveur ou au proxy Zabbix est possible à l’aide de l’utilitaire Zabbix sender ou du protocole Zabbix sender. L’envoi de données au serveur Zabbix est également possible à l’aide de la méthode d’API history.push.

Vérifications externes

Une vérification externe est un élément permettant d’exécuter des contrôles en lançant un exécutable, par exemple un script shell ou un binaire.

Les vérifications externes sont exécutées par le serveur Zabbix ou le proxy (lorsque l’hôte est supervisé par un proxy), et ne nécessitent pas qu’un agent soit exécuté sur l’hôte supervisé.

Paramètres utilisateur

Un paramètre utilisateur est une commande définie par l’utilisateur (associée à une clé définie par l’utilisateur) qui, lorsqu’elle est exécutée, peut récupérer les données dont vous avez besoin depuis l’hôte sur lequel l’agent Zabbix est en cours d’exécution. Les paramètres utilisateur sont utiles pour configurer des éléments d’agent ou d’agent 2 qui ne sont pas prédéfinis dans Zabbix.

Éléments Zabbix agent system.run[]

L’élément agent Zabbix system.run[] est un élément pour une commande définie par l’utilisateur (associée à une clé prédéfinie system.run[], par exemple system.run[myscript.sh]) qui peut être exécutée sur l’hôte où l’agent Zabbix est en cours d’exécution.

Remarque : les éléments system.run[] sont désactivés par défaut et, s’ils sont utilisés, doivent être activés (autorisés) et définis dans le fichier de configuration de l’agent Zabbix ou de l’agent 2 (paramètre de configuration AllowKey).

Les commandes définies par l'utilisateur dans des éléments tels que les vérifications externes, les paramètres utilisateur et les éléments d'agent Zabbix system.run[] sont exécutées par l'utilisateur du système d'exploitation utilisé pour exécuter les composants Zabbix. Pour exécuter ces commandes, cet utilisateur doit disposer des autorisations nécessaires.

Éléments d’agent HTTP

L’élément HTTP agent est un élément permettant d’exécuter des requêtes de données via HTTP/HTTPS. Les éléments d’agent HTTP sont utiles pour envoyer des requêtes à des points de terminaison HTTP afin de récupérer des données depuis des services tels que Elasticsearch et OpenWeatherMap, pour vérifier l’état de l’API Zabbix ou l’état du serveur web Apache ou Nginx, etc. Les éléments d’agent HTTP (avec le trapping activé) peuvent également fonctionner comme des éléments trapper.

Éléments de script

Un élément de script est un élément permettant d’exécuter du code JavaScript défini par l’utilisateur afin de récupérer des données via HTTP/HTTPS. Les éléments de script sont utiles lorsque les fonctionnalités fournies par les éléments d’agent HTTP ne suffisent pas. Par exemple, dans des scénarios exigeants de collecte de données nécessitant plusieurs étapes ou une logique complexe, un élément de script peut être configuré pour effectuer un appel HTTP, puis traiter les données reçues, puis transmettre la valeur transformée à un second appel HTTP.

Les éléments d’agent HTTP et les éléments de script sont pris en charge par le serveur et le proxy Zabbix, et ne nécessitent pas qu’un agent soit exécuté sur l’hôte surveillé.

Extensions avancées

Modules chargeables

Les modules chargeables, écrits en C, constituent une option polyvalente et axée sur les performances pour étendre les fonctionnalités des composants Zabbix (server, proxy, agent) sur les plateformes UNIX. Un module chargeable est essentiellement une bibliothèque partagée utilisée par le démon Zabbix et chargée au démarrage. La bibliothèque doit contenir certaines fonctions, afin qu’un processus Zabbix puisse détecter que le fichier est bien un module qu’il peut charger et utiliser.

Les modules chargeables présentent un certain nombre d’avantages, notamment la possibilité d’ajouter de nouvelles métriques ou d’implémenter toute autre logique (par exemple, l’export des données d’historique de Zabbix), d’excellentes performances, ainsi que la possibilité de développer, d’utiliser et de partager les fonctionnalités qu’ils fournissent. Cela contribue à une maintenance sans difficulté et permet de fournir plus facilement de nouvelles fonctionnalités, indépendamment du code de base de Zabbix.

Les modules chargeables sont particulièrement utiles dans une configuration de supervision complexe. Lors de la supervision de systèmes embarqués, avec un grand nombre de paramètres supervisés ou des scripts lourds avec une logique complexe ou un long temps de démarrage, des extensions telles que les paramètres utilisateur, les éléments d’agent Zabbix system.run[] et les vérifications externes auront un impact sur les performances. Les modules chargeables offrent un moyen d’étendre les fonctionnalités de Zabbix sans sacrifier les performances.

Plugins

Les plugins étendent les capacités de supervision de Zabbix agent 2. Écrits dans le langage de programmation Go, ils constituent une alternative aux modules chargeables (écrits en C).

Un plugin est un package Go qui définit la structure et implémente une ou plusieurs interfaces de plugin (Exporter, Collector, Configurator, Runner, Watcher). Deux types de plugins Zabbix agent 2 sont pris en charge :

Consultez la liste des plugins fournis par Zabbix.

Pour des instructions et des tutoriels sur la création de vos propres plugins, consultez le Centre de développement.

Personnalisation des alertes

Webhooks

Un webhook est un type de média Zabbix qui offre la possibilité d’étendre les capacités d’alerte de Zabbix à des logiciels externes tels que des systèmes de helpdesk, des chats ou des messageries. À l’instar des éléments script, les webhooks sont utiles pour effectuer des appels HTTP à l’aide de code JavaScript personnalisé, par exemple pour envoyer des notifications vers différentes plateformes telles que Microsoft Teams, Discord et Jira. Il est également possible de renvoyer certaines données (par exemple, concernant les tickets de helpdesk créés) qui sont ensuite affichées dans Zabbix.

Les webhooks existants sont disponibles dans le dépôt Git de Zabbix. Pour le développement de webhooks personnalisés, consultez les Directives de développement des webhooks.

Scripts d'alerte

Un script d'alerte est un type de média de Zabbix qui offre la possibilité de créer une autre méthode (script) pour gérer les alertes Zabbix. Les scripts d'alerte sont utiles si les types de média existants pour l'envoi d'alertes dans Zabbix ne vous conviennent pas.

Personnalisation du frontend

Thèmes personnalisés

Il est possible de modifier l’apparence visuelle de l’interface web de Zabbix en utilisant des thèmes personnalisés. Consultez les instructions sur la création et l’application de vos propres thèmes.

Modules d'interface web

Les modules d'interface web offrent une possibilité d'étendre les fonctionnalités de l'interface web de Zabbix en ajoutant des modules tiers ou en développant les vôtres. Avec les modules d'interface web, vous pouvez ajouter de nouveaux éléments de menu, leurs vues respectives, actions, etc.

Scripts globaux

Un script global est un ensemble de commandes défini par l’utilisateur qui peut être exécuté sur une cible de supervision (par l’interpréteur shell (/bin/sh)), selon la portée configurée et les autorisations de l’utilisateur. Les scripts globaux peuvent être configurés pour les actions suivantes :

Les scripts globaux sont utiles dans de nombreux cas. Par exemple, s’ils sont configurés pour des opérations d’action ou des actions manuelles sur l’hôte, vous pouvez utiliser des scripts globaux pour exécuter automatiquement ou manuellement des commandes distantes telles que le redémarrage d’une application (serveur web, middleware, CRM, etc.) ou la libération d’espace disque (suppression des fichiers anciens, nettoyage de /tmp, etc.). Autre exemple : s’ils sont configurés pour des actions manuelles sur les événements, vous pouvez utiliser des scripts globaux pour gérer des tickets d’incident dans des systèmes externes.

Les scripts globaux peuvent être exécutés par le serveur Zabbix, le proxy ou l’agent.

Les commandes définies par l'utilisateur sont exécutées par l'utilisateur du système d'exploitation utilisé pour exécuter les composants Zabbix. Pour exécuter ces commandes, cet utilisateur doit disposer des autorisations nécessaires.

API Zabbix

L'API Zabbix est une API basée sur HTTP qui fait partie du frontend Zabbix. Avec l'API Zabbix, vous pouvez effectuer l'une des opérations suivantes :

  • Récupérer et modifier par programmation la configuration de Zabbix.
  • Importer et exporter la configuration de Zabbix.
  • Accéder aux données historiques et aux tendances de Zabbix.
  • Configurer des applications pour qu'elles fonctionnent avec Zabbix.
  • Intégrer Zabbix à des logiciels tiers.
  • Automatiser les tâches de routine.

L'API Zabbix se compose d'un grand nombre de méthodes, regroupées nominalement en API distinctes. Chaque méthode exécute une tâche spécifique. Pour connaître les méthodes disponibles, ainsi qu'un aperçu des fonctions fournies par l'API Zabbix, consultez la Référence des méthodes de l'API Zabbix.