GNU/Linux >> Tutoriels Linux >  >> Linux

Dépanner et surveiller les performances du système Linux avec nmon

Moniteur de Nigel (nmon ) est un outil de surveillance des performances du système développé à l'origine par IBM pour le système d'exploitation AIX, puis porté pour Linux sur plusieurs architectures de processeur.

Le principal avantage de nmon est qu'il vous permet de surveiller différents aspects de votre système, tels que l'utilisation du processeur, la mémoire, le disque occupé, l'utilisation du réseau, etc., dans une vue unique et concise. Sans nmon , vous devez utiliser des outils de surveillance spécialisés comme top pour les processus, iostat pour les disques, et ifstat pour que le réseau surveille diverses ressources. Chacun d'eux présente les données différemment.

J'ai utilisé nmon pour la première fois il y a environ 10 ans en tant qu'administrateur système AIX. En utilisant nmon , j'ai pu résoudre certains problèmes difficiles à repérer, dont un qui ressemblait initialement à un goulot d'étranglement du réseau. En inspectant plusieurs ressources simultanément à l'aide de nmon , j'ai découvert qu'il s'agissait d'un problème d'application causé par l'ouverture d'un trop grand nombre de fichiers.

En plus de la surveillance interactive de votre système, vous pouvez également utiliser nmon en mode batch pour collecter et enregistrer les données de performance à des fins d'analyse. Pour plus d'informations sur nmon pour Linux, consultez la page officielle du projet.

Cet article se penche sur ce puissant outil de surveillance. Commencez par l'installer.

Installer nmon

nmon est disponible dans le référentiel par défaut de nombreuses distributions Linux. Par exemple, utilisez DNF pour l'installer sur Fedora 35 :

$ sudo dnf -y install nmon

Pour Red Hat Enterprise Linux ou CentOS, nmon est disponible dans le référentiel Extra Packages for Enterprise Linux (EPEL).

Pour installer nmon , activez d'abord EPEL :

$ sudo dnf -y install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

$ sudo dnf repolist

Ensuite, installez nmon en utilisant dnf :

$ sudo dnf -y install nmon

Maintenant que vous avez installé nmon , utilisez-le pour surveiller votre système.

Utiliser nmon de manière interactive

Une fois les applications installées, vous pouvez surveiller votre système de manière interactive en exécutant nmon . Vous êtes présenté avec un écran initial contenant des informations sur le système et un petit menu d'aide, affichant les touches sur lesquelles vous pouvez appuyer pour basculer entre différentes mesures :

