zabbixのダイナミックインデックスについて

いつもお世話になっております。

zabbixのダイナミックインデックスについての質問がございます。

現在zabbix1.8.15-6を使用しているのですが、
hrSWRunPerfMem["index","hrSWRunName","httpd"]
とすると、おそらくhttpdの1プロセスのメモリ使用量が出てきます。

httpdプロセスは複数起動しており、
snmpwalk -v2c -c xxxxx xx.xx.xx.xx hrSWRunName
と実行すると、複数のユニークなインデックスのhttpdプロセスが
確認できます。

ダイナミックインデックスの仕様としてhrSWRunNameのインデックスが
一番最初にヒットするものをhrSWRunPerfMemのインデックスとして付与し
監視するのでしょうか。

また基本的なこととなってしまうと思うのですが、
proc.mem[httpd,,sum] (bytes)と
snmpwalk -v2c -c xxxxx xx.xx.xx.xx hrSWRunPerfMem (KBytes)
のhttpdプロセスの使用量とマッチしないのですが、
どういうことでしょうか。

以上、よろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

ダイナミックインデックスの仕様としてhrSWRunNameのインデックスが
一番最初にヒットするものをhrSWRunPerfMemのインデックスとして付与し
監視するのでしょうか。

ソースの詳細まで再確認していませんが、実際に試してみると、

hrSWRunPerfMem["index","hrSWRunName","httpd"]

は、snmpwalkで取得したときの最初のプロセスのhrSWRunPerfMemと
一致しているようです。

Zabbixの場合、proc.mem[]のLinux上での実装を確認すると、

 /proc/[プロセスID]/cmdline
 /proc/[プロセスID]/status

を確認して、コマンドラインと一致するかや、どれだけのメモリを
利用しているかを取得するようになっているようです。

複数の同じ名前のプロセスがあった場合は、proc.mem[]の第3引数
であるstatusの値によって、

 avgの場合:
  各プロセスのstatusファイル内のVmSizeの値の平均値を求める
 maxの場合:
  各プロセスのstatusファイル内のVmSizeの値の最大値を求める
 minの場合:
  各プロセスのstatusファイル内のVmSizeの値の最小値を求める
 sumの場合:
  各プロセスのstatusファイル内のVmSizeの値の合計値を求める

となっているようです。
VmSizeを利用していますので、該当するプロセスが利用している
「仮想メモリのサイズ」のようです。

proc.mem[httpd,,sum] (bytes)と
snmpwalk -v2c -c xxxxx xx.xx.xx.xx hrSWRunPerfMem (KBytes)
のhttpdプロセスの使用量とマッチしないのですが、
どういうことでしょうか。

sumを指定されているので、httpdというプロセス名のプロセスの総
計になるようです。
1つのプロセスのメモリ使用量とは異なりますし、hrSWRunPerfMem
は、そのプロセスが利用している「実メモリのサイズ」だったと思
います。

仮想メモリか実メモリか、1つのプロセスか複数のプロセスかなど
比較する基準を合わせて確認してみてください。