用于获取 NFS IO 计数器的 snmp mib 是什么?

用于获取 NFS IO 计数器的 snmp mib 是什么?

我可以使用以下 snmp MIB 获取本地磁盘 I/O 请求和读/写字节:

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

但我还想获取 NFS 上执行的读写操作数和读写字节数。我可以从 iostat 和 sar 获取这些详细信息。但如何在 snmp 中获取相同的信息。是否有任何标准 MIB?或者我需要使用自定义扩展脚本吗?

或者任何其他 NFS 统计数据来确定大多数 IO 是否发生在 NFS 上,而不是本地磁盘上,因此可能会存在延迟。

我发现可以从 /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
  • 但是,我无法确定哪个选项消耗的资源最少:使用 iostat 还是使用 /proc/self/mountstat。iostat 是否从任何缓存中检索数据,因此可以获得更快的结果?

  • 而且我在任何地方都找不到对输出的解释。我只需要总操作、读写操作和传输字节的原始计数器。

对我来说,拥有原始计数器是最好的选择(如果它已被添加到 snmp 中。但是,现在由于它没有添加到 snmp,如果我使用外部脚本来获取数据,我无法决定选择 iostat 还是原始计数器。)

相关内容