Les outils de crise indispensables pour Linux

diagnostiquer rapidement les problèmes

fred

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/