表示される値が異常に大きい

お世話になります。

当方では解決できない問題が発生したので、お知恵を拝借したく投稿しました。

現在、snmpwalkとgentemplate.plで作成したテンプレートを元にL2スイッチの監視を始めたのですが、
値が正しく取得できない状態です。

添付した画像「screenshot1.jpg」にあるようにトラフィック量がPbpsという異常な値になっています。

スイッチ側の異常かと思い、zabbixサーバでスイッチから来るsnmpパケットをキャプチャしたところ、
Pbpsなどという値は入っていませんでした。

以下にある一定期間のifHCOutOctets.4のzabbixサーバが受信した、snmpパケットの中の値と、
zabbixの最新データ画面で確認した値を記載します。

<snmpパケットのifHCOutOctets.4の値>
11:37:57 2026162725
11:38:26 2031785600
11:38:57 2037830434
11:39:27 2039593359
11:39:57 2042555428
11:40:26 2047623759
11:40:56 2052012221
11:41:27 2055306698
11:41:56 2059770792
11:42:27 2063380291
11:42:57 2066348897

<zabbixサーバで確認したifHCOutOctets.4の値>
11:37:53 4204007785
11:38:24 72057593955206400
11:38:54 4221680354
11:39:23 72057593973848300
11:39:53 4240218093
11:40:23 72057593995653300
11:40:53 72057594009545100
11:41:23 4273851639
11:41:53 72057594025068100
11:42:23 4290167379
11:42:53 3114774

原因や問題解決方法など、なにかお分かりの方がいらっしゃいましたら
ご助言いただきますようお願い致します。

コメント表示オプション

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

dodoitsuさん

どういう監視設定になっていますでしょうか?A(^^;
アイテムの定義をお教え願えますか?

ユーザー dodoitsu の写真

KAZ さん

アイテムの定義は

データ型:数値 (整数)
データの形式:10進数
単位:bps
乗数を使用:8
更新間隔(秒):30
保存時の計算:差分/時間

にしております。

作成したテンプレートも添付いたしました。

ユーザー KAZ の写真

dodoitsuさん

テンプレート見ましたが、<delta>0</delta>になってます。
これは「保存時の計算:差分/時間」になってないと思うのですが…A(^^;

確認いただけますか?

タグ文字が上手く表示されないので編集し直しました。 2914/2/27 12:41

因みにifHCOutOctets.1~16個の中でifHCOutOctets.4のみ<delta>0</delta>なってます。 2014/2/27 12:45

ユーザー fripper の写真

私自身が利用している設定と比較してみました

データ型:浮動小数
単位:Bps
乗数を利用:なし
保存時の計算:差分/時間

私自身の場合は [Bytes / sec] で考えているので「乗数の利用」を「なし」にしています
dodoitsu 氏の場合は、[bit / sec] で扱いたいので「乗数の利用」を「あり」、「乗数」を「8」になさっているのだと思いますので
これは問題無いと思います

データ型が気になります
「差分/時間」にした場合に、割り切れない場合、データが小数になってしまうのではないでしょうか‥?

> http://www.zabbix.jp/node/552
スレッドにある kodai 氏の発言からも、「差分/時間」を利用した場合には小数になることがある、と書かれていますので‥。

小数になってしまった場合の扱いが、「整数」指定だとおかしくなるのではないでしょうか

ユーザー dodoitsu の写真

>KAZさん

有難う御座います。
テンプレートが間違えていました。

>fripper さん

有難う御座います。
浮動小数点に修正したところ、タイミングは不明ですが、
Type of received value [19084567778714976.000000] is not suitable for value type [Numeric (float)]
のメッセージが出て、取得不可になってしまいます。

全て不可というわけではなく、一定期間取得不可になってしまいます。
以下に取得した値を記載します。

<ifHCOutOctets.4の値>
2014/02/27 15:20:34 22812287.1627
2014/02/27 15:11:04 21269695.1115
2014/02/27 15:10:34 4635588.7127
2014/02/27 15:00:34 761520.4074
2014/02/27 14:50:34 444135.2926
2014/02/27 14:30:34 642235.4404

使用したテンプレートも添付します。

宜しくお願いします。

ユーザー KAZ の写真

dodoitsuさん


浮動小数点に修正したところ、タイミングは不明ですが、
Type of received value [19084567778714976.000000] is not suitable for value type [Numeric (float)]
のメッセージが出て、取得不可になってしまいます。

値がでかくて入らないと言っているように見えます。
数えたら整数部分が17ケタあります。
64bit floatは有効値が15ケタ位だとなはずなので、桁あふれします。

なので、エラーが出続けるようなら整数タイプにしてください。
※:小数部分のデータが落ちてしまいますが…

ユーザー fripper の写真

参考
http://www.zabbix.jp/node/552

・もともと ifHCOutOctets / ifHCInOctets で得られる値は 64bit 整数の累積バイト値
・時間あたりの数値にしたければ「差分 / 時間」を選択するしかない
・バイト数ではなく bit 数にしたければ「乗数」に8を指定するしかない
・zabbix では「差分/時間」を選ぶと、除算の結果、内部的には小数値になる

・データ形式に「浮動小数」を選択した場合の保存先テーブル history の精度は double(16,4)、
・データ形式に「整数」を選択した場合の保存先テーブル history_uint の精度は bigint unsigned

トラフィックが多い環境だと、乗数・差分を併用した bps 値も、大きな値になるので、「浮動小数」だと桁あふれするのですね‥
「整数」だと桁あふれはしないけれど、「差分・時間」の端数は捨てられてしまう‥と‥

厄介ですね‥(汗)

#私自身の環境ではそこまでスループットが高くないのか、はたばた bytes/sec でおさめているからか、
#問題になったことがありませんでした。申し訳ありません

ユーザー KAZ の写真

fripperさん

私もZabbixのfloatで桁あふれは初めての経験です。
10GBスイッチの監視気を付けなきゃと再認識しました~A(^^;