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.

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.

Cliquez sur Next step pour continuer.
Sur l’écran suivant, vous pouvez laisser les options à leurs valeurs par défaut.

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.

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).

Consultez la page des plugins et activer le plugin Zabbix.

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

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"

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

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 :

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

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

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 :

Le résultat obtenu est la suivant :

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.

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 :

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"

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