Skip to main content

Supervision avec Zabbix et Grafana

Installation de Zabbix sur un serveur Ubuntu 22.04

Installer le dépôt Zabbix

wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update

Installation de Zabbix server, du frontend et de l'agent

apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

Création de la base de donnée

mysql -u root -p
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

Sur le serveur Zabbix, importez le schéma initial et les données.

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

Désactivez l'option log_bin_trust_function_creators après avoir importé le schéma de la base de données.

mysql -u root -p
set global log_bin_trust_function_creators = 0;
quit;

Modifiez le fichier /etc/zabbix/zabbix_server.conf.

DBPassword=password

Modifiez le fichier /etc/zabbix/nginx.conf en décommentant et en configurant les directives 'listen' et 'server_name'.

listen 8080;
server_name example.com;

Démarrez les processus du serveur et de l'agent Zabbix, et configurez-les pour qu'ils démarrent automatiquement au démarrage du système.

systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm

Ouvrez la page web de l'interface utilisateur Zabbix en allant à l'adresse http://zabbix_server_name

Sur le premier écran, vous verrez un message de bienvenue. Cliquez sur Next step pour continuer.

Sur l’écran suivant, vous verrez le tableau qui énumère toutes les conditions préalables à l’exécution de Zabbix.

Requis

Une fois que vous avez vérifié que tout est prêt, cliquez sur Next step pour continuer.

L’écran suivant demande des informations sur la connexion à la base de données.

DB

Cliquez sur Next step pour continuer.

Sur l’écran suivant, vous pouvez laisser les options à leurs valeurs par défaut.

Details

Cliquez sur Next step pour continuer.

L’écran suivant affichera le résumé de pré-installation afin que vous puissiez confirmer que tout est correct.

Summary

Cliquez sur Next step pour passer à l’écran final.

La configuration de l’interface web est maintenant terminée. Cliquez sur Finish pour passer à l’écran de connexion. L’utilisateur par défaut est Admin et le mot de passe est zabbix.

Installation de Grafana sur Docker

Démarrez le conteneur Grafana avec le docker-compose suivant :

version: '3.8'

services:
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
restart: always
ports:
- "3000:3000"
volumes:
- /opt/grafana-compose/grafana:/var/lib/grafana

Ensuite, montez un volume les plugins seront stockés.

mkdir -p /opt/grafana-compose/grafana

Maintenant, nous devons ajouter le plugin Zabbix pour Grafana en utilisant l'interface de ligne de commande (CLI) de Grafana.

docker exec -ti grafana sh -c 'grafana-cli plugins install alexanderzobnin-zabbix-app'
docker exec -ti grafana sh -c 'grafana-cli plugins ls'
docker restart grafana

Maintenant, rendez-vous sur l'adresse IP du conteneur sur le port 3000 et modifiez le nom d'utilisateur et le mot de passe par défaut (admin/admin).

Login Grafana

Consultez la page des plugins et activer le plugin Zabbix.

Plugin Grafana

Vous avez maintenant la possibilité d'utiliser Zabbix comme source de données.

Data Source

Ajouter un hôte dans Zabbix

Pour commencer, nous allons ajouter nos hôtes dans Zabbix :

Cliquez sur "Surveillance", puis "Hôtes" et enfin sur "Créer un hôte"

Ensuite, renseignez les informations suivantes :

  • Nom de l'hôtes : Ce nom sera affiché dans les différents tableaux de bord.
  • Modèles : Les modèles sont des gabarits préconfigurés qui définissent les éléments à surveiller, les déclencheurs à mettre en place, les graphiques à générer, et les actions à effectuer en réponse à certains événements. Dans notre cas, nous ajoutons un supervisons un serveur Linux via l'agent Zabbix, nous pouvons alors sélectionner le modèle "Linux by Zabbix agent".
  • Groupes d'hôtes : Sélectionnez les groupes d'hôtes auxquels appartient l'hôte. Un hôte doit appartenir à au moins un groupe d'hôtes, dans le cas présent nous sélectionnons le groupe "Linux servers".
  • Interfaces : Plusieurs types d'interfaces hôtes sont pris en charge pour un hôte : Agent, SNMP, JMX et IPMI, cela correspond à la manière dont vous souhaitez superviser votre hôte. Dans le cas présent nous supervisons le serveur via l'agent zabbix. Ensuite, renseignez l'adresse IP de votre hôte.
  • Cocher la case "Activé"

Vous n'avez plus qu'à cliquer sur "Ajouter"

Host Config

Les hôtes sont maintenant visibles et supervisés :

Hosts List

Envoie de mails lors de déclenchement de problèmes sur Zabbix

Afin de configurer l'envoie de mails lorsqu'une alerte est déclanchée dans Zabbix, suivez la procédure suivante :

Sur l'interface web, cliquez sur "Alertes", puis "Types de média" et enfin sur "Email".

Ensuite renseignez les informations de votre SMTP comme ci-dessous :

SMTP

Pour finir, retournez sur le menu "Alertes", cliquez "Actions" puis "Actions de déclencheurs" et activé le déclencheur "Report problems to Zabbix administrators"

Declancheurs

Un e-mail sera alors envoyé à l'e-mail spécifié dans le profil des utilisateurs administrateurs de Zabbix comme ci-dessous.

Mail User

Superviser un hôte dans Grafana

Afin de superviser un hôte dans Grafana il est nécessaire de l'avoir ajouter préalablement dans Zabbix.

Ensuite, dans Grafana, cliquez sur "Dashboards", puis "New" et "New dashboard".

Enfin pour ajouter une vue, cliquez sur "Add visualization" et séléctionner la data source "Zabbix".

Dans notre cas, nous allons afficher le pourcentage de mémoire utilisé par le serveur "HAPROXY01" qui fait parti du groupe "Linux servers" dans Zabbix.

Voici les information à fournir :

  • Query type : Le type de requête spécifie le type de données que vous souhaitez récupérer de votre source de données.
  • Group : Correspond au groupe dont fait partie l'hôte dans Zabbix
  • Host : Correspond à un hôte dans Zabbix, il doit faire partie du groupe spécifié au dessus.
  • Item tag : Les tags d'élément sont des étiquettes attribuées à des éléments spécifiques dans Zabbix (cpu, mémoire, disque, ... ).
  • Item : Un item représente une mesure ou une statistique spécifique à surveiller sur un hôte.

Dans notre cas, nous allons renseigner les informations suivantes :

Query

Le résultat obtenu est la suivant :

Memory

Nous allons alors répeter cette action afin de créer des dashboards affichant l'enssemble des données de supervision importante afin de siagnostiquer rapidement un problème sur un hôte.

Voici le dashboard que j'ai créer pour superviser les hôtes Linux.

Dashboard

Ajout d'une variable dans un dashboard Grafana

Afin de simplifier le création d'un dashboard et de l'utiliser pour plusieurs hôtes du même type, il est possible de créer des variable.

Dans notre cas nous souhaitons créer un dashboard qui servira à afficher les données de supervison de mes serveurs Linux.

Pour ce faire, séléctionner le dashboard dans lequel vous souhaitez créer votre variable puis cliquez sur la roue des paramètres en haut à droite, puis sur "Variables".

Ensuite cliquez sur le bouton "New variable" et renseignez les informations suivantes :

Query Options

Si les informations renseignées sont exactes, les hôtes devraient êtres affichés en dessous de "Preview of values"

Maintenant que la variable est fonctionnelle, vous pouvez modifier l'hôte des vues du dashboard par "$Host"

Memory Host Variable

Le dashboard se met maintenant à jour en fonction de l'hôte séléctionné :

Select Host