Raspberry PI ~ 14 : Surveiller les performances du rpi depuis le web

Ce post est le quatorzième (mazette, déjà !) d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! 😀

C’est bien beau de traficoter tout un tas de truc avec notre raspberry PI ! Mais celui ci étant une frêle petite bébête, il peut être intéressant de le contrôler un peu question performances.

EDIT : Il semble que le projet ai été abandonné, les liens de téléchargements ne sont plus proposés.
Si vous souhaitez installer du monitoring, je vous conseille d’installer Yana-server qui le permet et qui sera très utilisé dans la suite des tutos.

 

Et ça tombe bien, il existe une interface web mimi comme tout justement faite pour ça !!

image

RaspControl vous permettra de monitorer de nombreuses infos sur l’état de santé de votre raspberry pi,n’importe quand et n’importe ou.

Ce petit logiciel en PHP est “standalone” c’est à dire qu’il peux tourner sans que vous ayez au préalable installé un serveur web.

Avec raspcontrol, vous pourrez consulter des informations mais aussi effectuer quelques actions comme redémarrer le système, redémarrer /stopper/démarrer apache, consulter vos fichiers de logs, mettre à jour les paquets, mettre à jour le firmware, relancer ssh etc..etc…

Installation

Tenté par raspcontrol ? Alors installons tout ça  !!

EDIT : Comme l’équipe de dev de ce programme s’amuse à changer son archi tout les 4 matins, il est possible que ce qui suit ne corresponde plus à la réalité, je vous conseille donc de vous reporter au tuto d’instal officiel pour plus de sûreté 🙂

N’oublions par avant tout de faire une mise à jour générale des paquets

sudo apt-get update
sudo apt-get upgrade

On installe ensuite le paquet php5-cli qui permet simplement de faire du php en ligne de commande

sudo apt-get install php5-cli

On se place dans un répertoire quelconque, on télécharge l’archive de raspcontrol et on la décompresse

cd /home/pi/
wget https://github.com/Bioshox/Raspcontrol/zipball/master
unzip master

Le dossier décompressé à un nom barbare, donc on le renomme “monitoring” (ou autre, comme vous voulez)

mv Bioshox-Raspcontrol-694435b/ monitoring

Théoriquement, on peux lancer le programme à ce stade, le problème c’es qu’il vas se lancer sur le port 80, qui est déjà utilisé par notre serveur web (apache, lighthttpd ou nginx…) donc on chance le port en éditant le fichier d’exécution du programme :

cd monitoring
nano start.sh

Remplacez

HOST=0.0.0.0
PORT=80

Par

HOST=0.0.0.0
PORT=8080

(ou un autre port en fonction de ce qui est déjà pris chez vous) et enregistrez (ctrl+x, Y puis entrée)

Vous pouvez ensuite lancer le programme avec la commande :

sh ./start.sh

(vous devez être situé dans le répertoire “monitoring”, si ce n’est pas le cas, il faut taper le chemin complet vers start.sh)

Vous pouvez alors accéder via un navigateur a votre panel de contrôle à l’adresse : http://votre.adresse.raspberry.pi:8080

(remplacez “votre adresse raspberry pi” par l’adresse réseau de votre rpi)

A la première connexion, raspcontrol vous demande de créer un compte, entrez donc un identifiant et un mot de passe

image

Cliquez sur “create account”, vous retombez alors sur un écran similaire qui vous demande de vous identifier, remettez les même identifiants puis “login”, ça y est, vous êtes sur le monitoring !!

image

L’installation/utilisation est terminée, cependant si vous ne voulez pas être embêté très prochaine, il vous faudra faire une petite manip !!

En effet vous remarquerez que si vous fermez votre terminal, le star.sh s’arrête et vous ne pouvez plus accéder à votre monitoring (zut !).

Pour résoudre ce problème, il existe plusieurs manières de faire (non vous n’allez pas laisser votre console ouverte 24/24h 7/7j bande de gougnafiers ^^) la plus simple reste encore d’utiliser Screen.

Screen est un petit utilitaire qui permet d’ouvrir une console en “tâche de fond”, ainsi vous pouvez y lancer des programmes sans avoir a garder votre terminal ouvert.

