Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| loadaverage [Le 16/01/2009, 03:41] – 213.95.41.13 | loadaverage [Le 03/12/2020, 15:41] (Version actuelle) – [Que représentent les "load average" ?] 81.80.208.70 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | |||
| + | ====== Loadaverage : La charge d'une machine sous Ubuntu... ====== | ||
| + | |||
| + | <note warning> | ||
| + | |||
| + | ===== Introduction ===== | ||
| + | |||
| + | Une question fréquente que l'on se pose lorsqu' | ||
| + | * l' | ||
| + | * mémoire vive disponible | ||
| + | * espace disque disponible | ||
| + | * mémoire swap utilisée | ||
| + | * et bien d' | ||
| + | |||
| + | Personnellement, | ||
| + | |||
| + | == L' | ||
| + | |||
| + | Le pourcentage d' | ||
| + | |||
| + | < | ||
| + | Cpu(s): | ||
| + | </ | ||
| + | |||
| + | Est-ce que cela signifie pour autant que votre serveur est chargé à 0,3% ??? | ||
| + | |||
| + | Le taux d' | ||
| + | |||
| + | Pour moi, c'est une bonne indication pour déterminer si un processus consomme du CPU de manière inattendue mais pas assez pour évaluer la charge d'une machine. | ||
| + | |||
| + | == La mémoire vive disponible == | ||
| + | |||
| + | La quantité de mémoire vive disponible peut également donner une information. Voyons un petit '' | ||
| + | |||
| + | < | ||
| + | Mem: | ||
| + | </ | ||
| + | |||
| + | Cette information est-elle significative ? Est-ce que mon serveur est chargé à 99% ? | ||
| + | |||
| + | Le noyau Linux utilise un système de libération des zones mémoires dit **paresseuse**. C' | ||
| + | |||
| + | == Espace disque utilisé == | ||
| + | |||
| + | L' | ||
| + | |||
| + | < | ||
| + | Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur | ||
| + | / | ||
| + | tmpfs | ||
| + | 192.168.254.40:/ | ||
| + | 661G 368G 259G 59% / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | == Mémoire swap utilisée == | ||
| + | |||
| + | Reprenons notre outil '' | ||
| + | |||
| + | < | ||
| + | Swap: 4104596k total, | ||
| + | </ | ||
| + | |||
| + | Encore une fois, ça ne nous donne aucune information sur la charge du serveur. Cette donnée nous indique néanmoins quelque chose d' | ||
| + | |||
| + | Pour moi, la mémoire swap utilisée m' | ||
| + | |||
| + | ===== Les "load average" | ||
| + | |||
| + | Après avoir passé en revue les quelques indicateurs de l' | ||
| + | |||
| + | Les **load average** existent depuis longtemps sur les systèmes Unix et Linux a hérité de cette notion. Vous trouverez cette information de plusieurs manières (locales ou distantes) et est généralement représentée comme 3 chiffres à 2 décimales. | ||
| + | |||
| + | < | ||
| + | load average: 0.26, 0.28, 0.35 | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | load average: 0.26, 0.28, 0.35, 0.46 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== Que représentent les "load average" | ||
| + | |||
| + | Les **load average** représentent le nombre moyen de processus dans la file d' | ||
| + | |||
| + | Donc, en clair, si vous avez un '' | ||
| + | |||
| + | FIXME: Dans le kernel linux, le load-average contient également les processus en attente d'I/O, ce n'est pas uniquement la charge processeur ( | ||
| + | http:// | ||
| + | ) | ||
| + | ==== On peut voir ça comme une usine... ==== | ||
| + | |||
| + | L' | ||
| + | La matière première est en entrée de cette usine (les processus en attente). | ||
| + | Les produits finis sont en sortie de l' | ||
| + | |||
| + | Si vous avez beaucoup de matière première en attente, c'est que l' | ||
| + | Si vous avez peu ou pas de matière première en attente, c'est que l' | ||
| + | |||
| + | En clair, si votre serveur est bien dimensionné ; vous aurez un load average relativement faible. | ||
| + | |||
| + | |||
| + | ==== En bref... ==== | ||
| + | |||
| + | Les **load average** permettent d' | ||
| + | |||
| + | Pour moi (et pour beaucoup d' | ||
| + | |||
| + | ===== Qu' | ||
| + | |||
| + | Maintenant que je vous ai vanté les mérites des load averages, vous allez vous empressez de faire un '' | ||
| + | |||
| + | La bonne valeur de load average n' | ||
| + | |||
| + | Dans mon parc, j'ai un serveur de mail qui ne dépasse jamais les '' | ||
| + | |||
| + | **En fait, tout est relatif !** | ||
| + | |||
| + | Que les tâches soient un peu plus lentes sur le serveur de centralisation des sauvegarde m' | ||
| + | |||
| + | En règle générale (d' | ||
| + | |||
| + | |||
| + | ===== Comment obtenir les load average ? ===== | ||
| + | |||
| + | Il y a deux manières essentielles pour obtenir les load averages ; soit localement sur la machine ; soit de manière distante à des fins de supervisions. | ||
| + | |||
| + | |||
| + | ==== Localement ==== | ||
| + | |||
| + | Pour obtenir les informations de load average localement ; vous pouvez utiliser les programmes suivants : | ||
| + | |||
| + | * '' | ||
| + | Pour se faire il suffit d' | ||
| + | |||
| + | --- // | ||
| + | ensuite pour unity exécuter en ligne de commande : | ||
| + | < | ||
| + | gsettings set com.canonical.Unity.Panel systray-whitelist " | ||
| + | </ | ||
| + | |||
| + | |||
| + | * '' | ||
| + | |||
| + | < | ||
| + | top - 13:19:57 up 19 days, 1:15, 1 user, load average: 0.02, 0.03, 0.00 | ||
| + | Tasks: | ||
| + | Cpu(s): | ||
| + | Mem: | ||
| + | Swap: 4104596k total, | ||
| + | |||
| + | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND | ||
| + | 32750 root 15 | ||
| + | 1 root 00 | ||
| + | 2 root RT | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | * '' | ||
| + | |||
| + | < | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * '' | ||
| + | < | ||
| + | 0.05 0.04 0.00 1/67 32139 | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | Sinon il est possible d' | ||
| + | < | ||
| + | sudo apt-get install indicator-multiload | ||
| + | </ | ||
| + | |||
| + | puis relancer la session (ou dans une console lancer la commande indicator-multiload &) | ||
| + | Ce programme permet de visualiser directement différents paramètres issus de l' | ||
| + | |||
| + | Pour le paramétrage cliquer droit sur l’icône et sélectionner préférences. Dans l' | ||
| + | ==== A distance ==== | ||
| + | |||
| + | Pour obtenir les load average à distance (ce qui est pratique pour la supervision ou plus simplement pour éviter de devoir ouvrir de nombreuses consoles SSH), nous allons utiliser la RPC '' | ||
| + | |||
| + | === Installation sur les serveurs à superviser === | ||
| + | <note important> | ||
| + | En effet, l' | ||
| + | Pour installer '' | ||
| + | * Activez les [[: | ||
| + | * Installer le paquet '' | ||
| + | * Créer un petit script pour qu'il démarre tout seul au démarrage du serveur ('' | ||
| + | < | ||
| + | #!/bin/sh | ||
| + | |||
| + | / | ||
| + | </ | ||
| + | * Activez ce script comme exécutable ('' | ||
| + | * Liez le script avec les niveaux de démarrage : | ||
| + | < | ||
| + | update-rc.d rstatd defaults | ||
| + | </ | ||
| + | * Lancez le démon '' | ||
| + | |||
| + | Voilà, la machine est prête à recevoir les requêtes distantes. | ||
| + | |||
| + | === Installation et usage du client === | ||
| + | Sur la machine devant interroger les serveurs : | ||
| + | * Activez les [[: | ||
| + | * Installer le paquet '' | ||
| + | |||
| + | Vous avez maintenant deux commandes supplémentaires vous permettant d' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | En introduisant uniquement '' | ||
| + | |||
| + | < | ||
| + | mail 13:31 up 43 days, 56 mins, load 0.11 0.06 0.01 | ||
| + | ns 13:31 up 43 days, 56 mins, load 0.11 0.06 0.01 | ||
| + | nodeprod1 | ||
| + | backup | ||
| + | nodeprod2 | ||
| + | nodearch2 | ||
| + | nodearch1 | ||
| + | clusterprod | ||
| + | </ | ||
| + | |||
| + | En faisant suivre '' | ||
| + | |||
| + | Concernant la commande '' | ||
| + | |||
| + | < | ||
| + | System Information for: mail | ||
| + | uptime: | ||
| + | cpu usage (jiffies): user 8937954 | ||
| + | page in: 0 page out: 0 swap in: 0 swap out: 0 | ||
| + | intr: -1 | ||
| + | disks: 0 0 0 0 | ||
| + | ethernet: | ||
| + | tx: 1583182307 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Couplage avec Nagios ===== | ||
| + | |||
| + | * Pour la surveillance des load averages avec [[: | ||
| + | < | ||
| + | #!/bin/sh | ||
| + | |||
| + | # Usage : check_rup $HOSTNAME $WARNING $CRITICAL | ||
| + | # (remarque : les valeurs limites s' | ||
| + | # | ||
| + | # Exemple : check_rup 192.168.254.30 100 320 | ||
| + | # (warning vaut 1.00, critical vaut 3.20) | ||
| + | |||
| + | STATE_OK=0 | ||
| + | STATE_WARNING=1 | ||
| + | STATE_CRITICAL=2 | ||
| + | STATE_UNKNOWN=3 | ||
| + | |||
| + | HOSTNAME=$1 | ||
| + | WARNING=$2 | ||
| + | CRITICAL=$3 | ||
| + | |||
| + | VALUE=`rup $1 | awk ' | ||
| + | REAL_VALUE=`echo $VALUE | awk ' | ||
| + | |||
| + | if test -z $VALUE | ||
| + | then | ||
| + | echo "Error during execute of ' | ||
| + | exit $STATE_UNKNOWN | ||
| + | fi | ||
| + | |||
| + | if test $VALUE -ge $CRITICAL | ||
| + | then | ||
| + | echo "Load average 1 minute is CRITICAL ($REAL_VALUE)" | ||
| + | exit $STATE_CRITICAL | ||
| + | fi | ||
| + | |||
| + | if test $VALUE -ge $WARNING | ||
| + | then | ||
| + | echo "Load average 1 minute is WARNING ($REAL_VALUE)" | ||
| + | exit $STATE_WARNING | ||
| + | fi | ||
| + | |||
| + | echo "Load average 1 minute is OK ($REAL_VALUE)" | ||
| + | exit $STATE_OK | ||
| + | </ | ||
| + | * et ces informations comme " | ||
| + | < | ||
| + | define command{ | ||
| + | command_name | ||
| + | command_line | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | // | ||
