2022-08-27 08:58 Temps de lecture : 14 min

Comment surveiller le processeur et la mémoire sous Linux ?

Il est essentiel de comprendre la consommation des ressources, que ce soit au niveau d'un processus individuel ou de l'ensemble du système. Ceci est particulièrement crucial pour surveiller l'utilisation du processeur (CPU) et de la mémoire.

En tant qu'administrateur système, il est fréquent de rencontrer des situations où une application devient lente ou cesse de répondre en raison d'une surutilisation des ressources telles que le processeur, la mémoire ou le réseau. Si le serveur n'exécute qu'un seul processus, il est simple d'identifier le responsable d'une consommation excessive. Cependant, sur un serveur partagé hébergeant plusieurs services, la tâche de localisation du processus gourmand en ressources devient plus complexe.

De nombreuses solutions de surveillance existent pour faciliter cette tâche. Mais si vous ne disposez pas de ces outils ou si vous préférez une approche en ligne de commande, cet article vous présentera des solutions efficaces et, surtout, gratuites !

Outils de surveillance des ressources système

Plusieurs outils sont à votre disposition pour observer l'utilisation des ressources système. Voici une sélection de ces outils, chacun avec ses spécificités.

top

Un bon point de départ est d'utiliser la commande top, ou son alternative htop, pour obtenir une vue d'ensemble des processus actifs et de leur consommation de ressources.

Comme vous pouvez le voir dans l'exemple ci-dessous, top fournit un aperçu de l'utilisation des ressources par tous les processus en cours d'exécution. Dans cet exemple, MySQL consomme 11.6% du CPU et 2.5% de la mémoire.

top - 11:57:33 up 0 min,  1 user,  load average: 3.69, 0.96, 0.32
Tasks: 165 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s): 21.0 us,  5.5 sy,  0.0 ni, 70.5 id,  1.7 wa,  0.0 hi,  1.3 si,  0.0 st
KiB Mem :  7637308 total,  5802888 free,   849512 used,   984908 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6495648 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1986 netdata   20   0 1738856 191560  22948 S  11.6  2.5   0:02.30 mysqld
 3021 www-data  20   0  255288  78420  55484 S   6.6  1.0   0:01.55 php-fpm
 3138 www-data  20   0  253096  79780  59228 S   6.6  1.0   0:00.92 php-fpm
 3153 www-data  20   0  255116  79088  56472 S   5.0  1.0   0:00.70 php-fpm
 3037 www-data  20   0  257200  81088  56216 S   4.3  1.1   0:01.50 php-fpm
 3048 www-data  20   0  257088  78740  55380 S   4.3  1.0   0:01.46 php-fpm
 3054 www-data  20   0  254160  72168  52108 S   3.7  0.9   0:01.32 php-fpm
 3135 www-data  20   0  255084  75912  54836 S   3.7  1.0   0:00.91 php-fpm
 3051 www-data  20   0  254096  73804  51964 S   3.0  1.0   0:01.38 php-fpm
 2962 www-data  20   0   45280   7284   3488 R   2.0  0.1   0:00.22 openresty
 1062 netdata   20   0  338748  76144   6720 S   1.0  1.0   0:01.31 netdata
 1702 netdata   20   0   21852   4232   2352 S   1.0  0.1   0:00.34 apps.plugin
 1729 netdata   20   0   18636   3280   2764 S   0.7  0.0   0:00.05 bash
 1980 netdata   20   0   62008  12896   5796 S   0.7  0.2   0:00.14 redis-server
   11 root      20   0       0      0      0 I   0.3  0.0   0:00.14 rcu_sched
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:00.92 dockerd
 1857 root      20   0   10600   5564   4276 S   0.3  0.1   0:00.03 containerd-shim
 2045 root      20   0    9948   6028   5016 S   0.3  0.1   0:00.14 forego
 2934 root      20   0   13616   8760   5928 S   0.3  0.1   0:00.07 docker-gen
 2966 systemd+  20   0   25784   7924   2340 S   0.3  0.1   0:00.06 nginx

top est généralement installé par défaut sur la plupart des distributions Linux.

Une fois que vous avez identifié un processus suspect, vous pouvez vous concentrer sur celui-ci en particulier. Pour cela, vous pouvez exécuter la commande top en spécifiant le PID du processus, comme dans l'exemple suivant :

top -p $PID

Voici un exemple d'utilisation avec top -p 3102:

top - 11:59:56 up 3 min,  1 user,  load average: 0.72, 0.70, 0.31
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.1 us,  2.9 sy,  0.0 ni, 89.1 id,  0.3 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  7637308 total,  5802024 free,   783672 used,  1051612 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6555636 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 3102 www-data  20   0  329500  82376  60640 S   0.0  1.1   0:03.35 php-fpm

Vous pouvez également utiliser la commande grep en combinaison avec top pour filtrer les résultats. L'exemple ci-dessous montre comment vérifier l'utilisation de Docker:

