Aller au contenu principal

Zabbix sur un Raspberry Pi

  • Fait : Plus j’ajoute de services pour répondre à nos besoins, plus ça prend de temps si je dois me connecter à chacun d’eux.
  • Problème : J’ai plusieurs services qui fonctionnent en même temps et j’aimerais avoir un système qui me montre leur état.
  • Hypothèse : J’ai lu que Zabbix est un bon outil logiciel de surveillance open source pour une vaste gamme de choses, comme les réseaux, les serveurs et les machines virtuelles. Je vais l’essayer.

NGINX avec PHP

  • J’ai quelques Raspberry Pi 3+ qui traînent et j’ai pensé en utiliser un pour surveiller tous les services que je gère.
    • Sur un nouvel OS fraîchement installé (64 bits, Bookworm), je dois d’abord installer un serveur web, allons-y avec NGINX :
         sudo apt install nginx
    • Il faut aussi installer PHP avec ça :
          sudo apt install php8.2-fpm php8.2-mbstring php8.2-mysql php8.2-curl php8.2-gd php8.2-curl php8.2-zip php8.2-xml -y
    • Il faut faire quelques modifications pour que .php soit la priorité :
          sudo nano /etc/nginx/sites-enabled/default
      # Il faut remplacer
      index index.html index.htm;
      # Par
      index index.php index.html index.htm;
    • Ça dit à NGINX d’utiliser .php en premier.
    • Prochaine modification :
                  #location ~ \.php$ {
      # include snippets/fastcgi-php.conf;
      #
      # # Avec php5-cgi seul :
      # fastcgi_pass 127.0.0.1:9000;
      # # Avec php5-fpm :
      # fastcgi_pass unix:/var/run/php5-fpm.sock;
      #}
    • Par ceci :
                  location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php8.2-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
      }
    • Rechargeons NGINX :
          sudo systemctl reload nginx
    • Il faut tester la configuration pour s’assurer que PHP fonctionne. Créons un fichier index.php :
          sudo nano /var/www/html/index.php
      # Et mettons ceci :
      <?php phpinfo(); ?>
    • Voilà ! NGINX avec PHP est terminé.

MySQL pour la base de données

  • Maintenant, on a besoin d’une base de données pour stocker les informations. MySQL est à la hauteur :
        sudo apt install mariadb-server
    # Sécurisons-la en mettant un mot de passe pour l’utilisateur root
    sudo mysql_secure_installation
  • J’ai vérifié que le mot de passe root a été entré et j’ai répondu Oui à toutes les invites.
  • Ensuite, il faut créer une base de données et un utilisateur :
        sudo mysql -u root -p
    CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
    CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '******';
  • L’utilisateur est Zabbixuser et le mot de passe est ****** (changez-le selon vos besoins ou envies). On doit donner à cet utilisateur tous les privilèges sur la base de données :
        GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
  • Ensuite, pour que ça fonctionne, il faut vider la table des privilèges :
        FLUSH PRIVILEGES;
  • Enfin, très important : il faut installer le connecteur PHP MySQL :
        sudo apt install php-mysql

Installation de Zabbix

  • Allons chercher le dépôt de Zabbix :
        wget https://repo.zabbix.com/zabbix/7.0/raspbian/pool/main/z/zabbix-release/zabbix-release_7.0-2+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
    # Cette commande pour l’installer :
    sudo dpkg -i zabbix-release_7.0-2+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
    # Puis mettons à jour pour voir les nouveaux paquets Zabbix :
    sudo apt update
    # Enfin, installons le serveur Zabbix, son interface frontend et son logiciel agent :
    sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
    # Puisque la base de données est déjà créée, importons les tables et les données initiales de Zabbix :
    zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
  • Maintenant, il faut modifier le fichier de configuration du serveur Zabbix pour définir le mot de passe de la base de données :
        sudo nano /etc/zabbix/zabbix_server.conf
    # Trouvez DBPassword= et changez-le pour le mot de passe de l’utilisateur Zabbix, puis sauvegardez
    DBPassword=MotDePasseZabbix

Reconfiguration de NGINX

  • Il faut modifier le fichier de configuration par défaut de NGINX pour pointer vers celui de Zabbix :
        sudo nano /etc/nginx/nginx.conf
    # Trouvez cette ligne include /etc/nginx/sites-enabled/*; (utilisez Ctrl+W pour chercher) et ajoutez en dessous ceci :
    include /etc/zabbix/nginx.conf;
  • Enfin, il faut modifier le fichier de configuration de Zabbix :
        sudo nano /etc/zabbix/nginx.conf
    # Et décommentez la ligne :
    listen 80;
    # Une fois sauvegardé, supprimez le fichier de configuration par défaut de NGINX :
    sudo rm /etc/nginx/sites-enabled/default
    # Et redémarrez les services :
    sudo systemctl restart zabbix-server zabbix-agent nginx php7.3-fpm

Interface Web de Zabbix

  • Pour finir les bases, allons à http://[ADRESSE_IP] :
    • Et voilà : InterfaceBienvenue
    • Cliquez sur l’étape suivante et entrez le mot de passe de l’utilisateur Zabbix pour la base de données : MotDePasse
    • Changez le fuseau horaire : Heure
    • Puis suivant et suivant. Quand vous arrivez à la connexion, l’utilisateur par défaut est Admin et le mot de passe est zabbix. Ensuite, vous y êtes : PagePrincipale
    • Ensuite, changez le mot de passe admin : ChangerMotDePasse