Windowsにおける[system.swap.size[,free]]について
お世話になります。
■サーバ
ZabbixサーバVer:2.4
OS:CentOS 6.5 x86_64
■エージェント
ZabbixエージェントVers:2.4.1
OS:Windows Server 2012 R2
RAM:16GB
■確認内容
現在、標準のテンプレート(Template OS Windows)にて監視を行っています。
Free swap space(system.swap.size[,free])の値を見ると、0Bとなっています。
Windowsにおいて、system.swap.size[,free]は、
どの値を監視(計算?)しているのでしょうか?
以上、よろしくお願い致します。





TF0814 - 投稿数: 49
仮想メモリの空き状況です。
そのWindowsホストにて本当に仮想メモリの空きが0か、
もしくは、仮想メモリが無効になっているのではないでしょうか?
ngkr - 投稿数: 3
ご回答ありがとうございます。
該当のWindowsホストを確認したところ、以下のような状態でした。
ページングファイル:2,432MB
物理メモリの合計:16,376 MB
利用できる物理メモリ:14,947 MB
仮想メモリ:最大サイズ:18,808 MB
仮想メモリ:利用可能:13,195 MB
仮想メモリ:使用中:5,613 MB
上記の通り、仮想メモリは十分に余力があるように見受けられます。
以下のような数式になるかと思っておりましたが、異なるのでしょうか?
system.swap.size[,free] = [仮想メモリ:利用可能] - [仮想メモリ:使用中]
KAZ - 投稿数: 1085
↓こんな感じで取得されています。
Zabbix2.4.1のSYSTEM_SWAP_SIZE関数
if (NULL != zbx_GlobalMemoryStatusEx) { ms_ex.dwLength = sizeof(MEMORYSTATUSEX); zbx_GlobalMemoryStatusEx(&ms_ex); real_swap_total = ms_ex.ullTotalPageFile > ms_ex.ullTotalPhys ? ms_ex.ullTotalPageFile - ms_ex.ullTotalPhys : 0; real_swap_avail = ms_ex.ullAvailPageFile > ms_ex.ullAvailPhys ? ms_ex.ullAvailPageFile - ms_ex.ullAvailPhys : 0; } else { GlobalMemoryStatus(&ms); real_swap_total = ms.dwTotalPageFile > ms.dwTotalPhys ? ms.dwTotalPageFile - ms.dwTotalPhys : 0; real_swap_avail = ms.dwAvailPageFile > ms.dwAvailPhys ? ms.dwAvailPageFile - ms.dwAvailPhys : 0; } if (real_swap_avail > real_swap_total) real_swap_avail = real_swap_total; if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total")) SET_UI64_RESULT(result, real_swap_total); else if (0 == strcmp(mode, "free")) SET_UI64_RESULT(result, real_swap_avail); else if (0 == strcmp(mode, "pfree")) SET_DBL_RESULT(result, (real_swap_avail / (double)real_swap_total) * 100.0); else if (0 == strcmp(mode, "used")) SET_UI64_RESULT(result, real_swap_total - real_swap_avail); else { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid second parameter.")); return SYSINFO_RET_FAIL; }GlobalMemoryStatusEx関数が使えたらGlobalMemoryStatusEx関数からそれ以外の場合はGlobalMemoryStatus関数で取得します。
MEMORYSTATUSEX構造体は下記を見ると分かり良いかと。
http://blog.goo.ne.jp/masaki_goo_2006/e/607d1f267d0d0ab6a5e647b2592f5e19
ページングの空き容量(仮想メモリ:利用可能) <= 物理メモリの空き容量(利用できる物理メモリ)なので、real_swap_availが0になってfreeが0になってますね…
うーん、バグ臭い…
↓これが正しいような…
real_swap_total = ullTotalPageFile
real_swap_avail = ullAvailPageFile
2015/06/05 17:28 追記、どう見てもバグですね…
2015/06/05 17:30 追記、Zabbix2.4.5でも直ってないですね…
2015/06/05 18:00 ZBX-9619で障害報告してきました。
ngkr - 投稿数: 3
ご回答および障害報告までありがとうございます。
Free swap space(system.swap.size[,free])については静観することとします...