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 - 投稿数: 4769
ソースの詳細まで再確認していませんが、実際に試してみると、
は、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を利用していますので、該当するプロセスが利用している
「仮想メモリのサイズ」のようです。
sumを指定されているので、httpdというプロセス名のプロセスの総
計になるようです。
1つのプロセスのメモリ使用量とは異なりますし、hrSWRunPerfMem
は、そのプロセスが利用している「実メモリのサイズ」だったと思
います。
仮想メモリか実メモリか、1つのプロセスか複数のプロセスかなど
比較する基準を合わせて確認してみてください。