Zabbix : superviser votre infrastructure – installation et configuration avec Docker

Dans ce tutoriel, je vais vous expliquer comment mettre en place Zabbix avec Docker pour superviser votre infrastructure serveurs et réseaux.

Pour ce qui me suive régulièrement, j’ai longtemps été adepte de PRTG pour sa « simplicité » mais qui a certaine limite comparé à Zabbix. Je reviendrai dessus sur un article expliquant pourquoi aujourd’hui je préfère Zabbix.

Présentation de Zabbix

Si vous ne connaissez Zabbix, je vais vous faire une présentation rapide, vous pouvez également lire la page Wikipedia.

Zabbix est un utilitaire Open source de supervision réseaux et système (Serveurs, applicatifs, bases de données …). Zabbix fonctionne sous environnement Linux, il peut être installé directement sur un Linux ou en conteneur à l’aide Docker.

Zabbix est composé de plusieurs éléments :

  • Le serveur Zabbix qui est le service de supervision, il est publié sur le port 10051, il a la charge d’interroger les équipements, collecter et traiter les données.
  • La base de données où les informations sont stockés, il est possible d’utiliser MySQL/MariaDB, PostgreSQL ou encore Oracle.
  • L’interface utilisateur, qui est une interface graphique écrite en PHP, il est possible d’utiliser différent serveur Web (Apache2, Nginx)
  • Il existe aussi un agent Java pour la supervision des Jvm.
  • Zabbix proxy : qui est un composant optionnel, qui peut être utiliser sur des sites distants pour centraliser la supervision par celui-ci où sur des grosses infrastructure pour répartir la charge.

Pour superviser les équipements, Zabbix prend en charge plusieurs méthodes :

  • Agent : il est possible d’installer un agent sur les serveurs (Windows / Linux) pour collecter les données et ensuite les envoyer aux serveurs ou ou proxy, il existe deux versions de l’agent, une version écrite en C et l’autre en Go (Zabbix Agent 2). https://www.zabbix.com/documentation/current/en/manual/appendix/agent_comparison Les agents ont également deux méthodes de fonctionnement (active et passive). Pour faire simple, en mode passive (mode par défaut), c’est le serveur Zabbix (ou le proxy) qui va contacter l’agent et lui demander les métriques, en mode active, l’agent récupère sa configuration auprès du serveur Zabbix (ou du proxy) et envoie ensuite les données aux serveurs.
  • SNMP : comme tous les outils de monitoring, Zabbix prend en charge le protocole SNMP.
  • IPMI : qui est un protocole standard pour la supervision d’éléments physique comme Idrac / Ilo.

Prérequis

Comment je l’ai dit en introduction, nous allons utiliser Docker pour « installer » Zabbix, vous aurez donc besoin d’un serveur Linux ( pour ma part Ubuntu) avec Docker et Docker Compose d’installés.

Si vous utilisez Ubuntu, voici un script pour l’installation de Docker et Docker Compose :

Installation de Zabbix avec docker-compose

Pour l’installation de Zabbix avec Docker, nous allons utiliser un fichier docker-compose.yml pour configurer les différents de Zabbix :

  • Le serveur Zabbix
  • La base de données (MariaDB)
  • L’interface Web
  • Un agent de supervision pour le serveur Zabbix.

Pour vous facilitez la tâche, j’ai créé un dépôt avec les fichiers nécessaires qui se trouve ici : https://git.rdr-it.io/docker/zabbix.

Sur votre serveur créé un dossier, qui va recevoir une copie des fichiers du dépôt et les données de Zabbix.

Sur mon serveur, je vais utiliser le dossier /containers/zabbix.

Une fois dans votre dossier, entrer la commande ci-dessous pour cloner le dépôt :

sudo git clone https://git.rdr-it.io/docker/zabbix.git .

Si on affiche le contenu, on a les fichiers :

On a bien le fichier docker-compose.yml, qui contient la définitions des différents conteneurs.

Avant de récupérer les images et de les démarrer, je vous conseille de modifier les mots de passe pour la base MariaDB.

Aller dans le dossier env_vars qui contient les différents fichiers de configuration.