[email protected]:~# top | grep docker
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.38 dockerd
 2934 root      20   0   14676   9652   5928 S   0.3  0.1   0:00.54 docker-gen
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.39 dockerd
 1007 root      20   0 1347424  74524  38872 S   1.0  1.0   0:01.42 dockerd
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.55 docker-gen
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.56 docker-gen

htop

htop est un outil similaire à top, mais il offre plus d'informations et une interface plus conviviale. Il affiche notamment la colonne de commande, ce qui facilite l'identification du chemin des processus. L'affichage coloré améliore également la lisibilité.

htop n'est pas installé par défaut sur toutes les distributions Linux, mais son installation est facile. Voici comment procéder:

Installer htop sur Ubuntu

apt-get install htop

Installer htop sur CentOS/RHEL 8.x

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop

glances

Comme son nom l'indique, glances fournit une vue synthétique de l'utilisation du système sur un seul écran. Les processus en cours d'exécution sont triés en fonction de leur utilisation du processeur.

Vous pouvez installer glances sur CentOS 8 en utilisant DNF:

dnf install glances

Pour CentOS 7, utilisez YUM :

yum install glances

atop

atop est un outil similaire aux précédents, mais il possède une fonctionnalité intéressante : la possibilité d'enregistrer la sortie dans un fichier pour une analyse ultérieure. Cela peut être particulièrement utile si vous rencontrez des problèmes à des moments précis. Vous pouvez planifier l'enregistrement de la sortie à l'aide de cron ou d'autres outils, puis l'examiner ultérieurement.

Pour enregistrer la sortie dans un fichier, utilisez la commande :

atop -w filename

Pour lire le fichier enregistré, utilisez la commande :

atop -r filename

atop prend en charge de nombreux arguments (intervalle, nombre d'échantillons, etc.). Nous vous recommandons de consulter le manuel pour en savoir plus.

Pour une analyse en temps réel, lancez simplement la commande atop :

Vous pouvez installer atop comme ceci:

dnf install atop

ps

La commande ps permet d'afficher des informations sur les processus. Vous pouvez l'utiliser avec le PID d'un processus pour afficher son utilisation du CPU et de la mémoire.

ps -p $PID -o %cpu,%mem

La sortie devrait ressembler à ceci:

[email protected]:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
[email protected]:~#

nmon

nmon est un outil interactif en ligne de commande qui permet de surveiller l'utilisation du processeur, de la mémoire, des disques, du réseau, du NFS et de la mémoire virtuelle. Pour afficher les processus qui consomment le plus de ressources, exécutez nmon et appuyez sur la touche t.

Vous pouvez installer nmon comme ceci:

dnf install nmon

Monit

Monit est une solution open source en ligne de commande et basée sur le web pour surveiller les ressources du serveur, les démons, les fichiers, les répertoires, les systèmes de fichiers, etc.

Monit propose également un widget pratique :

Monit est un outil de surveillance léger, mais ses fonctionnalités sont nombreuses.

Monitorix

Monitorix est un utilitaire open source léger pour surveiller les serveurs Linux. Monitorix intègre une interface HTTP, ce qui permet de vérifier l'utilisation et d'autres éléments via un navigateur web. Voici quelques-uns des rapports d'utilisation disponibles :

  • Noyau/Température
  • Système de fichiers et E/S
  • Trafic réseau
  • Apache/Mail/FTP/Nginx
  • MySQL/Varnish/Memcached

Monitorix propose également une configuration d'alertes pour être averti en cas de problème. C'est un choix judicieux pour la gestion de serveurs dans le cloud et la mise en place d'une surveillance proactive.

Netdata

Netdata est un outil de surveillance des performances en temps réel pour les ressources système, les applications, les serveurs web, les bases de données, le DNS, la messagerie, les capteurs matériels, etc. Il est open source et facile à configurer. Toutes les données sont collectées, stockées et diffusées en continu pour une visualisation interactive. Les données sont collectées chaque seconde, afin de ne rien manquer.

Netdata est apprécié par de nombreux acteurs du secteur.

N'attendez plus et prenez le contrôle de vos serveurs Linux !

btop

btop est un moniteur de ressources interactif avec une interface utilisateur agréable, qui permet de gérer facilement les serveurs Linux.

Vous pouvez facilement visualiser les processus sous forme d'arborescence, filtrer la liste des processus et gérer les ressources gourmandes. btop affiche également un graphique à mise à l'échelle automatique qui montre l'utilisation du réseau.

De plus, vous pouvez vérifier la vitesse du disque et mettre fin aux activités d'E/S.

btop peut être utilisé sur Linux, FreeBSD et macOS.

Conclusion

Nous espérons que les outils présentés dans cet article vous aideront à visualiser l'utilisation de votre serveur en temps réel afin que vous puissiez prendre les mesures nécessaires. Si vous débutez en tant qu'administrateur système et que vous souhaitez suivre une formation pratique, nous vous recommandons de consulter ce cours Udemy.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.