Raspberry Pi : monitorer le système avec Zabbix

Lors d’un précédent article, j’avais donné les explications pour installer l’outil Monitorix. Aujourd’hui c’est d’un autre outil de monitoring dont nous allons faire l’installation : Zabbix

Raspberry Pi Home Server – Monitorer le système avec Zabbix

Si vous voulez choisir un outil pour surveiller votre système ou juste par curiosité, je vais (essayer de) vous proposer une petite série d’articles avec différents logiciels.

Ici c’est de Zabbix dont nous allons parler. Un peu plus professionnel que Monitorix, l’entreprise propose une version open source installable par tous. C’est par contre plus complexe … Et autant le dire de suite, sa configuration est vraiment pas simple et les performances ne sont vraiment pas top. Alors si vous avez des astuces d’optimisations, je suis preneur !

La version utilisée pour cet article est la version 2.0.4. L’article a été mis à jour pour la version 2.0.6.

C’est parti !

  1. Mettre à jour le système
    apt-get update
  2. Installer les packages suivant
     apt-get install fping sqlite3 libsnmp-dev php5-gd php5-sqlite php5-dev libiksemel-dev libsqlite3-dev libcurl4-openssl-dev php5-curl make
  3. Télécharger Zabbix sur le site officiel. Décompresser l’archive
  4. Aller dans le répertoire de zabbix. Tout va se faire depuis ce répertoire qui contient les scripts nécessaires
  5. Lancer la configuration
     ./configure --enable-server --enable-agent --with-sqlite3 --with-net-snmp --with-jabber --with-libcurl
  6. Lancer la compilation
     make
  7. Installer
     make install
  8. Ajouter le user zabbix
     adduser zabbix
  9. Créer le répertoire pour SQLite si vous ne l’avait pas déjà installé
     mkdir /var/lib/sqlite
  10. Créer et configurer la base de données associée dans SQLite (Remplacer /var/lib/sqlite si vous avez installé SQLite ailleurs)
    cd database/sqlite3
    
    sqlite3 /var/lib/sqlite/zabbix.db < schema.sql
    
    sqlite3 /var/lib/sqlite/zabbix.db < images.sql
    
    sqlite3 /var/lib/sqlite/zabbix.db < data.sql
    
    chown -R zabbix:zabbix /var/lib/sqlite
    
    chmod 774 /var/lib/sqlite
    
    chmod 664 /var/lib/sqlite/zabbix.db
  11. Ajouter le user www-data dans le groupe zabbix afin de lui donner les droits d’accéder à la base de données
     adduser www-data zabbix
  12. Dans le fichier /usr/local/etc/zabbix_server.conf, changer la ligne
    DBName=zabbix

    par

    DBName=/var/lib/sqlite/zabbix.db
  13. Configurer et installer les scripts de démarrage
     cp misc/init.d/debian/zabbix-server /etc/init.d/
    
     chmod 755 /etc/init.d/zabbix-server
    
     cp misc/init.d/debian/zabbix-agent /etc/init.d/
    
     chmod 755 /etc/init.d/zabbix-agent
  14. Si besoin, vous pouvez modifier les scripts pour qu’ils soient compatibles LSB et qu’ils ne rentrent pas en conflit avec d’autres scripts (minidlna chez moi) :Voilà mon message d’erreur :

    insserv: There is a loop between service minidlna and zabbix-server if stopped

    insserv: loop involving service zabbix-server at depth 2

    insserv: loop involving service minidlna at depth 1

    insserv: Stopping zabbix-server depends on minidlna and therefore on system facility `$all’ which can not be true!

    insserv: Stopping zabbix-agent depends on minidlna and therefore on system facility `$all’ which can not be true!

    insserv: exiting now without changing boot order!

    update-rc.d: error: insserv rejected the script header

    Donc pour résoudre ce problème, la solution est d’ajouter les lignes suivantes juste après #!/bin/sh (donc à partir de la ligne 2) :

    ### BEGIN INIT INFO

    # Provides: zabbix-server

    # Required-Start:

    # Required-Stop:

    # Default-Start: 2 3 4 5

    # Default-Stop: 0 1 6

    # Short-Description: Initialize Zabbix server

    # Description:

    ### END INIT INFO

    Ci dessous c’est le bloc pour le script /etc/init.d/zabbix-server. Vous pouvez utiliser le même pour /etc/init.d/zabbix-agent, en remplaçant server par agent.

  15. Ajouter les scripts au lancement
     update-rc.d zabbix-server defaults
    
     update-rc.d zabbix-agent defaults
  16. Installer le front-end qui est fourni avec Zabbix
     mkdir /var/www/zabbix
    
     cp -a frontends/php/* /var/www/zabbix/
    
     chown -R www-data:www-data /var/www/zabbix
  17. Lancer les scripts manuellement ou rebooter le Raspberry Pi
     /etc/init.d/zabbix-server start
    
     /etc/init.d/zabbix-agent start
  18. Créer un nouveau site zabbix dans la configuration de nginx (pour plus d’informations sur l’installation Nginx avec le support PHP vous pouvez voir ici). Le contenu du fichier /etc/nginx/sites-available/zabbix :
     server {
    
     listen 8090; # A vous de choisir !
    
     root /var/www/zabbix;
    
     index index.php;
    
     server_name zabbix;
    
     error_log /var/log/nginx/zabbix_error.log;
    
     access_log /var/log/nginx/zabbix_access.log;
    
     location ~ .php$ {
    
     include /etc/nginx/fastcgi_params;
    
     try_files $uri =404;
    
     fastcgi_index index.php;
    
     fastcgi_split_path_info ^(.+.php)(/.+)$;
    
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
     fastcgi_pass unix:/var/run/php5-fpm.sock;
    
     }
    
     }
  19. Activer le site
    ln -s /etc/nginx/sites-available/zabbix /etc/nginx/sites-enabled/zabbix
  20. Modifier les paramètres de configuration PHP dans /etc/php5/fpm/php.ini pour avoir ces valeurs au minimum
    max_execution_time = 300
    
    max_input_time = 300
    
    post_max_size = 16M
    
    date.timezone = Europe/Paris
    
    (liste des zones : http://fr2.php.net/manual/fr/timezones.php)
  21. Installer les packages supplémentaires pour optimiser les performances
     apt-get install php5-fpm php-pear php-apc php5-gd php5-curl
  22. Relancer Nginx et php-fpm
    service nginx restart
    
    service php5-fpm restart
  23. A partir de là c’est vraiment plus simple : connectez vous sur l’ip avec le bon numéro de port et suivez les instructions.Attention sur l’écran 3 à bien choisir SQlite 3 et indiquer le chemin où vous avez installer la DB
Raspberry Pi Home Server – Monitorer le système avec Zabbix

Pré requis

Raspberry Pi Home Server – Monitorer le système avec Zabbix

Configuration de la base de données

Raspberry Pi Home Server – Monitorer le système avec Zabbix

Configuration du serveur

Raspberry Pi Home Server – Monitorer le système avec Zabbix

Résumé de la configuration

Raspberry Pi Home Server – Monitorer le système avec Zabbix

Fin de l’installation

Par défaut le login est Admin/zabbix (attention au A majuscule)

Raspberry Pi Home Server – Monitorer le système avec Zabbix

Ecran de connexion de Zabbix une fois installé

A vous ensuite de configurer l’application. Vous trouverez toute l’aide sur le site de Zabbix.

Et comme je vous le disais en début d’article, si vous avez des pistes d’optimisation, n’hésitez pas !

Vous aimerez aussi...

  • Bonjour, merci pour le tuto mais je n’arrive pas à lancer le make ! Il me répond pas de fichier de configuration ou de makefile.

    Une piste ? J’ai essayé avec sudo bien sur mais même résultat.

    Rpi modèle b avec une raspbian.

    Merci

    • Bonjour,
      Est-ce que le répertoire est le bon ? Y a t il un fichier Makefile dans le répertoire ?

      • En fait, en creusant, c’est sqlite3 qui pose problème au config, il ne trouve pas la library alors même que j’ai un ATP-get install sqlite3. Etrange.

        • Tu as bien pris toute la ligne de packages à installer ? (oui je sais c’est vraiment mal foutu).
          Il y a le package libsqlite3-dev qui est surement celui qui te manque

  • oui effectivement, c’est bien sqlite3 qui manquait. Maintenant il me demande curl-config. J’ai fait un arp-get install curl mais derrière le configure répond que c’est manquant. Un autre idée. Je pense qu’il menque une library ou une dépendance.

    • Tu as bien installé tout ça :

      apt-get install fping sqlite3 libsnmp-dev php5-gd php5-sqlite php5-dev libiksemel-dev libsqlite3-dev

      ?

    • Pour info voici les paquets contenant curl, installés sur ma machine. J’ai testé la commande configure et ca passe :
      root@raspberrypi:~/zabbix-2.0.6# dpkg --get-selections | grep curl
      curl install
      libcurl3:armhf install
      libcurl4-openssl-dev install
      php5-curl install

      • Je regarde demain, je ne suis plus devant un écran en ssh. Je Check demain. Merci.

      • J’ai eu le même problème.

        Il me manquait les deux derniers paquets : libcurl4-openssl-dev et php5-curl.

        Peut-être faudrait-il ajouter un point dans le tuto, juste après le lancement du script configure, qui en parle. Je suis sûr qu’il doit y avoir pas mal de gens qui abandonnent après l’échec de cette étape et qui ne pensent pas à aller voir les commentaires.

        Le fait est que le problème était résolu après un « apt-get install libcurl4-openssl-dev php5-curl ».

  • Le mien a cela d’installer:

    dpkg –get-selections | grep curl

    curl install

    libcurl3:armhf install

    Donc, il me manque des library. J’ai fait un pat-get install des lib manquantes.

    Le ./configure est….ce fonctionne.

    Il manquait bien de lib…mais pourquoi ? mystère

    Merci de ton aide.

  • Etape 14 : « Modifier les scripts pour qu’ils soient compatibles LSB »

    Tu pourrais préciser les modifs à faire, si tu les a faites (un simple copier/coller) ?

    ça pourrait soulager pas mal de monde.

  • Etape 16 :

    Installer le front-end qui est fourni avec Zabbix

    mkdir /var/www/zabbix

    cp -a frontends/php/* /var/www/zabbix/

    chown -R www-data :www-data /var/www/zabbix

    => Attention un espace s’est glissé => www-data:www-data

    N’hésite pas à effacer mon commentaire quand tu auras corrigé. 😉

  • Etape 19 « Modifier les paramètres de configuration PHP pour avoir ces valeurs au minimum »

    => J’aurais ajouté : (dans le fichier php.ini).

    Il y en a pour qui ce n’est pas évident. 😉

  • Ok, là, c’est plus sérieux. Tout fonctionne nikel à cela près que le site n’est pas accessible à l’adresse : IP_SERVEUR:8090 mais à l’adresse : IP_SERVEUR/zabbix/

    Quelque chose doit m’avoir échappé dans la partie propre à nginx. Aurais-tu une suggestion ?

    Note : Le site zabbix était même accessible depuis l’extérieur MON_IP/zabbix ce qui m’a obligé à desactiver le port forwarding de mon router, en attendant d’y voir plus clair. Oui, je sais : ça fait débutant mais il faut bien.. débuter ! 🙂

    Une suggestion pour que ça roule ?

    • En fait, je me demande comment interdire l’accès à zabbix en tapant IP_SERVEUR/zabbix.

      Je veux n’y avoir accès qu’en tapant IP_SERVEUR:8090.

      Et sinon, je me demande aussi comment réserver l’accès à zabbix au LAN et interdire l’accès à partir du WAN, mais je suis déjà en train de me battre avec les « allow » et les « deny ».

      Enfin, si tu as un conseil, je suis preneur !

      Bonne journée et bon courage si tu vas au taff !

      • Salut,

        J’ai corrigé le tuto avec tes remarques. Merci !

        Pour le problème d’accès c’est un soucis de config Nginx. Tu as bien fait un fichier séparé avec le paramètrage du tuto ? Car d’après ton accès il semble que ce soit la configuration par défaut (port 80) qui soit prise en compte

        Ton fichier doit être dans /etc/nginx/sites-available et tu fais un lien logique vers /etc/nginx/sites-enabled

        Faut reconnaitre que le tuto est un peu pourri. J’sais pas qui l’a fait mais c’est pas un bon :-p 😀

      • Merci de ta réponse.

        J’ai bien fait un fichier zabbix dans sites-available avec un lien dans sites-enables cependant là encore, c’était le fichier de conf default qui était pris en compte.

        J’ai parcouru la doc nginx et je m’en suis sorti en ajoutant un clause :

        location /zabbix/ {

        allow 192.168.0.10;

        deny all;

        }

        dans le server du fichier « default ».

        ça empêche tout accès à zabbix depuis l’extérieur.

        J’accède à zabbix sur IP_SERVEUR/zabbix/.

        Du coup le fichier de conf zabbix (de sites-available & sites-enables) n’est plus utile, au passage.

        • Je refais tout le tuto pas à pas pour voir ce qui ne va pas et je le mets à jour à la fin. Merci pour les infos.
          Je vais voir pour toujours avoir accès que sur un port particulier.

        • Tout le tuto a été refait. J’espère que ca fonctionnera pour toi. Chez moi il faut obligatoirement passer par l’ip avec le numéro de port sinon ca ne marche pas (ip/zabbix retourne juste le message Welcome to Nginx)

      • Merci, je vais voir comparer ta conf à la mienne et je te fais un retour.

        On va y arriver ! 🙂

  • En fait avec zabbix, j’ai un problème de ressources, on dirait.

    C’est super lent. Pourtant j’ai un RPI modèle B (512MO).

    La plupart des requêtes sur zabbix sont interminables et parfois même, n’aboutissent jamais.

    Est-ce que tu as ce problème aussi ?

    • Salut,

      Oui ca n’est pas très performant sur cette petite machine. Il faut vraiment qu’il n’y est rien d’autre qui tourne mais même là tu n’auras pas des réponses immédiates.

      Il faut bien utiliser Nginx pour libérer un peu de ressources

      • Ah ! ça annonce un tuto d’optimisation d’Nginx sur Raspberry Pi ? 😀

  • Sheen

    Bonjour,

    Je me suis amusé à taper Zabbix et Raspberry Pi sur Google pour voir s’il y avait un fêlé qui avait osé l’installer sur cette petite machine, et me voilà sur ce site =)
    J’adore cet outil, je l’utilise pour un parc d’environ 50 serveurs réparti sur 5 sites ce qui n’est pas énorme pour la puissance d’un tel produit, et c’est un bijou rien à redire là-dessus.

    J’avais peur de l’installer sur le petit Raspberry pour les performances, même si je ne comptais que le monitorer lui, et lui seulement, du coup j’ai installé et configuré Cacti qui reste franchement très fluide sur cette petite machine (pourtant couplé avec Apache en Https, OpenVPN, Transmission-remote, un hids et deux serveurs de dépots de fichiers).

    Avec un peu de recul, car ça fait deux mois que vous l’avez installé, j’aurais une question niveau performance de Zabbix sur cette petite machine, honnètement ça reste fluide et praticable ?
    Ca me démange de tester ^^

    • Bonsoir. Non je ne l’ai pas gardé car les performances sont pas vraiment au top 🙂
      A installer pour faire joujou ou si vous êtes très patient:-)

      • Sheen

        Merci pour l’info, je ne vais pas tenter le diable alors 😉

  • Memento Ad

    Apparemment, on peut installer Zabbix grâce aux paquets : https://www.zabbix.com/documentation/2.0/manual/installation/install_from_packages

    Raspbian est basé sur debian 7 si je ne m’abuse, donc le paquet correspondant devrait faire l’affaire.

    Sinon, ça serait peut-être pas mal d’inclure dans ton tuto quelques ligne sur comment désinstaller Zabbix proprement lorsqu’on l’a installé en compilant les sources. C’est juste une suggestion.

    Ps : Peux-tu enlever mon commentaire précédent (fausse manip’. trompé de lien) ?

  • 3piglets

    Salut, Chris,

    Suis tombé sur votre article ce matin. Je voudrais un suivi avec vous si vous avez par rapport à plusieurs outils de surveillance sur IP. Je suis en train zabbix sur un serveur ubuntu, maintenant pense à transférer vers pi. Voudrais savoir si ça vaut le coup de la dispute? Merci d'avance!

    • Hi,
      Zabbix would not be the one that i would choose for the Pi. It has bad performances compared to other monitoring tools like Monitorix or even Nagios

  • Carlo

    Salut Chris,
    I’ve essayé de suivre ce guide, mais quand j'ai’ve a lancé « make install » Il m'a donné une erreur sur le fichier memory.c comme taille de structure sysinfo est inconnu. Ce que j'ai’ve faire pour résoudre ce problème? Merci pour votre aide.

    • Hello. Do you have kernel headers installed ? Maybe that’s the reason …

  • MTM

    Hi Chris,
    I followed the steps described in your blog to setup Zabbix on my rasp device. I am stuck at step 10 i.e Create and configure the database in SQLite.

    While running:-
    CD database/sqlite3 sqlite3 /var/lib/sqlite/zabbix.db < schema.SQL sqlite3 /var/lib/sqlite/zabbix.db < images.SQL sqlite3 /var/lib/sqlite/zabbix.db < data.SQL chown-r zabbix:ZABBIX/var/lib/sqlite chmod 774 /sqlite-lib-var chmod 664 /var/lib/SQLite/ZABBIX.DB

    I am getting following error:-

    "-bash: schema.SQL: No such file or directory"

    When searched schema.SQL, image.SQL and data.SQL, I found could not find these files on my raspberi pi system.

    Please guide what is missing.

    regards,
    -MTM

    • Hello. Can tou please give a try to instructions on the french version of the post (remove the /en in the url). The translating system is really not good with unix commands …

    • All instructions have been updated to be correct. You should be able to install Zabbix successfully.

  • Norbert

    Bonjour,

    Je viens d’installer Zabbix 2.2.10 à partir des sources sur un Rasp2 en 2h grâce à ce superbe tuto. Rien à voir avec Centreon que j’ai installé en 8h, notamment à cause de la compilation (cf mon commentaire sur le travail d’Eric http://www.sugarbug.web4me.fr/framboise/full_raspcentreon/install_centreonUI_raspcentreon/)

    200% de CPU Centreon contre 10 à 20% avec Zabbix (cf images). Toutes les options sont celles par défaut, les outils ne monitorant qu’eux même..
    Il faut voir sur la durée et sur le nombre d’agents installés
    Sortirions-nous enfin de l’exercice de style?