そこで、既存の vfs.dev.read / write が 使えるのか知りたくなったので調べて見た。
環境
- CentOS release 6.8 (Final)
- zabbix-agent-2.2.15-1.el6.x86_64
ソースコードをダウンロード
まずは、ここ(https://www.zabbix.com/download)から調べたいソースコードをダウンロード。
適当に grep しまくる
それっぽいところにたどり着く
#if defined(KERNEL_2_4)
# define INFO_FILE_NAME "/proc/partitions"
# define PARSE(line) if (sscanf(line, ZBX_FS_UI64 ZBX_FS_UI64 " %*d %s " \
ZBX_FS_UI64 " %*d " ZBX_FS_UI64 " %*d " \
ZBX_FS_UI64 " %*d " ZBX_FS_UI64 " %*d %*d %*d %*d", \
&rdev_major, \
&rdev_minor, \
name, \
&ds[ZBX_DSTAT_R_OPER], \
&ds[ZBX_DSTAT_R_SECT], \
&ds[ZBX_DSTAT_W_OPER], \
&ds[ZBX_DSTAT_W_SECT] \
) != 7) continue
#else
# define INFO_FILE_NAME "/proc/diskstats"
# define PARSE(line) if (sscanf(line, ZBX_FS_UI64 ZBX_FS_UI64 " %s " \
ZBX_FS_UI64 " %*d " ZBX_FS_UI64 " %*d " \
ZBX_FS_UI64 " %*d " ZBX_FS_UI64 " %*d %*d %*d %*d", \
&rdev_major, \
&rdev_minor, \
name, \
&ds[ZBX_DSTAT_R_OPER], \
&ds[ZBX_DSTAT_R_SECT], \
&ds[ZBX_DSTAT_W_OPER], \
&ds[ZBX_DSTAT_W_SECT] \
) != 7 \
&& \
/* some disk partitions */ \
sscanf(line, ZBX_FS_UI64 ZBX_FS_UI64 " %s " \
ZBX_FS_UI64 ZBX_FS_UI64 \
ZBX_FS_UI64 ZBX_FS_UI64, \
&rdev_major, \
&rdev_minor, \
name, \
&ds[ZBX_DSTAT_R_OPER], \
&ds[ZBX_DSTAT_R_SECT], \
&ds[ZBX_DSTAT_W_OPER], \
&ds[ZBX_DSTAT_W_SECT] \
) != 7 \
) continue
#endif
結論
Zabbix の vfs.dev.read / write は Linux kernel 2.6 の場合、/proc/diskstats をパースしている。
それで、/proc/diskstats というのは、「I/O statistics」つまり統計情報なので、今回監視したかったのと
は少し違った。
やっぱり、Agent で touch /tmp/write_checkする用のアイテムを作るか、リモートコマンドでサーバーから touch して戻り値をチェックする感じかな。
は少し違った。
やっぱり、Agent で touch /tmp/write_checkする用のアイテムを作るか、リモートコマンドでサーバーから touch して戻り値をチェックする感じかな。
0 件のコメント:
コメントを投稿