Les outils de crise indispensables pour Linux
En tant qu’administrateur système Linux, il est crucial d’avoir les bons outils à disposition pour diagnostiquer rapidement les problèmes de performance en cas de crise. Voici une liste des catégories d’outils essentiels à installer par défaut sur vos serveurs Linux, ainsi que quelques exemples d’utilisation.
Pour installer les outils de crise Linux mentionnés dans l’article, vous pouvez utiliser la commande apt suivante :
sudo apt install procps util-linux sysstat iproute2 numactl tcpdump linux-tools-common linux-tools-$(uname -r) bpfcc-tools bpftrace trace-cmd nicstat ethtool tiptop cpuid msr-tools
Cette commande installera les packages suivants :
- procps : fournit ps, vmstat, uptime, top
- util-linux : fournit dmesg, lsblk, lscpu
- sysstat : fournit iostat, mpstat, pidstat, sar
- iproute2 : fournit ip, ss, nstat, tc
- numactl : fournit numastat
- tcpdump : pour l’analyse réseau
- linux-tools-common et linux-tools-$(uname -r) : fournit perf et turbostat
- bpfcc-tools : outils eBPF
- bpftrace : outil de scripting eBPF
- trace-cmd : interface en ligne de commande pour ftrace
- nicstat : statistiques réseau
- ethtool : informations sur les interfaces réseau
- tiptop : monitoring des performances en temps réel
- cpuid : informations détaillées sur le CPU
- msr-tools : manipulation des registres CPU
1. Outils de surveillance des processus et ressources système
Ces outils fournissent une vue d’ensemble de l’utilisation des ressources système :
- top/htop : Affiche les processus en temps réel
- ps : Liste les processus en cours
- vmstat : Statistiques sur la mémoire virtuelle
- free : Affiche l’utilisation de la mémoire
Exemple d’utilisation :
# Surveiller les 5 processus les plus gourmands en CPU toutes les 2 secondes
watch -n 2 'ps aux --sort=-%cpu | head -n 6'
2. Outils de surveillance du réseau
Pour analyser le trafic et les connexions réseau :
- ss : Remplace netstat, affiche les statistiques des sockets
- ip : Configure les interfaces et le routage
- tcpdump : Capture et analyse le trafic réseau
Exemple de script pour surveiller les connexions :
#!/bin/bash
while true; do
echo "Connexions actives :"
ss -tunapl | grep ESTAB
sleep 5
done
3. Outils de surveillance des disques et E/S
Pour identifier les problèmes de stockage :
- iostat : Statistiques sur les E/S disque
- iotop : Top pour les E/S disque
- df : Affiche l’espace disque utilisé/disponible
Exemple de commande :
# Afficher les 5 processus avec le plus d'E/S toutes les 3 secondes
iotop -o -b -n 5 -d 3
4. Outils de traçage et profilage avancés
Pour une analyse en profondeur :
- perf : Profileur de performances Linux
- strace : Trace les appels système
- bpftrace : Outil de traçage eBPF
Exemple de script bpftrace pour tracer les appels système open() :
#!/usr/bin/bpftrace
tracepoint:syscalls:sys_enter_open
{
printf("%s (%d) opened %s\n", comm, pid, str(args->filename));
}
5. Outils spécifiques au matériel
Selon votre configuration :
- intel-gpu-tools : Pour les GPU Intel
- nvidia-smi : Pour les GPU NVIDIA
Exemple d’utilisation de nvidia-smi :
# Afficher les infos GPU toutes les 5 secondes
watch -n 5 nvidia-smi
En installant ces outils par défaut sur vos serveurs Linux, vous serez prêt à diagnostiquer rapidement les problèmes de performance en cas de crise. N’oubliez pas de vous familiariser avec leur utilisation en conditions normales pour être efficace lorsque le besoin s’en fera sentir.
Il est également recommandé de créer des scripts personnalisés combinant plusieurs de ces outils pour obtenir une vue d’ensemble rapide de l’état de votre système. Par exemple :
#!/bin/bash
echo "=== Utilisation CPU/Mémoire ==="
top -bn1 | head -n 5
echo "=== Espace disque ==="
df -h
echo "=== Connexions réseau actives ==="
ss -tunapl | grep ESTAB
echo "=== Top 5 processus I/O ==="
iotop -o -b -n 1 | head -n 6
En exécutant régulièrement ce type de script, vous pouvez rapidement identifier les anomalies et commencer le diagnostic en cas de problème.
Les outils essentiels pour les serveurs Linux avec GPU
Lorsqu’on administre un serveur Linux équipé de GPU, il est crucial d’avoir les bons outils pour surveiller et optimiser les performances. Voici une liste des outils indispensables, ainsi que quelques exemples de scripts utiles :
1. nvidia-smi
L’outil nvidia-smi (NVIDIA System Management Interface) est incontournable pour surveiller les GPU NVIDIA. Il fournit des informations détaillées sur l’utilisation, la température, la mémoire, etc.
Exemple de script pour surveiller l’utilisation des GPU :
#!/bin/bash
while true; do
echo "Utilisation des GPU :"
nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits
sleep 5
done
2. gpustat
gpustat est un outil en ligne de commande qui offre une vue d’ensemble rapide de l’état des GPU.
Exemple d’utilisation :
gpustat -cp --watch
3. glxgears / glmark2
Ces outils permettent de tester les performances 3D basiques des GPU.
4. CUDA Toolkit
Indispensable pour le développement et l’exécution d’applications CUDA.
5. TensorFlow / PyTorch
Frameworks populaires pour le machine learning utilisant les GPU.
6. Ganglia
Un système de surveillance distribué qui peut être configuré pour suivre les métriques GPU.
Exemple de script pour collecter des métriques GPU avec Ganglia :
#!/usr/bin/env python
import subprocess
import sys
def get_gpu_utilization():
try:
output = subprocess.check_output(['nvidia-smi', '--query-gpu=utilization.gpu', '--format=csv,noheader,nounits'])
return float(output.strip())
except:
return 0
if __name__ == '__main__':
utilization = get_gpu_utilization()
print('gpu_utilization', utilization)
sys.exit(0)
7. Prometheus + Node Exporter + NVIDIA GPU Exporter
Une combinaison puissante pour la surveillance et l’alerte.
8. htop / nvtop
nvtop est similaire à htop mais spécialisé pour les GPU NVIDIA.
9. Docker + NVIDIA Container Toolkit
Pour exécuter des conteneurs avec accès aux GPU.
10. Script de surveillance personnalisé
Voici un exemple de script bash plus complet pour surveiller l’état des GPU :
#!/bin/bash
LOG_FILE="/var/log/gpu_monitoring.log"
monitor_gpus() {
echo "=== Surveillance GPU $(date) ===" >> $LOG_FILE
nvidia-smi --query-gpu=index,name,temperature.gpu,utilization.gpu,memory.used,memory.total --format=csv,noheader >> $LOG_FILE
# Vérification de la température
TEMP=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits | awk '{if(max<$1) max=$1} END {print max}')
if [ $TEMP -gt 80 ]; then
echo "ALERTE : Température GPU élevée détectée : $TEMP°C" | mail -s "Alerte GPU" admin@example.com
fi
}
# Exécution toutes les 5 minutes
while true; do
monitor_gpus
sleep 300
done
En utilisant ces outils et scripts, vous serez en mesure de surveiller efficacement vos serveurs, d’optimiser leurs performances et de réagir rapidement en cas de problème. N’oubliez pas d’adapter ces scripts à vos besoins spécifiques et à votre environnement.
Citations:
[1] https://www.cyberciti.biz/open-source/command-line-hacks/linux-gpu-monitoring-and-diagnostic-commands/
[2] https://www.tecmint.com/linux-server-health-monitoring-script/
[3] https://portal.databasemart.com/kb/a2222/top-3-linux-gpu-monitoring-command-line-tools.aspx
[4] https://docs.bmc.com/docs/PATROL4Scripting/21/using-sample-scripts-for-monitoring-linux-971636769.html
[5] https://docs.vultr.com/10-tools-to-monitor-linux-server-resource-usage-and-statistics
[6] https://github.com/Freemius/server-monitoring/blob/master/server-monitoring.sh
[7] https://xitoring.com/kb/top-linux-gpu-monitoring-and-diagnostic-tools/
[8] https://github.com/jgmdev/watchsys
[9] https://cloud.google.com/compute/docs/virtual-workstation/linux-gpu
[10] https://www.activexperts.com/support/network-monitor/online/linux/
[11] https://www.reddit.com/r/linuxadmin/comments/1bprr4f/os_recommendations_for_gpu_server/
[12] https://documentation.solarwinds.com/en/success_center/sam/content/sam-linux-unix-script-monitor-sw3260.htm
[13] https://kb.leaseweb.com/products/dedicated-server/how-to-use-a-gpu-server
[14] https://bash.cyberciti.biz/monitoring/monitor-unix-linux-network-services/
[15] https://introserv.com/blog/top-10-tools-for-linux-server-administrators/
[16] https://www.virtualizationhowto.com/2022/05/create-a-linux-service-monitoring-script/
Les outils de crise indispensables pour Linux
diagnostiquer rapidement les problèmes