Raspberry Pi : monitorer le système avec Monitorix

Avec le serveur en place, il nous reste maintenant à surveiller ce qui se passe sur les disques, les interfaces, etc.

Raspberry Pi Home Server - Etape 15 : monitorer le système avec Monitorix

Il existe de nombreux outils pour surveiller le système : Nagios, Cacti, Zabbix, OpsView, etc. Mais au début du projet j’étais parti vers Monitorix donc je fais le tutoriel mais plus tard viendront d’autres tutos pour les autres outils de surveillance.

  1. Mettre le système à jour
    apt-get update
  2. Installer les dépendances sans Apache :
    apt-get install libaprutil1-dbd-sqlite3 libaprutil1-ldap libdbi-perl rrdtool librrds-perl libwww-perl libemail-date-format-perl libmime-lite-perl libmime-types-perl libnet-daemon-perl libplrpc-perl nullmailer libxml-simple-perl libconfig-general-perl libhttp-server-simple-perl
  3. Si une erreur apparait, lancer la commande suivante avant de relancer la commande de l’étape 2
    apt-get –f install
  4. Télécharger l’archive deb de monitorix ici (version actuelle 3.2.0)
  5. Installer le wrapper CGI si ce n’est pas déjà fait (voir l’article sur l’installation de Nginx ici)
    apt-get install fcgiwrap
  6. Lancer l’installation du package
     dpkg -i monitorix_3.2.0-izzy1_all.deb
  7. Créer le répertoire pour les pages web
    mkdir /var/www/monitorix
  8. Copier les fichiers pour le site
    cp -R /usr/share/monitorix/* /var/www/monitorix
  9. Changer les droits
    chown -R www-data:www-data /var/www/monitorix
  10. Créer le répertoire
    mkdir -p /var/db/rrd/monitorix
  11. Editer /etc/monitorix.conf
    base_dir = /var/www/monitorix/
    
    base_lib = /var/db/rrd/monitorix/
    
    base_url = /
    
    base_cgi = /cgi
  12. Dans le répertoire /etc/nginx/site-availables créer le fichier monitorix. Le port par défaut 8090 peut être changé dans ce fichier
    server {
    
    listen 8090;
    
     server_name monitorix;
    
     root /var/www/monitorix;
    
    location /cgi/ {
    
     gzip off;
    
     root /var/www/monitorix;
    
     fastcgi_pass unix:/var/run/fcgiwrap.socket;
    
     include /etc/nginx/fastcgi_params;
    
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
     }
    
     }
  13. Activer le site en créant un lien dans /etc/nginx/sites-enabled
    ln -s /etc/nginx/sites-available/monitorix /etc/nginx/sites-enabled/monitorix
  14. Configurer des graphiques à générer dans /etc/monitorix.conf dans la section GRAPH_ENABLED
  15. Relancer le service nginx et monitorix
    service nginx restart
    
    service monitorix restart

Voici le résultat :

Raspberry Pi Home Server - Etape 15 : monitorer le système avec Monitorix

Résultat de l’exécution de monitorix sur le Raspberry Pi

Prochainement je vous présenterai un tuto pour un autre outil de surveillance pour que vous puissiez faire votre choix !

Si vous souhaitez afficher tous les graphiques en une seule fois, le temps de chargement de la page est relativement long.

Vous aimerez aussi...

  • Chris

    Super le site! Merci pour les explications claires afin d’optimiser mon RapberryPi 🙂

  • thomas

    Bonsoir,

    J’ai suivis le tuto à la lettre mais je n’arrive pas à visualiser monitorix depuis un navigateur d’un autre ordinateur. Je tape http://adressedupi:9091 le port 9091 a été configuré dans le fichier /etc/nginx/site-available/monitorix. D’ailleur je ne vois plus phpinfo qd je tape l’adresse du pi dans un navigateur. Pourtant j’ai suivi le tuto Raspberry Pi Home Server – Etape 11 : installer Nginx avec support PHP, CGI et SCGI

    et j’obtenais le bon résultat à la fin.

    cordialement

    • Salut,
      Ca peut venir de la configuration de Nginx qui bloque les accès ou un firewall …
      A voir du coté des zones listen et server_name de la config du site ?

  • « Partie 11 . Editer /etc/monitorix.conf

    our $BASE_DIR = « /var/www/monitorix/ »;

    our $BASE_LIB = « /var/db/rrd/monitorix/ »;

    our $BASE_URL = « / »;

    our $BASE_CGI = « /cgi-bin »; »

    Ma question : faut-il ajouter ce bloc à la fin du fichier de conf, ou alors faut-il remplacer le bloc déjà existant :

    « base_dir = /usr/share/monitorix/

    base_lib = /var/lib/monitorix/

    base_url = /monitorix

    base_cgi = /monitorix-cgi »

    « our $BASE » étant différent de « base », je ne voudrais pas me planter.

    Merci encore pour le tuto !

    • PS: j’utilise la version 3.2.0 de monitorix. Peut-être que les blocs du fichier de conf n’ont plus la même tête.. Possible aussi.

    • Remplace juste les valeurs et dis moi si ça fonctionne. Effectivement il y a peut être eu un changement dans les fichiers de configuration

  • Il y a des changement par rapport à la version que tu utilises (ici, 3.2).

    Pour ne citer que lui, le serveur intégré à monitorix qu’il ne faut pas oublier de couper dans un fichier de conf. (voir la faq : http://www.monitorix.org/faq.html#Q305).

    Attention, par défaut, l’outil monitorix est accessible depuis le WAN.

    Incroyable !

    Moralité ? Ceci pouvant être que la partie émergée de l’iceberg, je passe à Zabbix…

    • Tu n’as pas besoin d’aller bien loin 😉

    • Piet

      Ah merci pour l’info 🙂

      Mais cela ne marche toujours pas…

      Est-ce juste ceci ?

      title = Place a title here

      hostname =

      theme_color = black

      refresh_rate = 150

      iface_mode = graph

      enable_zoom = y

      netstats_in_bps = n

      disable_javascript_void = n

      temperature_scale = c

      base_dir = /var/www/monitorix/

      base_lib = /var/db/rdd/monitorix/

      base_url = /

      base_cgi = /cgi-bin

      enabled = n

      port = 8080

      user = nobody

      group = nogroup

      log_file = /var/log/monitorix-httpd

      Merci d’avance.

      Piet

      • Piet

        L’erreur est la suivante (juste après le premier écran où on clique sur ok) :

        404 Not Found

        nginx/1.2.1

        • Pour l’erreur 404 tu peux regarder dans les logs de Nginx ça te dira si ta config est bonne ou pas. Il doit y avoir un soucis au niveau du chemin

      • Piet

        Apparemment le problème serait peut-être ici :

        root@raspberrypi:/var/www/monitorix# service monitorix status

        [FAIL] Monitorix is not running … failed!

        Impossible de le démarrer… Bizarre

      • Piet

        Alors qu’il bien ok lors du démarrage :

        root@raspberrypi:/var/www/monitorix# service monitorix start

        . ok

        root@raspberrypi:/var/www/monitorix# service monitorix status

        [FAIL] Monitorix is not running … failed!

      • Piet

        Et pour les logs j’ai ceci :

        2013/05/27 04:22:53 [error] 3569#0: *11 open() « /var/www/monitorix/monitorix/logo_top.png » failed (2: No such file or directory), client: 192.168.1.3, server: monitorix, request: « GET /monitorix/logo_top.png HTTP/1.1 », host: « 192.168.1.2:8090 », referrer: « http://192.168.1.2:8090/ »

        2013/05/27 04:23:15 [error] 3569#0: *11 open() « /var/www/monitorix/monitorix-cgi/monitorix.cgi » failed (2: No such file or directory), client: 192.168.1.3, server: monitorix, request: « GET /monitorix-cgi/monitorix.cgi?mode=localhost&graph=all&when=1day&color=black HTTP/1.1 », host: « 192.168.1.2:8090 », referrer: « http://192.168.1.2:8090/ »

        Bizarre il ne trouve pas le monitorix.cgi (ni le logo).

        Hors le .cgi est bien là.

        root@raspberrypi:/var/www/monitorix/cgi# ls

        monitorix.cgi monitorix.conf.path

        Je ne comprends plus rien…

  • Piet

    Avec la version 3.2, il y a des différences je crois.

    En fait il va chercher le .cgi dans monitorix-cgi, hors le dossier est juste monitorix.

    J’ai pourtant bien tout copié comme indiqué au point 8 du tuto.

  • Joloba

    Oui j’ai eu le même problème, dans la version 3.2 le .cgi est dans le dossier cgi et non plus cgi-bin comme dans le tuto. Du coup il faut modifier le fichier /etc/monitorix.conf avec « base_url = / » et « base_cgi = /cgi ». Et répercuter ce changement dans le fichier monitorix de nginx avec la ligne « location /cgi/ {« . Après ça marche 🙂 .

  • Article mis à jour. Merci à tous

  • flimo

    Merci . Marche Super bien sur raspberry avec apache aussi 😀

    J’ai juste eu un soucie avec le dossier imgs corrigé par un lien symbolic 😉

    Les .png se trouvaient bien dans /var/www/monitorix/imgs mais lors de l’affichage il allait les chercher dans /usr/share/monitorix/imgs

    j’ai donc fait fait un sudo ln -s /var/www/monitorix/imgs /usr/share/monitorix/imgs après avoir remové /usr/share/monitorix/imgs

  • Merci pour ton article intéressant sur l’installation de Monitorix. Pour ma part, je l’ai installé sous Arch Linux avec le serveur fourni (malgré l’autorisation d’accès CGI, je n’ai pas réussi à le faire tourner sous mon serveur Apache).

    Je rencontre plusieurs problèmes cependant. Sous « Apache », malgré que le mode ExtendedStatus soit activé et que je vois bien la page des stats avec le CPU, le « CPU » n’est pas restitué. Sa valeur est d’ailleurs un peu étrange : http://timekoin.no-ip.org//server-status?auto . Comme tu n’es pas sous Apache, tu ne pourras probablement pas m’aider.

    Parcontre, là où tu pourrais m’aider, c’est pour les stats Filesystems et I/O Activity. En effet, Monitorix ne semble pas détecter convenablement ma carte SD. J’ai changé dev/sda1 etc par dev/mmcblk0p2 (la partition active du système), mais il me répond dans les logs que c’est invalide ou inexistant. As-tu rencontré ce genre de soucis ? Si quelqu’un a la réponse sous Arch Linux avec le RPi… je trouve pas beaucoup de support sur la toile à ce sujet…

  • Bon… finalement en remplacant par le nom de l’appareil entier (et non la partition, j’obtiens finalement un résultat dev/mmcblkp0 . Ce serait sympa de relayer le message pour les autres, car les gens sont habitués aux noms de lecteur classique comme sda alors qu’il s’agit là d’un lecteur externe avec la SD.

    Merci 😉

  • dev/mmcblk0 pardon ! (édite mon précédent message si tu peux !)

  • Bon… je reviens… à priori c’était un faux signal… logiquement mmcblk0p2 est ma partition active… Pourrais-tu me confirmer si I/O marchait sur ton système ?… Je suis assez frustré, je ne supporte pas les choses qui ne fonctionnent pas comme il faudrait. 😉

    • Salut. Les I/O fonctionnaient sous Raspbian. Sous Arch, desolé je ne me souviens plus. A voir peut etre sur le site de monitorix la methode de calcul des io si ca passe par un fichier de donnees dans /proc ou /dev ou si un calcul qu’il fait lui meme.

  • Phil

    Merci pour tes excellent articles… j’ai reussi a faire beaucoup de choses avec success, mais celui ci… non…

    si j’accede mon serveur a l’adresse/port pour monitorix, la page affiche, et me laisse choisir quel graphique et quel periode te temps, par contre, quand la page suivante charge… je n’ai pas de graphique, j’ai juste:

    ERROR: while graphing /var/www/monitorix/imgs/system1.1day.png: Could not save png to ‘/var/www/monitorix/imgs/system1.1day.png’ ERROR: while graphing /var/www/monitorix/imgs/system1z.1day.png: Could not save png to ‘/var/www/monitorix/imgs/system1z.1day.png

    le dossier ne contient effectivement aucun fichier…

    le fichier monirotix-httpd montre le meme resultat…

    Wed Oct 30 14:37:50 2013 – NOTEXIST – [192.168.1.191] File does not exist: //imgs/raspberrypi3.1day.png
    Wed Oct 30 14:37:50 2013 – NOTEXIST – [192.168.1.191] File does not exist: //imgs/int1.1day.png
    Wed Oct 30 14:37:51 2013 – NOTEXIST – [192.168.1.191] File does not exist: //imgs/int2.1day.png
    Wed Oct 30 14:37:51 2013 – NOTEXIST – [192.168.1.191] File does not exist: //imgs/int3.1day.png
    Wed Oct 30 14:37:51 2013 – OK – [192.168.1.191] « GET //logo_bot.png – Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 »
    Wed Oct 30 14:37:51 2013 – OK – [192.168.1.191] « GET //monitorixico.png – Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 »
    Wed Oct 30 14:37:51 2013 – OK – [192.168.1.191] « GET //monitorixico.png – Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 »

    j’imagine que le « // » ne m’aide pas… mais je ne trouve aucun endroit dans ma config ou est-ce que le « / » est doubler…. as tu une idee?

    • Est ce que le probleme ne vient pas des droits d’ecriture dans le repertoire imgs ? On dirait qu’il ne peut pas y ecrire et donc il n’arrive pas a chercher les images

      • Phil

        c’est ce que je me dit aussi… mais jai les bonnes permissions…

        root@raspberrypi:/var/www# ls -lsar
        total 28
        4 drwxr-xr-x 4 www-data www-data 4096 Oct 28 12:19 monitorix
        4 -rw-r–r– 1 www-data www-data 23 Oct 28 11:48 index.php.old
        4 -rw-r–r– 1 www-data www-data 177 Oct 24 10:55 index.html.old
        4 drwxr-xr-x 2 www-data www-data 4096 Oct 30 15:10 imgs
        4 drwxr-xr-x 2 www-data www-data 4096 Oct 30 15:10 cgi
        4 drwxr-xr-x 13 root root 4096 Oct 28 11:37 ..
        4 drwxr-xr-x 5 www-data www-data 4096 Oct 30 15:21 .

        l’utilisateur www-data et le groupe www-data… sont-ils creer par defaut?

        • En principe, a verifier dans /etc/group et /etc/passwd
          Tu as regardé dans les logs du serveur web et de php-fpm ?

          • Phil

            bon… apres avoir tout refait pour la 3e fois… j’ai trouver le pepin:

            etape 12:
            Dans le répertoire /etc/nginx/site-available créer le fichier monitorix. Le port par défaut 8090 peut être changé dans ce fichier

            erreure de frappe (pour les copy/paster comme moi)
            sites-available … il manque le « s »

            merci pour tout – continue!