Eu posso obter solicitações de E / S de disco local e bytes de leitura / gravação usando o seguinte MIB snmp:
SNMP table: UCD-DISKIO-MIB::diskIOTable
diskIOIndex diskIODevice diskIONRead diskIONWritten diskIOReads diskIOWrites diskIOLA1 diskIOLA5 diskIOLA15 diskIONReadX diskIONWrittenX
25 sda 845276160 2882477056 576632 42597061 ? ? ? 5140243456 883350772736
Mas também quero obter o número de operações de gravação de leitura e nenhum de bytes de leitura de leitura executados no NFS. Eu posso obter esses detalhes de iostat e sar. Mas como obter o mesmo em snmp. Existe algum MIB padrão? Ou preciso usar scripts de extensão personalizados?
Ou qualquer outra estatística do NFS para descobrir se a maior parte do IO está acontecendo no NFS, em vez do disco local e, portanto, pode haver uma latência.
Descobri que os dados brutos para estatísticas relacionadas podem ser obtidos em / proc / self / mountstats:
device mynfsserver:/nfs_share mounted on /mymount with fstype nfs statvers=1.0
opts: rw,vers=3,rsize=32768,wsize=32768,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.135.8.219,mountvers=3,mountport=635,mountproto=udp,local_lock=all
age: 7184080
caps: caps=0x3fc7,wtmult=512,dtsize=32768,bsize=0,namlen=255
sec: flavor=1,pseudoflavor=1
events: 23331256 3491358524 223430 34366227 20158408 4179180 3619183247 450869771 371431 3544366 197926586 148912797 10786030 411945 12060216 12447048 1085729 11498039 0 258831 374376252 3931 0 0 0 0 0
bytes: 3455127430558 844517501111 0 0 659354518154 767911744066 164859517 197926586
RPC iostats version: 1.0 p/v: 100003/3 (nfs)
xprt: tcp 1007 1 1 0 0 1351660808 1351660639 169 169982940422 0
per-op statistics
NULL: 0 0 0 0 0 0 0 0
GETATTR: 23331180 23331225 0 3814573636 2613094092 140133 6769125 7120537
SETATTR: 444530 444531 0 86616532 64012464 3667 1082898 1090583
LOOKUP: 4520965 4520971 0 874292460 724505228 30313 1414063 1487652
ACCESS: 4726427 4726432 0 784158880 567169024 19371 1345959 1403405
READLINK: 68743 68743 0 10762652 19401144 136 34100 34910
READ: 21839179 21839189 0 3810780152 662139940856 660836 29894300 41202619
WRITE: 38137920 38137933 0 774902293256 6102069168 3241864861 311329293 3567700419
CREATE: 965107 965109 0 216440696 274091600 10734 642120 670102
MKDIR: 120488 120488 0 24932640 33865172 628 75665 77588
SYMLINK: 272747 272747 0 115599248 77454572 612 138034 141631
MKNOD: 0 0 0 0 0 0 0 0
REMOVE: 1046577 1046577 0 205445268 150706692 5240 570230 586529
RMDIR: 97898 97898 0 17397756 14086104 281 64178 65378
RENAME: 64795 64795 0 17146680 16846700 5115 45625 51897
LINK: 1842 1842 0 427356 426576 5 1201 1227
READDIR: 0 0 0 0 0 0 0 0
READDIRPLUS: 294315 294315 0 54252732 1059559056 904 119156 122929
FSSTAT: 22346 22346 0 3648168 3754128 78 6586 6830
FSINFO: 2 2 0 280 328 0 0 0
PATHCONF: 1 1 0 140 140 0 0 0
COMMIT: 0 0 0 0 0 0 0 0
Mas não consigo decidir qual é o menor consumo de recursos opção: usar iostat ou usar / proc / self / mountstat. O iostat recupera dados de qualquer cache e, portanto, pode ter resultados mais rápidos?
E também não consigo encontrar uma explicação da saída em qualquer lugar. eu só precisam de contadores brutos para operações totais, operações de leitura / gravação e bytes transferidos.
Ter contadores brutos é a melhor opção para mim (se tiver sido adicionado ao snmp. Mas, agora, como não é adicionado ao snmp, se eu usar um script externo para obter os dados, não consigo decidir escolher o iostat ou contadores crus.)