Les tutos pour débuter avec Zabbix c’est partie !!!

Print Friendly, PDF & Email

Zabbix, vous avez été très très nombreux à me le réclamer. Jusqu’ici je n’avais pas tenté de faire de tutos dessus car je ne pense pas être la meilleure personne pour le faire. Dans mon cadre professionnel, j’ai plus contribuer à désinstaller des zabbix (souvent d’anciennes générations) que d’en installer “from scratch” comme on dit.

Mais voilà, vous avez su insister, Zabbix a aussi bien évolué et faire une “formation” permettrait au moins de mieux pouvoir soutenir les points de comparaisons avec d’autres outils déjà présents sur la chaine. Comme par exemple prometheus que vous pouvez déjà retrouver dans une playlist de presque 60 tutos gratuits (et bientôt VictoriaMetrics qui me parait tellement porteur).

Donc nous voici partie pour plusieurs vidéos Zabbix pour les débutants dont je fais partie. Aujourd’hui nous découvrirons Zabbix c’est quoi, quelques définitions à connaître et enfin l’installation d’un serveur.

C’est quoi Zabbix ?

Zabbix a été créé en Alexei Vladishev avec une toute première version en 2001. S’en est suivi la création d’une société du même nom en 2005. Cela n’empêche pas Zabbix d’être un outil de monitoring opensource, principalement basé sur du C et du php.

A la différence de prometheus qui est principalement un moteur de base de données et de règles avec une interface graphique rudimentaire (on se penche toujours vers grafana pour disposer d’une interface graphique), Zabbix lui ne dispose pas de base de données mais permet de se connecter à mariadb, postgresql et d’autres. En revanche Zabbix c’est un ensemble de service dont un serveur responsable du stockage avec l’outil de base de données choisi et aussi une interface graphique… bien sûr on y retrouve de nombreux services de types monitoring : alerting, templating, dashboard, découvertes de serveurs à monitorer, proxies…

Bien sûr vous pouvez retrouver les classiques :

Et petit clin d’oeil à Steve si vous être en France :

Découvrez  Manipuler une API via une interface graphique avec Postman

Pour ce qui est des tutos zabbix et des éléments de support qui vont avec vous les retrouverez ici :

Zabbix fonctionne sur la plupart des système d’exploitation, vous ne devriez pas avoir de problème de ce côté là.

Les principaux concurrents de Zabbix :

  • prometheus
  • nagios
  • centreon
  • victoria metrics

Néanmoins à la différence de prometheus, Zabbix fonctionne en mode push c’est à dire que des agents envoient leurs données sur el serveur central (prometheus lui va chercher la donnée en la scrapant).

Quelques définitions et concepts

J’aime bien faire cela dans un peu toutes les playlists, poser les définitions. J’espère ne pas dénaturer les choses en simplifiant mais cela permet à toutes et à tous d’utiliser le même langage dans la suite des vidéos.

  • le serveur : c’est lui qui a la charge de gérer la base de données (mysql, mariadb, postgresql, oracle…) et la plupart des processus de calculs.

  • le frontend : avec soit un apache ou un nginx, le frontend permet de fournir l’interface graphique en communiquant avec le serveur (backend).

  • les agents : actif ou non (on verrra cela plus tard), ils ont la charge de collecter les métriques sur les serveurs cibles (généralement par le biais de scripts), on peut aussi parler de sonde Zabbix.

  • une macro : terme un peu trompeur qui est finalement une variable générique, par exemple {$HOSTNAME}.

  • le Low Level Discovery (LLD) : mécanisme de découverte d’éléments à monitorer (par exemple des interfaces réseaux)

  • un template : terme un peu trompeur car il englobe l’ensemble des éléments pouvant être générique et contenant des variables, par exemple les métriques collectées pour un profil de host (linux ou autre…). Ces templates permettent de configurer zabbix sur certains aspects une seule fois sans avoir à répéter pour chaque cible l’opération.

  • un trigger : seuil pour une métrique qui déclenchera une action.

  • un webhook : une action d’envoi d’un signal vers une applicatif externe.
Découvrez  Un peu de tutoriels GitLab pour se former

  • le proxy zabbix : agent intermédiaire spécialisé dans la collecte de métrique sur des devices ne pouvant pas accueillir un agent standard.

Installation du serveur Zabbix couplé à un serveur Postgresql

Alors comme nous l’avons évoqué plus haut dans cet article, nous allons utiliser Postgresql avec Zabbix. Il va donc falloir dans un premier temps installer un serveur postgresql. Dans l’idéal et dans un environnement de production, il faudrait avoir de la haute disponibilité ou au moins avoir des backups sérieux pour éviter trop de perte de données en cas de crash de la base de données.

Passons donc à l’installation de postgresql :

apt install -y postgresql
pg_ctlcluster 14 main start

Ensuite on va créer le user et la database :

sudo -u postgres psql -c "create database zabbix;"
sudo -u postgres psql -c "create user zabbix with password 'password';"
sudo -u postgres psql -c "grant ALL privileges on database zabbix to zabbix;"

Puis nous allons permettre la connexion depuis l’extérieur :

echo "listen_addresses = '*'" >> /etc/postgresql/14/main/postgresql.conf
echo "host zabbix all 192.168.0.1/16 md5" >> /etc/postgresql/14/main/pg_hba.conf
systemctl restart postgresql

Donc avec ça on peut à la fois utiliser un serveur postgres externe ou sur la même machine. Dans mon cas, je vais utiliser un serveur externe.

Maintenant passons à l’installation du serveur zabbix :

wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb sudo apt update -qq 2>&1 >/dev/null
sudo apt install -y zabbix-server-pgsql zabbix-frontend-php php8.1-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent postgresql-client
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | PGPASSWORD="password" psql -h zpg1 -U zabbix zabbix
sed -i s/"#.*server_name.*"/" server_name zabbix.xavki; "/g /etc/zabbix/nginx.conf
echo "DBPassword=password" >> /etc/zabbix/zabbix_server.conf echo "DBHost=zpg1" >> /etc/zabbix/zabbix_server.conf
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm

Dans mon cas de figure, le dns utilisé est zabbix.xavki. La base de données se situe sur le serveur zpg1. Vous pouvez donc ouvrir votre navigateur et vous rendre sur cette url.

Il vous restera ensuite à confirmer les coordonnées de la base de données au frontend.