表示される値が異常に大きい
お世話になります。
当方では解決できない問題が発生したので、お知恵を拝借したく投稿しました。
現在、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
原因や問題解決方法など、なにかお分かりの方がいらっしゃいましたら
ご助言いただきますようお願い致します。
- screenshot1.jpg (144.07 KB)
KAZ - 投稿数: 1085
dodoitsuさん
どういう監視設定になっていますでしょうか?A(^^;
アイテムの定義をお教え願えますか?
dodoitsu - 投稿数: 3
KAZ さん
アイテムの定義は
データ型:数値 (整数)
データの形式:10進数
単位:bps
乗数を使用:8
更新間隔(秒):30
保存時の計算:差分/時間
にしております。
作成したテンプレートも添付いたしました。
KAZ - 投稿数: 1085
dodoitsuさん
テンプレート見ましたが、<delta>0</delta>になってます。
これは「保存時の計算:差分/時間」になってないと思うのですが…A(^^;
確認いただけますか?
タグ文字が上手く表示されないので編集し直しました。 2914/2/27 12:41
因みにifHCOutOctets.1~16個の中でifHCOutOctets.4のみ<delta>0</delta>なってます。 2014/2/27 12:45
fripper - 投稿数: 495
私自身が利用している設定と比較してみました
データ型:浮動小数
単位:Bps
乗数を利用:なし
保存時の計算:差分/時間
私自身の場合は [Bytes / sec] で考えているので「乗数の利用」を「なし」にしています
dodoitsu 氏の場合は、[bit / sec] で扱いたいので「乗数の利用」を「あり」、「乗数」を「8」になさっているのだと思いますので
これは問題無いと思います
データ型が気になります
「差分/時間」にした場合に、割り切れない場合、データが小数になってしまうのではないでしょうか‥?
> http://www.zabbix.jp/node/552
スレッドにある kodai 氏の発言からも、「差分/時間」を利用した場合には小数になることがある、と書かれていますので‥。
小数になってしまった場合の扱いが、「整数」指定だとおかしくなるのではないでしょうか
dodoitsu - 投稿数: 3
>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 - 投稿数: 1085
dodoitsuさん
浮動小数点に修正したところ、タイミングは不明ですが、
Type of received value [19084567778714976.000000] is not suitable for value type [Numeric (float)]
のメッセージが出て、取得不可になってしまいます。
値がでかくて入らないと言っているように見えます。
数えたら整数部分が17ケタあります。
64bit floatは有効値が15ケタ位だとなはずなので、桁あふれします。
なので、エラーが出続けるようなら整数タイプにしてください。
※:小数部分のデータが落ちてしまいますが…
fripper - 投稿数: 495
参考
http://www.zabbix.jp/node/552
・もともと ifHCOutOctets / ifHCInOctets で得られる値は 64bit 整数の累積バイト値
・時間あたりの数値にしたければ「差分 / 時間」を選択するしかない
・バイト数ではなく bit 数にしたければ「乗数」に8を指定するしかない
・zabbix では「差分/時間」を選ぶと、除算の結果、内部的には小数値になる
・データ形式に「浮動小数」を選択した場合の保存先テーブル history の精度は double(16,4)、
・データ形式に「整数」を選択した場合の保存先テーブル history_uint の精度は bigint unsigned
トラフィックが多い環境だと、乗数・差分を併用した bps 値も、大きな値になるので、「浮動小数」だと桁あふれするのですね‥
「整数」だと桁あふれはしないけれど、「差分・時間」の端数は捨てられてしまう‥と‥
厄介ですね‥(汗)
#私自身の環境ではそこまでスループットが高くないのか、はたばた bytes/sec でおさめているからか、
#問題になったことがありませんでした。申し訳ありません
KAZ - 投稿数: 1085
fripperさん
私もZabbixのfloatで桁あふれは初めての経験です。
10GBスイッチの監視気を付けなきゃと再認識しました~A(^^;