« Surveillance de disques » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 101 : Ligne 101 :


Il suffit ensuite d'utiliser la commande sar pour avoir des statistiques.
Il suffit ensuite d'utiliser la commande sar pour avoir des statistiques.
= Surveiller un NFS =
[https://www.redhat.com/sysadmin/using-nfsstat-nfsiostat Une super doc RedHat]
NFS permet de monter des disques réseau d'une façon simple et efficace; cependant, comme il dépend du réseau, le moindre problème sur celui-ci peut affecter les performances. Les deux outils les plus importants pour le surveiller sont nfsstat et nfsiostat.
Ils font partie du paquet nfs-utils.
== nfsstat ==
Cette commande affiche des informations statistiques sur le NFS et les interfaces RPC ([https://en.wikipedia.org/wiki/Remote_procedure_call Remote Procedure Call], un protocole permettant à un programme d'exécuter une sous-routine sur un autre ordinateur, de façon transparente).
=== Côté Serveur ===
La commande est la suivante :
nfsstat -s
Et l'affichage du type :
<source>
Server rpc stats:
calls      badcalls  badfmt    badauth    badclnt
133707    0          0          0          0     
Server nfs v4:
null            compound       
3        0%    133704  99%   
Server nfs v4 operations:
op0-unused      op1-unused      op2-future      access          close           
0        0%    0        0%    0        0%    85        0%    43        0%   
commit          create          delegpurge      delegreturn      getattr         
271      0%    0        0%    0        0%    16        0%    101862  20%   
getfh            link            lock            lockt            locku           
38        0%    0        0%    0        0%    0        0%    0        0%   
lookup          lookup_root      nverify          open            openattr       
34        0%    0        0%    0        0%    47        0%    0        0%   
open_conf        open_dgrd        putfh            putpubfh        putrootfh       
0        0%    0        0%    132926  26%    0        0%    6        0%   
read            readdir          readlink        remove          rename         
30706    6%    13        0%    0        0%    25        0%    1        0%   
renew            restorefh        savefh          secinfo          setattr         
0        0%    0        0%    1        0%    0        0%    62        0%   
setcltid        setcltidconf    verify          write            rellockowner   
0        0%    0        0%    0        0%    95012    19%    0        0%   
bc_ctl          bind_conn        exchange_id      create_ses      destroy_ses     
0        0%    0        0%    4        0%    3        0%    1        0%   
free_stateid    getdirdeleg      getdevinfo      getdevlist      layoutcommit   
0        0%    0        0%    0        0%    0        0%    0        0%   
layoutget        layoutreturn    secinfononam    sequence        set_ssv         
0        0%    0        0%    3        0%    133697  27%    0        0%   
test_stateid    want_deleg      destroy_clid    reclaim_comp    allocate       
0        0%    0        0%    1        0%    3        0%    0        0%   
copy            copy_notify      deallocate      ioadvise        layouterror     
0        0%    0        0%    0        0%    0        0%    0        0%   
layoutstats      offloadcancel    offloadstatus    readplus        seek           
0        0%    0        0%    0        0%    0        0%    0        0%   
write_same     
0        0% 
</source>
(Mon exemple vient d'un vieux serveur et la sortie peut changer un peu sur un OS qui ne date pas de cro-magnon).
C'est touffu. La mention la plus importante à vérifier est badcalls (tout en haut, dans les stats RPC). Elle représente le nombre total d'appels rejetés par la couche RPC. Si elle est supérieure à 0, il peut y avoir des problèmes ou de la latence dans le réseau. Il est important que serveur et client soient dans le même sous-réseau pour avoir les meilleures performances.
=== Côté client ===
La commande est quasi la même:
nfsstat -c
Et la sortie ressemble à ça :
<source>
Client rpc stats:
calls      retrans    authrefrsh
126781    0          126797 
Client nfs v4:
null        read        write        commit      open        open_conf   
0        0% 30720    24% 95001    74% 271      0% 30        0% 0        0%
open_noat    open_dgrd    close        setattr      fsinfo      renew       
17        0% 0        0% 43        0% 62        0% 6        0% 0        0%
setclntid    confirm      lock        lockt        locku        access     
0        0% 0        0% 0        0% 0        0% 0        0% 64        0%
getattr      lookup      lookup_root  remove      rename      link       
234      0% 32        0% 2        0% 25        0% 1        0% 0        0%
symlink      create      pathconf    statfs      readlink    readdir     
0        0% 0        0% 4        0% 125      0% 0        0% 12        0%
server_caps  delegreturn  getacl      setacl      fs_locations rel_lkowner 
10        0% 16        0% 14        0% 0        0% 0        0% 0        0%
secinfo      exchange_id  create_ses  destroy_ses  sequence    get_lease_t 
0        0% 0        0% 2        0% 2        0% 1        0% 72        0%
reclaim_comp layoutget    getdevinfo  layoutcommit layoutreturn getdevlist 
0        0% 2        0% 0        0% 0        0% 0        0% 0        0%
(null)     
2        0%
</source>
(Ici aussi, la sortie pourrait changer un peu sur un OS plus récent)
Ici, la mention la plus importante est retrans, qui trahit les retransmissions. Si des retransmissions excessives sont constatées, il est peut être utile de modifier les valeurs de rsize et wsize dans la commande mount du client.
=== Voir les paquets transférés / perdus ===
Sur le client comme sur le serveur, la commande
nfsstat -o net
...permet de voir les stats en termes de paquets.
== nfsiostat ==
Cette commande est similaire à iostat, mais elle est utilisée pour surveiller les points de montage nfs. Elle utilise dans /proc/self/mountstats comme entrée et fournit des informations sur les entrées / sorties des partages NFS du système.
Elle s'utilise sur le client pour checker ses performances lors de la communication avec le serveur.
Le faire tourner sans argument ressemble à : 
<source>
  op/s rpc bklog
  11.88   0.00
read:            ops/s   kB/s   kB/op retrans avg RTT (ms) avg exe (ms)
  2.918 2988.853 1024.305      0 (0.0%) 18.046 21.518
write:          ops/s   kB/s   kB/op retrans avg RTT (ms) avg exe (ms)
  8.868 8170.599 921.400      0 (0.0%)   4.008 178.702
</source>
Points importants :
* retrans : Nombre de retransmissions.
* avg RTT (ms) : Temps entre le moment où le kernel du client envoie la requête RPC et celui où il reçoit une réponse.
* avg exe (ms) : Durée entre le moment où le client fait une requête RPC et le moment où elle est complétée. Inclue le RTT.
Un retrans ainsi qu'un RTT élevés trahissent de la latence réseau; tout comme la latence affecte les IO. Le client sera alors lent.

Version du 16 novembre 2021 à 16:56

Linux

iostat

https://www.linuxtechi.com/monitor-linux-systems-performance-iostat-command/

On commence par installer le paquet sysstat si cela est nécessaire:

apt install sysstat

Ensuite, on dispose de la commande iostat, qui donne des informations sur les IO sous tous les angles : CPU, disque. La commande est très complète et permet en général de savoir tout ce dont l'on a besoin. Dans son fonctionnement, iostat va lire les fichiers système:

  • /proc/diskstats for disk stats
  • /proc/stat for system stats
  • /sys for block device stats
  • /proc/devices for persistent device names
  • /proc/self/mountstats for all the network filesystems
  • /proc/uptime for information regarding system uptime

Usage

L'usage par défaut:

<source lang="bash"> [justine@Argonaut ~]$ iostat Linux 5.5.8-1-MANJARO (Argonaut) 24/03/2020 _x86_64_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

          9,00    0,00    3,80    0,15    0,00   87,05

Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd loop0 0,03 0,47 0,00 0,00 2135 0 0 loop1 0,02 0,24 0,00 0,00 1094 0 0 loop2 0,00 0,00 0,00 0,00 4 0 0 sda 0,11 2,79 0,01 0,00 12690 32 0 sdb 20,18 362,11 254,93 2186,65 1647836 1160089 9950676 scd0 0,00 0,00 0,00 0,00 2 0 0 </source>

Les valeurs en dessous sont assez explicites.

Il existe de nombreuses, très nombreuses options !

  • iostat -c : Seulement infos CPU
  • iostat -d : Seulement infos sur les Devices
  • iostat -x : Infos détaillées
  • iostat -xd : Infos détaillées et séparées par devices
  • iostat -p sda : I/O seulement pour sda
  • iostat -N : Rapport LVM
  • iostat -z : Rapport seulement sur les devices actifs.
  • iostat -t : Pour avoir un timestamp
  • iostat -j : On peut donner un blkid juste après pour voir seulement ce device là
  • nfsiostat : Variante pour les systèmes nfs

Temporalité

La commande iostat est intéressante pour faire du troubleshooting, mais il vaut mieux l'utiliser "en continu"; si je ne la lance qu'une fois, je peux tomber en plein dans un pic ou dans un creux. Le plus intéressant est ce type d'usage:

<source lang="bash"> [justine@Argonaut ~]$ iostat 2 5 Linux 5.5.8-1-MANJARO (Argonaut) 24/03/2020 _x86_64_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

          8,89    0,00    3,89    0,14    0,00   87,08

Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd loop0 0,02 0,41 0,00 0,00 2135 0 0 loop1 0,02 0,21 0,00 0,00 1094 0 0 loop2 0,00 0,00 0,00 0,00 4 0 0 sda 0,10 2,41 0,01 0,00 12691 32 0 sdb 18,05 313,86 239,16 1904,36 1649982 1257277 10011192 scd0 0,00 0,00 0,00 0,00 2 0 0


avg-cpu: %user %nice %system %iowait %steal %idle

          8,10    0,00    4,61    0,06    0,00   87,22

Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd loop0 0,00 0,00 0,00 0,00 0 0 0 loop1 0,00 0,00 0,00 0,00 0 0 0 loop2 0,00 0,00 0,00 0,00 0 0 0 sda 0,00 0,00 0,00 0,00 0 0 0 sdb 0,00 0,00 0,00 0,00 0 0 0 scd0 0,00 0,00 0,00 0,00 0 0 0 </source>

Ici, je lance deux rapports à 5 secondes d'intervalle. Si je ne passe qu'un seul chiffre, ce sera le temps d'intervalle entre deux rapports. Par exemple un:

iostat 5

...me donnera un rapport toutes les 5 secondes.

sar

Sar, aussi comprise dans sysstats, est une commande permettant d'afficher le contenu du systat. Il faut d'abord activer la collecte des données avec:

systemctl start sysstat

Il suffit ensuite d'utiliser la commande sar pour avoir des statistiques.

Surveiller un NFS

Une super doc RedHat

NFS permet de monter des disques réseau d'une façon simple et efficace; cependant, comme il dépend du réseau, le moindre problème sur celui-ci peut affecter les performances. Les deux outils les plus importants pour le surveiller sont nfsstat et nfsiostat.

Ils font partie du paquet nfs-utils.

nfsstat

Cette commande affiche des informations statistiques sur le NFS et les interfaces RPC (Remote Procedure Call, un protocole permettant à un programme d'exécuter une sous-routine sur un autre ordinateur, de façon transparente).

Côté Serveur

La commande est la suivante :

nfsstat -s

Et l'affichage du type : <source> Server rpc stats: calls badcalls badfmt badauth badclnt 133707 0 0 0 0

Server nfs v4: null compound 3 0% 133704 99%

Server nfs v4 operations: op0-unused op1-unused op2-future access close 0 0% 0 0% 0 0% 85 0% 43 0% commit create delegpurge delegreturn getattr 271 0% 0 0% 0 0% 16 0% 101862 20% getfh link lock lockt locku 38 0% 0 0% 0 0% 0 0% 0 0% lookup lookup_root nverify open openattr 34 0% 0 0% 0 0% 47 0% 0 0% open_conf open_dgrd putfh putpubfh putrootfh 0 0% 0 0% 132926 26% 0 0% 6 0% read readdir readlink remove rename 30706 6% 13 0% 0 0% 25 0% 1 0% renew restorefh savefh secinfo setattr 0 0% 0 0% 1 0% 0 0% 62 0% setcltid setcltidconf verify write rellockowner 0 0% 0 0% 0 0% 95012 19% 0 0% bc_ctl bind_conn exchange_id create_ses destroy_ses 0 0% 0 0% 4 0% 3 0% 1 0% free_stateid getdirdeleg getdevinfo getdevlist layoutcommit 0 0% 0 0% 0 0% 0 0% 0 0% layoutget layoutreturn secinfononam sequence set_ssv 0 0% 0 0% 3 0% 133697 27% 0 0% test_stateid want_deleg destroy_clid reclaim_comp allocate 0 0% 0 0% 1 0% 3 0% 0 0% copy copy_notify deallocate ioadvise layouterror 0 0% 0 0% 0 0% 0 0% 0 0% layoutstats offloadcancel offloadstatus readplus seek 0 0% 0 0% 0 0% 0 0% 0 0% write_same 0 0% </source> (Mon exemple vient d'un vieux serveur et la sortie peut changer un peu sur un OS qui ne date pas de cro-magnon).

C'est touffu. La mention la plus importante à vérifier est badcalls (tout en haut, dans les stats RPC). Elle représente le nombre total d'appels rejetés par la couche RPC. Si elle est supérieure à 0, il peut y avoir des problèmes ou de la latence dans le réseau. Il est important que serveur et client soient dans le même sous-réseau pour avoir les meilleures performances.

Côté client

La commande est quasi la même:

nfsstat -c

Et la sortie ressemble à ça : <source> Client rpc stats: calls retrans authrefrsh 126781 0 126797

Client nfs v4: null read write commit open open_conf 0 0% 30720 24% 95001 74% 271 0% 30 0% 0 0% open_noat open_dgrd close setattr fsinfo renew 17 0% 0 0% 43 0% 62 0% 6 0% 0 0% setclntid confirm lock lockt locku access 0 0% 0 0% 0 0% 0 0% 0 0% 64 0% getattr lookup lookup_root remove rename link 234 0% 32 0% 2 0% 25 0% 1 0% 0 0% symlink create pathconf statfs readlink readdir 0 0% 0 0% 4 0% 125 0% 0 0% 12 0% server_caps delegreturn getacl setacl fs_locations rel_lkowner 10 0% 16 0% 14 0% 0 0% 0 0% 0 0% secinfo exchange_id create_ses destroy_ses sequence get_lease_t 0 0% 0 0% 2 0% 2 0% 1 0% 72 0% reclaim_comp layoutget getdevinfo layoutcommit layoutreturn getdevlist 0 0% 2 0% 0 0% 0 0% 0 0% 0 0% (null) 2 0% </source> (Ici aussi, la sortie pourrait changer un peu sur un OS plus récent) Ici, la mention la plus importante est retrans, qui trahit les retransmissions. Si des retransmissions excessives sont constatées, il est peut être utile de modifier les valeurs de rsize et wsize dans la commande mount du client.

Voir les paquets transférés / perdus

Sur le client comme sur le serveur, la commande

nfsstat -o net

...permet de voir les stats en termes de paquets.

nfsiostat

Cette commande est similaire à iostat, mais elle est utilisée pour surveiller les points de montage nfs. Elle utilise dans /proc/self/mountstats comme entrée et fournit des informations sur les entrées / sorties des partages NFS du système. Elle s'utilise sur le client pour checker ses performances lors de la communication avec le serveur.

Le faire tourner sans argument ressemble à : <source>

  op/s		rpc bklog
 11.88	   0.00

read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) 2.918 2988.853 1024.305 0 (0.0%) 18.046 21.518 write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) 8.868 8170.599 921.400 0 (0.0%) 4.008 178.702 </source> Points importants :

  • retrans : Nombre de retransmissions.
  • avg RTT (ms) : Temps entre le moment où le kernel du client envoie la requête RPC et celui où il reçoit une réponse.
  • avg exe (ms) : Durée entre le moment où le client fait une requête RPC et le moment où elle est complétée. Inclue le RTT.

Un retrans ainsi qu'un RTT élevés trahissent de la latence réseau; tout comme la latence affecte les IO. Le client sera alors lent.