cd env_vars

A minima, éditer les fichiers .MYSQL_PASSWORD et .MYSQL_ROOT_PASSWORD, changer par un mot de passe personnalisé.

Remonter d’un niveau dans les dossiers pour retourner où se trouve le fichier docker-compose.yml.

On va maintenant pouvoir télécharger les images, avant je vous invite à lire le fichier docker-compose.yml dont voici un aperçu :

Sur la capture, on peut voir la configuration du conteneur du serveur Zabbix et aperçu du conteneur qui gère le GUI.

Au passage, on voit que le serveur est publié sur le port 10051 et que le serveur web sur le port 8080.

En fonction de vos besoins, éditer le fichier.

C’est partie, on peut maintenant télécharger les différentes images, pour cela entrer la commande suivante :

sudo docker-compose pull
Download Zabbix image container

Patienter pendant le téléchargement des images.

On va maintenant pouvoir lancer les conteneurs pour démarrer Zabbix.

Pour le premier démarrage, je vous conseille de ne pas détacher l’exécution des conteneurs afin d’avoir le retour dans le terminal, pour cela on démarré les conteneurs sans l’option -d.

Entrer la commande suivante :

sudo docker-compose up

Patienter pendant le démarrage des différentes images et de la configuration « automatique » de Zabbix notamment la création de la base de données.

Patienter 5 minutes …

Quand dans le terminal, vous avez en retour plusieurs ligne avec curl/7.80.0 on peut considérer que tout est bon.

Le meilleur moyen de savoir si tout fonctionne maintenant et d’essayer d’aller sur Zabbix depuis un navigateur.

Depuis un navigateur Internet, entrer l’adresse http://ip_server_zabbix:8080, si vous arrivez sur le page d’authentification Zabbix, c’est tout bon !

Zabbix login

Félicitation, vous avez déployer Zabbix, mais c’est que le début !.

Premier pas avec Zabbix

Maintenant que notre serveur est Zabbix est prêt, nous allons découvrir son interface et commencer à le manipuler, notamment en configurant l’agent qui permet de superviser le serveur Zabbix lui-même.

Pour se connecter à Zabbix, on va commencer avec le compte par défaut dont l’identifiant est Admin 1 et le mot de passe zabbix 2, une fois les identifiants entrés, cliquer sur Sign in 3.

Une fois connecté, on arrive sur page avec un tableau de bord (Dashboard) vide pour le moment. Ce tableau de bord permet de voir d’un seul coup d’œil, les différents problèmes, s’il y en a.

Zabbix Dashboard

Comment vous pouvez le voir, l’interface est « assez simple », sur la partie de gauche, vous avez menu de navigation qui permet d’accéder à l’ensemble des fonctionnalités et configuration de Zabbix, nous verrons dans ce tutoriel quelques éléments et d’autre seront abordés dans d’autres tutoriels.

Il y a plusieurs Tableau de bord disponible par défaut, cliquer sur All dashboards 1 qui se trouve dans le fil d’ariane.

On arrive sur la liste des tableaux de bords disponible, par défaut, il y en 3, cliquer sur Zabbix server health 1.

On arrive sur le tableau de bord de l’état de santé du serveur Zabbix

Zabbix server health

Pour le moment, celui ci est incomplet, car l’agent n’est pas configuré correctement !

Depuis le menu de navigation dans la partie Monitoring, cliquer sur Hosts 1.

Sur cette page, s’affiche l’ensemble des équipements qui sont supervisés par Zabbix, c’est depuis cette liste que l’on peut accéder aux différentes données (métriques) de la supervision et accéder aux graphiques et au différents tableau de bords des équipements. Comment on peut le voir ci-dessous, le serveur Zabbix est rouge 1.

On va aller modifier la configuration de l’hôte (agent), depuis le menu de navigation cliquer sur Configuration 1 puis sur Hosts 2.

On arrive sur une nouvelle page, qui ressemble beaucoup à la précédente, ici, on retrouve également l’ensemble des équipements supervisés par Zabbix, à la différence que depuis celle-ci, on configure les équipements (Nom, adresses IP, modèle …), on retrouve notre serveur Zabbix, cliquer dessus pour accéder à la configuration.