$ nmon

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:04:27────┐
│                                                                 │
│------------------------------                                   │
│ _ __  _ __ ___   ___  _ __    For help type H or ...            │
│| '_ \| '_ ` _ \ / _ \| '_ \    nmon -?  - hint                  │
│| | | | | | | | | (_) | | | |   nmon -h  - full details          │
│|_| |_|_| |_| |_|\___/|_| |_|                                    │
│                               To stop nmon type q to Quit       │
│------------------------------                                   │
│                                                                 │
│Fedora release 35 (Thirty Five) VERSION="35 (Thirty Five)"       │
│Vendor=AuthenticAMD Model=AMD EPYC-Milan Processor               │
│MHz=1911.004 bogomips=3822.00     lscpu:CPU=4 Little Endian      │
│ProcessorChips=4 PhysicalCores=1        Sockets=4 Cores=1 Thrds=1│
│                 VirtualCPUs =4         MHz=0 max=0 min=0        │
│                                                                 │
│Use these keys to toggle statistics on/off:                      │
│  c = CPU         l = CPU Long-term     - = Faster screen updates│
│  C = " WideView  U = Utilisation       + = Slower screen updates│
│  m = Memory      V = Virtual memory    j = File Systems         │
│  d = Disks       n = Network           . = only busy disks/procs│
│  r = Resource    N = NFS               h = more options         │
│  k = Kernel      t = Top-processes     q = Quit                 │
│─────────────────────────────────────────────────────────────────│

Par exemple, en appuyant sur C bascule l'affichage de l'utilisation du CPU :

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:05:58─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User%  Sys% Wait%  Idle|0          |25   |50 |75   100|   │
│  1   3.6  17.2   0.0  79.2|Ussssssss>                    |   │
│  2   2.1   6.2   0.0  91.7|Usss    >                     |   │
│  3   0.0   1.1   0.0  98.9| >                            |   │
│  4   6.1  17.2   0.0   0.5|UUUssssssss>                  |   │
│---------------------------+---------------------------------+│
│Avg   3.0  10.3   0.0  86.7|Usssss>                       |   │
│---------------------------+---------------------------------+│
│──────────────────────────────────────────────────────────────│

En appuyant sur N bascule l'affichage du réseau et l'empile automatiquement sous l'affichage du CPU :

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:17:01─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User%  Sys% Wait%  Idle|0         |25    |50  |75  100|   │
│  1   2.6  10.3   0.0  87.1|Usssss     >                  |   │
│  2   0.0   2.2   0.0  97.8|s           >                 |   │
│  3   6.5  11.0   0.0  82.5|UUUsssss>                     |   │
│  4   0.0   0.5   0.0  99.5|               >              |   │
│---------------------------+---------------------------------+│
│Avg   2.4   5.9   0.0  91.6|Uss     >                     |   │
│---------------------------+---------------------------------+│
│ Network I/O ─────────────────────────────────────────────────│
│I/F Name Recv=KB/s Trans=KB/s p_in p_out in_sz out_sz Peak->..│
│      lo      0.0       0.0       0.0    0.0     0.0    0.0...│
│  enp1s0      0.0       0.0       0.5    0.0    52.0    0.0...│
│  enp7s0    218.6    5923.4    3335.5 9989.68   67.1  607.2...│
│ Network Error Counters ──────────────────────────────────────│
│I/F Name iErrors iDrop iOverrun iFrame oErrors   oDrop oOver..│
│      lo       0       0       0       0       0       0   ...│
│  enp1s0       0   34419       0       0       0       0   ...│
│  enp7s0       0   34419       0       0       0       0   ...│
│──────────────────────────────────────────────────────────────│

Continuez à appuyer sur d'autres touches pour empiler des métriques supplémentaires dans la même vue. Par exemple, utilisez D pour les E/S de disque, M pour la mémoire et T pour les meilleurs processus.

En plus d'empiler de nouveaux moniteurs, vous pouvez également appuyer sur la touche point ou point (.) pour afficher uniquement les processeurs et les disques occupés, ainsi que + et - pour augmenter ou diminuer le temps de rafraîchissement de l'écran. Utilisez H pour afficher l'aide.

Étant donné que vous pouvez activer et désactiver différents moniteurs et métriques à tout moment, nmon est un outil très flexible qui vous aide à comprendre le comportement de votre système. Il aide également à résoudre les problèmes en affichant simultanément différentes mesures, en fournissant une vue globale du système et en améliorant votre capacité à comprendre les problèmes.

Lorsque vous avez terminé, appuyez sur Q pour quitter et mettre fin à la session de surveillance.

Collecter des données sur les performances

En plus de fournir une vue globale et interactive de votre système, vous pouvez également exécuter nmon en mode batch pour collecter des données de performances à long terme de votre système pour une analyse ultérieure.

Cette fonctionnalité vous permet de comprendre comment votre système se comporte sur une plus longue période, en plus des métriques en temps réel fournies par le mode interactif. Il s'agit d'une fonctionnalité puissante qui permet la planification des capacités et la possibilité de résoudre des problèmes sporadiques difficiles à détecter en temps réel.

Pour exécuter nmon en batch, utilisez le drapeau -f lors du lancement de l'application. Ce doit être le premier paramètre fourni. Par défaut, nmon collecte des données toutes les cinq minutes pendant une journée. Vous pouvez modifier ces valeurs par défaut en spécifiant les paramètres -s pour l'intervalle de collecte et -c pour le nombre d'instantanés.

Par exemple, pour activer nmon en mode batch, collecte de données toutes les minutes pendant une heure, y compris la capture des principaux processus -t , exécutez cette commande :

$ nmon -f -s60 -c60 -t

L'invite de votre terminal revient immédiatement, car l'application s'exécute en arrière-plan lorsque vous exécutez cette commande. Vous pouvez le voir fonctionner en utilisant ps :

$ ps -ef | grep nmon
ricardo 1849 1 0 12:27 pts/0 00:00:00 nmon -f -s60 -c60 -t

En mode batch, nmon enregistre les données collectées en utilisant le format de valeurs séparées par des virgules (CSV) avec l'extension .nmon dans le répertoire courant :

$ ls -l
total 36
-rw-r--r--. 1 ricardo ricardo 36395 Feb 13 12:28 f35ks01_220213_1227.nmon

Comme il s'agit d'un fichier CSV, vous pouvez le traiter à l'aide d'autres outils de ligne de commande de manipulation de texte Linux ou l'ouvrir à l'aide d'un tableur pour une analyse plus approfondie.

$ head f35ks01_220213_1227.nmon
AAA,progname,nmon
AAA,command,nmon -f -s60 -c60 -t
AAA,version,16k
AAA,disks_per_line,150
AAA,max_disks,256,set by -d option
AAA,disks,10,
AAA,host,f35ks01
AAA,user,ricardo
AAA,OS,Linux,5.16.8-200.fc35.x86_64,#1 SMP PREEMPT Tue Feb 8 20:58:59 UTC 2022,x86_64
AAA,runname,f35ks01

En plus de ces méthodes, le nmon L'équipe de développement fournit un script pour convertir ces données en graphiques que vous pouvez visualiser à l'aide de votre navigateur Web. Je vais regarder comment faire ensuite.

[ Ce ne serait pas Linux s'il n'y avait pas une douzaine de façons d'effectuer n'importe quelle tâche. Pour plus d'informations sur les différentes manières d'installer des logiciels, téléchargez ce guide d'installation d'applications sous Linux. ]

Générer des graphiques

CSV est un format flexible qui vous permet d'exporter, d'analyser et de visualiser ces données à l'aide de différentes applications telles qu'un logiciel de traitement de feuille de calcul. Le nmon les développeurs ont créé nmonchart pour le rendre un peu plus facile. Ce script shell convertit ces données en HTML à l'aide de Google Charts JavaScript pour visualiser et interagir avec les données dans un environnement graphique.

Pour utiliser nmoncart , téléchargez-le depuis le nmon page d'accueil :

$ curl -LO http://sourceforge.net/projects/nmon/files/nmonchart40.tar

Ensuite, extrayez le contenu du package à l'aide de tar :

$ mkdir nmonchart

$ tar xvf nmonchart40.tar -C nmonchart

nmonchart utilise le shell Korn (ksh), donc pour créer des graphiques, installez d'abord ksh dans votre système en utilisant dnf :

$ sudo dnf install -y ksh

Ensuite, convertissez le .nmon fichier créé lorsque vous avez exécuté nmon en mode batch avec cette commande :

$ ./nmonchart/nmonchart f35ks01_220213_1227.nmon 

Le script crée un fichier HTML avec le même nom que la source .nmon dossier. Facultativement, vous pouvez fournir le nom du fichier de destination comme deuxième paramètre à nmonchart . Voici un exemple :

$ ls -lg
total 4164
-rw-r--r--. 1 ricardo 113822 Feb 14 18:52 f35ks01_220213_1227.html
-rw-r--r--. 1 ricardo 93436 Feb 13 13:26 f35ks01_220213_1227.nmon
drwx------. 2 ricardo 4096 Aug 28 2020 nmonchart

Vos cartes système sont maintenant prêtes. Votre prochaine étape consiste à les afficher.

[ Obtenez l'aide-mémoire pour les scripts shell Bash. ]

Visualiser les graphiques de performances

nmonchart crée un seul fichier HTML pour chaque .nmon fichier source que vous fournissez avec les bibliothèques JavaScript graphiques requises intégrées. Si vous avez le fichier HTML sur votre ordinateur local, affichez-le directement dans votre navigateur Web.

Vous pouvez également servir ces fichiers à l'aide d'un serveur Web. L'une de mes façons préférées de le faire est d'utiliser Nginx dans un conteneur Podman, comme je l'ai suggéré dans 20 commandes Linux en une ligne à ajouter à votre boîte à outils.

Tout d'abord, créez un répertoire et déplacez-y les fichiers HTML :

$ mkdir html

$ mv f35ks01_220213_1227.html html/

Utilisez ensuite Podman pour diffuser du contenu à partir du html répertoire utilisant Nginx sur le port 8080 :

$ podman run --rm -v ./html:/usr/share/nginx/html:ro,Z -p 8080:80 -d nginx

Si nécessaire, ouvrez le port 8080 sur le pare-feu de votre serveur pour autoriser le trafic :

$ sudo firewall-cmd --add-port 8080/tcp 

Pointez ensuite votre navigateur vers votre URL http://<YOUR_SERVER_IP_ADDR>:8080/f35ks01_220213_1227.html pour afficher les graphiques :

Cliquez sur l'un des boutons en haut de l'écran pour afficher le graphique correspondant. Les graphiques sont interactifs. Vous pouvez effectuer un zoom avant et arrière pour afficher des données plus précises ou passer votre souris sur le graphique pour afficher des données détaillées pour une période donnée.

Récapitulez

nmon est une application de surveillance du système flexible et puissante qui vous aide à mieux comprendre votre système et à le dépanner en cas de problème. Ses capacités combinées de surveillance et de consolidation des données en temps réel provenant de différentes ressources système avec la collecte et l'analyse de données de performances à long terme en font un outil fantastique à avoir dans votre ceinture d'administrateur système.


Linux
  1. Utilisation de nfsstat et nfsiostat pour résoudre les problèmes de performances NFS sous Linux

  2. Comment surveiller les performances du système Linux avec Sysstat

  3. Surveiller le serveur Linux avec Prometheus et Grafana

  4. Utilisation d'iostat pour surveiller les performances du système sous Linux (exemples inclus)

  5. Commandes de base pour résoudre les problèmes de performances sous Linux

Gérer et surveiller les modules du noyau Linux avec Kmon

Surveiller l'utilisation des ressources du système Linux avec SysMonTask

Comment sauvegarder et restaurer le système Linux avec Timeshift

Sauvegarder et restaurer les paramètres du système de bureau Linux avec Dconf

Comment installer et utiliser la commande SAR (pour surveiller les performances du système) sous Linux

Lisez et analysez vos journaux système Linux avec Journalctl