Installons d’abord Screen

sudo apt-get install screen

Puis lançons notre monitoring à travers Screen

screen -dmS Raspcontrol sh ./start.sh

Vous verrez alors que vous pouvez fermer votre console sans interrompre le programme ! Sympa non ? Sourire

Mais un dernier problème se pose !! ( hé hé hé ) Que se passera t’il quand votre raspberry PI vas redémarrer ? Plus de screen en tâche de fond, donc plus de monitoring, obligé de relancer la commande ci dessus (fuck !!)

On vas donc créer une petite tâche planifiée qui vas se lancer automatiquement au reboot du rapsberry et qui vas exécuter notre commande screen.

On ouvre notre gestionnaire de tâche planifiée

crontab -e

On y ajoute la ligne suivante à la fin du fichier

@reboot cd /home/pi/monitoring && screen -dmS monitoring sh ./start.sh

On sauvegarde (ctrl+X, Y, puis entrée) et c’est bon !!

Notez bien que le combo screen + cron au démarrage est très puissant et vous permet de lancer tout un tas de programmes automatiquement et en tâche de fond au démarrage de votre raspberry pi (par exemple la commande startx pour afficher un bureau visuel ou autres…)

Si vous voulez accéder a votre interface de monitoring depuis autre part que votre réseau, pensez a débloquer le port 8080 de votre box Sourire.

Notez bien que cette application est codée avec les pieds, mais qu’elle à le mérite d’exister, de fonctionner relativement bien et qu’elle pose les bases de la récupération d’infos importantes pour monitorer le rasp 🙂

Bien à vous,

Idle