Zabbix hosts list - Configuration

Une fenêtre « modale » s’ouvre avec la configuration de l’hôte, ce qui pose problème ici, c’est l’adresse IP de l’agent qui est en 127.0.0.1, pour rappel nous sommes dans des conteneurs, et l’adresse 127.0.0.1 correspond dans ce cas au conteneur de l’image du serveur, pour corriger ce problème, il faut mettre le nom du conteneur de l’agent.

On trouve le nom du conteneur de l’agent Zabbix dans le fichier docker-compose.yml, sur la capture ci-dessous, on voit que le nom est zabbix-agent et qu’il a des alliasses.

Entrer le nom DNS de l’agent 1 et sélectionner DNS 2 et cliquer sur le bouton Update 3.

On peut voir que la configuration de l’interface de l’agent est modifié, pour le moment l’agent n’est toujours pas disponible.

Patienter 5 minutes, normalement l’hôte Zabbix server devrait être disponible comme sur la capture ci-dessous :

Dans la partie Monitoring, c’est bon aussi :

Si on retourne sur la tableau de bord, celui-ci devrait avoir évolué avec plus d’information aux niveaux des graphiques.

Cette manipulation a normalement du commencer à vous familiarisez avec Zabbix.

Superviser des serveurs Windows et Linux avec l’agent Zabbix

On va maintenant voir comment superviseur des serveurs Windows et Linux avec l’agent Zabbix 2.

Dans ce tutoriel, je vais utiliser l’agent 2, qui est une version écrite en Go qui offre plus de possibilité

Je vais également configurer les agents en mode actif (je reviendrai plus tard sur le pourquoi).

Dans cette partie, nous allons d’abord voir l’installation de l’agent sur Ubuntu puis sur Windows, une fois l’agent installé, nous verrons comment ajouter les hôtes dans Zabbix, cette partie est identique pour Linux ou Windows, il faut choisir le bon modèle.

Installation et configuration de l’agent Zabbix sur Ubuntu

Pour installer l’agent sur Ubuntu / Debian, il faut dans un premier temps télécharger un package (deb) qui va ajouter le dépôt à la machine et ensuite faire une installation « classique » de paquet.

Pour Ubuntu vous trouverez le package ici : https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/

Copier le lien du package correspondant à votre distribution et à sa version, cliquer droit sur lien puis copier le lien.

Dans le terminal de votre machine, entrer la commande ci-dessous pour télécharger le package :

wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1%2Bubuntu20.04_all.deb

Une fois téléchargé, installer le package :

sudo dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb

Mettre à jour la liste des paquets :

sudo apt update

Dans la console, vous devriez voir l’interrogation du dépôt Zabbix.

On va maintenant installer l’agent 2 de Zabbix :

sudo apt install zabbix-agent2 -y

Maintenant que l’agent est installé, il faut configurer celui-ci, pour cela il faut éditer le fichier /etc/zabbix/zabbix_agent2.conf

sudo nano /etc/zabbix/zabbix_agent2.conf

Editer les paramètres suivants :

Server=127.0.0.1

Remplacer l’adresse IP par l’adresse IP du serveur Zabbix ou son nom DNS.

ServerActive=127.0.0.1

Remplacer l’adresse IP par l’adresse IP du serveur Zabbix ou son nom DNS.

Hostname=Zabbix server

Remplacer Zabbix server par le nom l’équipement (nom du serveur), celui-ci sera utilisé pour configurer l’hôte dans Zabbix.

Les modifications effectuées, enregistre le fichier.

Activer le service de l’agent :

sudo systemctl enable zabbix-agent2

Terminer en démarrant le service :

sudo systemctl start zabbix-agent2

L’agent est installé.

Vous pouvez vérifier le status de l’agent à l’aide de la commande ci-après :

sudo systemctl status zabbix-agent2

Installation et configuration de l’agent Zabbix sur Windows

Télécharger l’agent Zabbix pour Windows à cette adresse : https://www.zabbix.com/fr/download_agents