81 réactions au sujet de « Raspberry PI ~ 14 : Surveiller les performances du rpi depuis le web »

  1. coconox Réponse

    Je termine à l’instant un de tes tutoriels sur le RPi et en voilà un autre qui apparaît !! Je ne sait plus où donner de la tête ! Un léger coup d’oeil suffit pour voir que c’est encore du pur génie 🙂

    Toi qui disais :” Ca fait plaisir de voir qu’il y en a encore qui suivent, j’ai peur de perdre des gens avec mes marmonnages ”

    Un peu mon n’veu qu’on te suit !! On est tous avide de tes connaissances 🙂 J’en profite pour te féliciter pour tout ton boulot et ta disponibilité ! Encore bravo !!! 😉

    • aldef Réponse

      crontab n’est pas fait pour démarrer des programmes au boot du pi
      il faut mettre un script dans /etc/init.d et un lien symbolique qui l’appelle dans /etc/rc2.d

  2. korrigan44 Réponse

    Super pratique !! merci beaucoup Idleman !!

    J’attend avec grande impatience ton prochain tuto !

    Korrigan44

  3. Christophe Réponse

    Bonjour,

    pi@raspberrypi ~ $ cat /etc/raspcontrol/database.aptmnt
    {
    “user”: “pi”,
    “password”: “raspberry”

    Dommage de ne pas avoir crypté le mot de passe …

    Christophe

    • Boudou Réponse

      Bonjour,
      Je déterre les vieux message 🙂
      On peux recuperer un mot de passe chiffré avec echo -n 'le_mot_de_passe' | md5sum le coller dans /etc/raspcontrol/database.aptmnt à la place du vieu mot de passe.
      Ensuite nano /chemin/jusque/monitoring/login.php
      et on change la ligne
      if ($_POST['username'] == $username && $_POST['password'] == $password)
      en
      if ($_POST['username'] == $username && md5($_POST['password']) == $password)
      En espérant avoir été utile à certain !

      Axel

  4. Damien Réponse

    Bonjour,

    Comment peut-on récupérer ces informations dans une autre interface web?
    Je m’explique, j’ai une interface web avec de jolis graphiques, je souhaiterai donc uniquement récupérer ces valeurs. Sais-tu comment peut-on faire cela?

    Cordialement.
    Damien

  5. H3 Réponse

    Très sympa en effet !

    Par contre, une remarque : Le mot “gougnafiers” a été interdit il me semble, par la loi contre les mots des années 1820.

    Son utilisation est passible de 99 ans d’emprisonnement et de 15 coups de fouets. 😀

    • Idleman Auteur ArticleRéponse

      Uhm, oui c’est normal, mon code hightlighter merde à fond :p sauf que j’ai plus le courage de l’annoncer dans mes tutos ^^

    • Idleman Auteur ArticleRéponse

      Oui, ça affiche moins d’infos et c’est un peu moins pro raspconfig a mon avis ^^, mais bon ça a le mérite d’exister 🙂

    • Anael Favre Réponse

      C’est surtout beaucoup plus rapide !!!

      Dommage que les informations sur les débits de carte réseau marchent pas sur moi : cablé RJ45 pourtant … Mais les tunnels VPN doivent le faire bugger 🙁

  6. Benoit V Réponse

    Pour démarrer un process en background pourquoi ne pas utiliser & ?
    Et démarrer un service à diffèrent runlevel y’a chkconfig qui est fait pour ça plutôt ?
    Ou même encore plus basique le fichier /etc/rc.local

    Cron c’est pas fait pour ca lol !

    • Idleman Auteur ArticleRéponse

      Cron étant fait pour planifier des tâches, planifier une tache d’exécution de programme au démarrage ne me semble pas être une hérésie.

      Comme je l’ai spécifié dans l’article, il existe une multitude de façon de faire la même chose, j’ai choisis celle qui me parait la plus simple, après tu es libre d’utiliser ce qu’il te plait 🙂

      • galendel Réponse

        Sa me choque un peu ^^, un service se lance dans /etc/init.d/, c’est pas plus compliqué que ca et sa permet par exemple de restart ou stop le service. Ce que je doute que tu puisse faire avec cron enfin je connais pas trés bien.
        De plus tu sais pas trop quand cron est lancé au démarrage et si il est lancé avant le réseaux(peu probable) ou d’autre service essentiel au tiens, tu peux donc potentiellement te retrouver avec des crash sur tes services.
        (et en general il y a 1 ou 2 facon de faire mais bon ^^)
        De plus il suffit d’installer un lighttpd ou un apache pour d’autre service et donc on pas besoin de trainer un server web de plus sur sa config.
        Merci pour le tuto (dommage qu’il y est pas de courbe).

        • Idleman Auteur ArticleRéponse

          Au risque de me répéter : je n’oblige personne à passer par screen, faites comme vous le souhaitez, moi je fais comme ça, et ça marche parfaitement, on peux stopper ou recommencer le screen quand on veux, et ça n’interfère à aucun moment avec un autre service puisque c’est lancé a la fin du reboot, pour ce qui est du serveur je suis d’accord qu’un standalone n’est pas le must, mais le script a été développé comme ça donc il faut voir avec leurs auteurs 🙂

          • Idleman Auteur Article

            En standalone il marche avec n’importe quoi puisqu’il n’a pas besoin de serveur autre que celui qu’il inclus pour fonctionner…

  7. screeminelle Réponse

    Super tes tutos raspberry pie j’adore c’est vraiment cool, tu nous épargne des heures de recherche grâce a tes trouvailles. Une idée de tuto “commander des moteurs avec le raspB.” ça pourrais être pas mal. Merci encore !!!!!

    • Idleman Auteur ArticleRéponse

      C’est prévu (gestion d’un servo moteur avec le raspberry pi) mais j’ai pas encore trouvé d’application domotique àa ça (ça touche plus la robotique, et je n’ai pas envie de me lancer la dedans pour le moment ^^) m’enfin je vais bien trouver quelque chose :p

      • Geo Réponse

        Hum et pourquoi pas:
        “YURI ouvre la porte du meuble”
        “YURI sort le sel”
        “Il fait chaud YURI, ouvre la fenêtre”
        “YURI tire la chasse”

        • Idleman Auteur ArticleRéponse

          Il faudra attendre les tutos sur les servo moteurs et sur la sonde de température pour ça 🙂 (mes chiottes sont déjà équipée avec un prototype mou ha hah aha)

  8. seven-up Réponse

    Effectivement, comme dis plus haut, l’automatisation au démarrage me parait un peu lourde. Après du moment que ça marche ^^
    Sinon découvert cet outil il y a moins d’une semaine, et c’est sympa.
    Et sinon, si pas de serveur http d’installé, tout a fait possible de laisser le 80 🙂
    Chez moi le 8080 est réservé à la remote de XBMC 😀
    Merci pour le partage et le tuto en tout cas

  9. Dimitri Réponse

    Bonsoir,

    après avoir taper la commande sudo apt-get install php5-cli
    j’ai j’ai ça comme erreur:
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    php5-cli is already the newest version.
    0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.
    2 not fully installed or removed.
    After this operation, 0 B of additional disk space will be used.
    Do you want to continue [Y/n]? y
    Setting up mysql-server-5.5 (5.5.28+dfsg-1) …
    [ ok ] Stopping MySQL database server: mysqld.
    [….] Starting MySQL database server: mysqld . . . . . . . . . . . . .[F failed!
    invoke-rc.d: initscript mysql, action “start” failed.
    dpkg: error processing mysql-server-5.5 (–configure):
    subprocess installed post-installation script returned error exit status 1
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    j’ai raté une étape?

    merci

    • Idleman Auteur ArticleRéponse

      Étrange.. je serais toi je ferais une suppression des paquets mysql-server (en oubliant pas de faire une backup de tes bases avant :p) + php5-cli, un ptit apt-get update, upgrade et réinstallation des deux paquets

  10. Majoux Réponse

    Cron pour démarrer une commande au redémarrage, c’est juste ce qu’il faut par contre screen… je vois pas l’intérêt.
    Le cron suivant devrait suffire :
    @reboot sh /home/pi/monitoring/start.sh

    En fait vu que le rpi est une bête limitée, il vaut mieux éviter d’installer trop de truc.

    • Majoux Réponse

      Bon le cron que j’ai mis, c’est de la m**** ça marche pas ! (@reboot qui foire ??)
      Solution :
      créer /etc/init.d/monitoring
      collez ça dedans :
      #!/bin/sh

      # Placez ici des commandes à exécuter à chaque appel du script

      # Le switch case ci-dessous permet de savoir si le système souhaite lancer ou arrêter le script (on le lance au démarrage e$
      case “$1” in
      start)
      # Placez ici les commandes à exécuter uniquement au lancement du script
      sh /home/pi/monitoring/start.sh
      ;;

      stop)
      # Placez ici les commandes à exécuter uniquement à l’arrêt du script
      ;;

      *)
      # On indique ici comment utiliser le script, c’est dans le cas où le script est appelé sans argument ou avec un argument inv$
      echo ‘Usage: /etc/init.d/monitoring {start|stop}’
      exit 1
      ;;
      esac

      exit 0

      Enregistrez puis donnez le droit d’exécution
      sudo chmod +x /etc/init.d/monitoring
      Création des liens symboliques
      sudo update-rc.d monitoring defaults
      redémarrez.
      Ca démarre bien tout seul au reboot mais reste le stop à gérer si on en a besoin.
      Note:
      Si vous voulez le virer, faut faire :
      sudo update-rc.d monitoring remove

  11. eliobou Réponse

    Super système pour récupérer les infos rapidement, par contre le faire tourner dans un screen en arrière-plan ne prend pas trop de RAM sur les 512 petit mo du Raspberry ?

    • Idleman Auteur ArticleRéponse

      Pas la moindre idée ^^, chez moi ça ne semble pas peiner, mais je n’ai pas 12 000 autres trucs qui tournent ^^ à tester 🙂

  12. Leguman Réponse

    Bonjour, petite question.
    J’ai pommé mon log et mdp, je peux le retrouver où?
    Ou comment le modifier ?

    Merci d’avance 😉

    • Idleman Auteur ArticleRéponse

      Dans /etc/raspcontrol/database.aptmnt ils sont tout deux en clair.

      C’est une grosse faiblesse du script, mais qui peux sauver la vie dans ces cas la ^^.

      Tu peux carrément supprimer le fichier pour réinitialiser la création d’un compte a ce qu’il me semble.

  13. thomas Réponse

    bonjour,

    J’ai suivi le tuto à la lettre tout fonctionne sauf le démarrage automatique du script au démarrage du raspberry. J’ai testé les deux méthodes ( cron et le script dans /etc/init.d/monitoring) aucune des deux ne fonctionne. je suis sous Raspbmc.

  14. thomas Réponse

    Le dossier monitoring existe bien et le fichier start.sh est présent. voici le contenu de monitoring :
    monitoring$ ls -l
    total 40
    -rw-r–r– 1 pi pi 19369 Nov 25 02:33 LICENCE
    -rw-r–r– 1 pi pi 2521 Nov 25 02:33 README.md
    drwxr-xr-x 4 pi pi 4096 Nov 25 02:33 app
    -rw-r–r– 1 pi pi 295 Nov 25 02:33 index.php
    drwxr-xr-x 3 pi pi 4096 Nov 25 02:33 server
    -rwxrwxrwx 1 pi pi 258 Feb 26 19:51 start.sh

    Le résultat de la commande sudo screen -ls :
    No Sockets found in /var/run/screen/S-root.

    le screen ne se lance pas du tout, le mystère reste entier 🙂

    • Idleman Auteur ArticleRéponse

      La j’admet que je n’ai plus beaucoups d’idées ^^ faudrait mettre un log sur ton cron voir pourquoi il ne veux pas démarrer le screen au démarrage, ou sinon tu passe par les autres méthodes proposées en commentaire (qu’au moins je ne me soit pas fait engueuler à ce sujet pour rien :D)

      • thomas Réponse

        je viens de voir que dans le fichier xbmc.log du répertoire /var/log/ il ya une ligne suspecte :

        20:46:52 T:2916926528 NOTICE: disable service: cron

        reste à savoir comment l’activer 🙂

        • Idleman Auteur ArticleRéponse

          oO, ça me parait un peu gros qu’une application comme xmbc se permette de désactiver les CRON quand même ^^

          • thomas

            je ne trouve pas le fichier pour rendre enable cron, MAIS j’ai trouvé la commande pour le lancer “sudo service cron start” je lancerais cron à la main pour le moment. Merci pour ton temps et aide ! 🙂

  15. bruneau Réponse

    parfait pour surveiller le petit 🙂

    Apparaît une ligne Uti% dans la rubrique stockage en orange (pas le V vert) avec dispo en commentaire ! De quoi s’agit-il ?

    De plus il me sort à chaque rafraîchissement dans la console “wlan0: erreur lors de la recherche d’infos sur l’interface: périphérique non trouvé”. Surprenant je n’ai pas de wifi !?

    Ça vous parle ?
    Merci.

    • Idleman Auteur ArticleRéponse

      j’ignore de quelle partie tu parle (je ne monitore pas mon rasp, j’aime naviguer les yeux fermés) mais je suppose que c’est l’util UC et dispo le pourcentage disponible de l’uc …

  16. Espace Broderie Réponse

    Bonjour,
    il m’est impossible d’editer le fichier d’execution du programme, lorsque j’ouvre avec le nano, il n’y a rien, j’ai bien essayer de creer les 2 lignes pour changer le port mais rien ne change une fois que je lance le programme , impossible d’acceder au port 8080, seul le port 80 est accessible mais avec le seveur pas avec le raspcontrol.
    une idée pour m’aider

    PS le programmme a la base n’avait pas le meme nom exactement j’ai quand meme renommer en monitoring

    • Idleman Auteur ArticleRéponse

      Si il n’y a rien quand tu fais le nano, c’est certainement que le fichier n’existe pas et que tu le créé, essaye de retrouver le chemin exacte vers celui ci 🙂

      • Firimeldaie Réponse

        start.sh n’existe plus, à voir par quoi il est remplacer perso j’ai pas continuer le tuto de peur d’avoir des conflit avec le webserver existant

        • Idleman Auteur ArticleRéponse

          Ah merde !! ^^ Font chier à changer leurs archi tout les 4 matins :), merci d’avoir prévenu :p

  17. alex Réponse

    Bonjour,

    j’aimerai aussi avoir cette outil pour l’analyse des performances. Le problème est quand j’effectue cette commande wget https://github.com/Bioshox/Raspcontrol/zipball/master je Unzip. Mais je n’ai pas la même version que dans le tuto(j’ai la version Bioshox-Raspcontrol-3aae0ad alors que tu as la version: Bioshox-Raspcontrol-694435b .

    La version que j’obtient n’a pas le start.sh. j’ai tout de même réussi à faire fonctionner mais l’interface est banale et donne quasiment aucune information.

    Comment pourrais-je avoir la même version que toi afin d’avoir toutes les informations comme indiqué dans l’image de départ

    • Idleman Auteur ArticleRéponse

      Effectivemetnt le message est un peu useless ^^, as tu regardé dans tes logs serveurs ? Il y aura surement plus de détails (var/logs/apache2/error.log)

      • Nagawica Réponse

        Malheureusement, rien dans les logs! Bon, ça m’a quand même permis de découvrir l’existence de ces log 😉
        Tant pis, je vais fouiller un peu dans le code pour voir d’où ça pourrait venir, et si je trouve pas, je posterai sur le site de l’auteur!
        Merci quand même pour ton aide 🙂

  18. Smat Réponse

    2013-09-29

    A cette date le script fonctionne sans start.sh.
    Il ne fonctionne pas directement avec nginx, il faut insérer des règles de réécriture d’URL dans le fichier de configuration de nginx pour que Raspcontrol soit opérationnel.

    Je précise que je ne connais pas du tout nginx, je le découvre depuis 48h pour essayer de faire tourner un serveur léger sur le Raspberry Pi…

    Voilà ce que j’ai piovché et qui fonctionne chez moi (Raspbian, nginx, php5 en CGI):
    Dans nginx rentrer dans le fichier de configuration par défaut:

    sudo nano /etc/nginx/sites-available/default

    On ajoute une règle de réécriture par exemple après cette section:

    location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ /index.html;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
    }

    Règle à ajouter:

    rewrite ^/Raspcontrol/details$ /Raspcontrol/index.php?page=details last;
    rewrite ^/Raspcontrol/logout$ /Raspcontrol/login.php?page=logout last;

    Solution donnée par Fredfl ici:
    https://github.com/nicolabricot/Raspcontrol/issues/4

    /!\ pour ma part j’ai écrit Raspcontrol en minuscule, donc corrigez la règle de réécriture en conséquence 🙂

    Pour terminer relancer nginx:

    sudo service nginx restart

    Pensez aussi à vider le cache du navigateur (Ctrl+F5) pour recharger la page de monitoring de Raspcontrol.

    Sources qui m’ont permis d’y arriver:
    https://github.com/nicolabricot/Raspcontrol/issues/4
    http://wiki.pluxml.org/index.php?page=Utiliser+l%27URL+Rewriting+avec+Nginx

    Merci aux intervenants pour leur travail et de partager tout ça avec les autres.
    o/

  19. mick_ban Réponse

    Salut,
    ce moniteur nous donne l’etat du RPI et de la carte SD , mais savoir l’etat du disque dur?(savoir s’il est plein)

  20. Ping Monitoring - les notes de thierry

  21. alexispi Réponse

    Bonjour,
    Super tutos mais serait-il possible de mettre a jour celui-ci ? car dans la nouvelle version de raspcontrol il n’y a plus de fichier start.sh donc sa change tout et tous les tutos de raspcontrol que je trouve sur internet sont anciens aussi.
    Donc j’espère que tu vas mettre a jour ce tuto 🙂

  22. RaspInPeace Réponse

    Super Tuto, et supers intervenants ! Les commentaires sont une mine d’info, et ta disponibilité est (presqu’) effrayante 😀
    Bravo pour tous les partages d’infos, et merci

  23. Beki Réponse

    Cool ce tuto!! C’est pour superviser une seule rasberry parcontre!! connaissez vous des outils adéquats pour superviser plusieurs rasberry a la fois?

    j’ai plusieurs rasberry qui plus est sont mobiles!! je veux pouvoir les superviser a distance. Merci j’attend

Répondre à Espace Broderie Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.