Pour ce tutoriel, je vais continuer avec l’agent version 2.

Exécuter le fichier télécharger.

Au lancement de l’assistant, cliquer sur Next 1.

Accepter la licence 1 et cliquer sur Next 2.

Entrer le nom de l’hôte 1> pour la liaison avec Zabbix, puis entrer le nom DNS ou l’IP du serveur Zabbix 2 et cliquer sur Next 3.

A la personnalisation de l’installation, cliquer sur Next 1.

Confirmer l’installation, en cliquant sur le bouton Install 1.

Patienter pendant l’installation …

L’installation terminée, fermer l’assistant en cliquant sur Finish 1.

Si vous avez besoin de modifier la configuration de l’agent, il faut éditer le fichier : zabbix_agent2.conf qui se trouve dans le dossier : C:\Program Files\Zabbix Agent 2

Pour la prise en compte des modifications, il faut redémarrer le service Windows : Restart-Service 'Zabbix Agent 2'

Ajouter le serveur dans Zabbix

Maintenant que nous avons installé, les agents Zabbix, on va voir comment les ajouter sur le serveur pour avoir les informations de supervision.

Retourner sur l’interface Web de Zabbix.

Dans le menu de navigation, dérouler Configuration 1 et cliquer sur Hosts 2.

Sur la liste des hôtes, cliquer sur le bouton Create host 1, qui se trouve en haut à droite.

Entrer le nom de l’hôte 1 tel que défini dans le fichier de configuration, sélectionner le ou les templates 2 qui vont determiner les éléments superviser, sélectionner au moins un groupe 3 et cliquer sur le Add 4.

Sélectionner comment l’équipement va être supervisé, ici par l’agent, cliquer sur Agent 1.

Entrer l’adresse IP de l’ordinateur 1 et terminer en cliquant sur le bouton Add 2 pour ajouter l’hôte.

Les hôtes sont ajoutés :

Quelques explications pour comprendre les différents éléments :

  • Items : correspond aux différents éléments supervisés (cpu, ram, carte réseaux, services …), le nombre varie d’un serveur à un autre en fonction des éléments
  • Triggers : ce sont les déclencheurs des différents « problèmes » qui sont liés aux items (espace disque faible, service arrête …).
  • Graph : graphique lié au item
  • Discovery : contient différentes tâches qui va permettre de découvrir les Items à superviser (découvertes des services sur les hôtes, découvertes des disques dur …)

La même liste d’hôtes après quelques minutes, on peut voir le nombre d’items de l’hôte ubuntu-host est passé à 388.

Vous savez maintenant comment mettre en supervision des serveurs avec l’agent Zabbix.

Pour ajouter des Items, regarder dans les templates qui propose par défaut plein de chose comme : IIS, Nginx, Docker …

Voir le monitoring des hôtes

Maintenant, je vais vous expliquer comment voir les données des hôtes que l’on a ajouté.

Dans le menu, dérouler Monitoring 1 et cliquer sur Hosts 2.

On arrive sur une page, qui affiche également la liste des hôtes, celle-ci affiche les données de supervision.

Depuis cette page, nous avons plusieurs façon de voir les données :

  • Latest data : affiche les données numérique de supervision
  • Problems : indique s’il y a des alertes
  • Graphs : permet de voir tous les graphiques des éléments
  • Dashboard : permet d’avoir une logique de différents graphiques.

Voici quelques captures :

Deux autres exemples de Dashboard :

Pour changer de Dashboard,il faut utiliser le sélecteur en haut à droite de la page.

Je vous laisse découvrir par vous même vos données.

Pour finir …

Ce premier tutoriel dédié à Zabbix s’arrête ici, il reste encore plein de choses à voir et d’autre tutoriel vont suivre (où sont déjà en ligne en fonction de quand vous lirez celui-ci).

Je vais également écrire des articles expliquant le fonctionnement de certains éléments comme la différence entre les agents actifs et passifs.

Si vous avez des questions, poser les en commentaires.

Vous savez maintenant comment installer Zabbix et mettre vos premiers hôtes en supervision.