ウォッチ漫画『酒男子』新連載開始!

度々すみません、

SNMPの知識が浅く、理解に苦しんでいます。

ifInOctetsとifOutOctetsですが、少し基礎から整理したいと思います。
お付き合い頂けると助かります。

Q1.
先ずこれらが持つ数値データは、「受信した総バイト数」、
「送信した総バイト数」という認識で良いでしょうか?。

Q2.
またこれらは「カウンター型」とあるのですが、
例えば1バイトを送信したら1ずつインクリメントされるような
イメージでしょうか?。

32bitカウンタの場合、上限(4294967925)を超えると、0に戻ると
下記サイトに記載があります。

http://www.itmedia.co.jp/enterprise/articles/070 …

この「4294967925」は「バイト数」なのでしょうか?。
※およそこの値まで送受信バイト数をカウント可能、という認識です。

Q3.
最終的には、「トラフィック監視」として、
このカウンタを一定間隔で取得し、それがしきい値を超過したら
エラーとして通知したいと考えています。

しかしこれが果たして、しきい値として使用できるか、、
整理できず悩んでいます。

というのも、「受信した総バイト数」、という累計値のような表現が
気になっていまして、今回やりたいのは、例えば回線が1Gbpsの上限があり、
ポーリング時に機器のポート使用が800Mbpsを超過している場合に通知したいのです。
(通常は、数十Mbps程度の想定です)

負荷の有無に関わらず、累積でどんどんカウンターが積みあがって、
指定した値を超過したら1回通知して、その後カウンター上限を超えて0に戻り、
また指定した値を超過したら・・という動きだと
どうも趣旨が違うような気がするのです。。

以上の3点の認識は正しいでしょうか?。

ご指摘など頂けると大変助かります。

ちなみにNMSがifspeedとの帯域使用率の計算をサポートしてないため、
上記のような対応をせざるを得ない状況なのです・・。

よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Q1.Yes


Q2.Yes
Q3.ifInOctetsとifOutOctetの「生(ナマ)」の値をしきい値にしては駄目です。
例のCisco資料のデルタ付の「ΔifInOctets」は「差分」と解釈してください。
Δが「差分」を意味することはご存知ですよね?
difference→ギリシア文字のd
http://oshiete.goo.ne.jp/qa/2007844.html

NMSによっては、設定した時間間隔で勝手に差分を取った値を返すものがありますし、
そうでないNMSもあります。実測値を見ていれば判別できると思いますが、どうでしたか?
書くひとや前提にする環境によって、どちらのことを言っているのか判断する必要があるようです。

当方が書いたのは「生(ナマ)」の値からbpsの求め方 で、
別資料の
ΔifInOctets * 8 * 100 / ifSpeed
というのは、回線使用率(%)を求めています。

差分のifInOctets(bps)をバイトに直して、割り当てられてる帯域幅(ifSpeed)で割って、
%を求めるために100をかけています。

意味合いは近いですが、閾値をbpsにするのか、%にするのかが違ってきます。

このような説明でわかりますか?
    • good
    • 0
この回答へのお礼

お礼が遅れ申し訳ありません、、

NMSが全く駄目で、教えて頂いた計算に
仕様として全く対応できていませんでした。
(ベンダーとも揉めました)

教えて頂いたロジックは、今後の業務として、
是非生かして生きたいと思います。

お礼日時:2011/12/10 01:18

カウンタはグルグル回っているだけですので、



水道や電気の検針&料金計算と一緒で、
(現在計測値 - 前回計測値) / 時間間隔(この場合は秒)

たとえば5分間隔ならば、

回線使用率(受信側)
= { (現在のifInOctets) - (5分前のifInOctets) } x 8 / 300秒 (bps)

回線使用率(送信側)
= { (現在のifOutOctets) - (5分前のifOutOctets) } x 8 / 300秒 (bps)

5分間隔ではカウンタが何周かするなら64bitカウンタで、

回線使用率(受信側)
= { (現在のifHCInOctets) - (5分前のifHCInOctets) } x 8 / 300秒 (bps)

回線使用率(送信側)
= { (現在のifHCOutOctets) - (5分前のifHCOutOctets) } x 8 / 300秒 (bps)

という計算が必要です。

問題は、それがそのNMSでできるのかという話ですか。
    • good
    • 0
この回答へのお礼

有難うございます。

対象はCisco機器ですが、下記サイトを見ると
ifinOctesは「 2 つのポーリング サイクルのデルタ(差分)」と
記載があり、

http://www.cisco.com/cisco/web/support/JP/102/10 …

「(現在のifInOctets) - (5分前のifInOctets)」という計算結果が既に
内包されているのかな、と思いました。

計算で悩んでいるのですが、違う下記サイトを見ると

http://www.atmarkit.co.jp/fnetwork/tokusyuu/moni …

回線使用率は以下の計算となっております。

受信: ifInOctets * 8 * 100 / ifSpeed
送信: ifOutOctets * 8 * 100 / ifSpeed

この「* 100」をすることや「ifSpeed」が含まれる意味について、
理解できていませんでした・・

「(現在計測値 - 前回計測値) / 時間間隔」と意味合いは
一緒なのでしょうか?。

お手数をおかけします。
よろしくお願いします。

お礼日時:2011/11/03 15:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSNMPのifInOctets

スイッチの各ポートの帯域使用率を取得したいと思い、
SNMPのifInOctetsの値をsnmpwalkで参照しました。

そこには、インターフェース毎に数値(カウンタ?)が入っていました。

この値は、そのポートが受信したバイト数の累計値か何かなのでしょうか?。

「累計」と考えたのは、その数値がポートの最大スペック(1Gbps=128Mバイト)を
超える値が入っていたためです。

128Mバイト以下のバイト数(snmpwalkで参照時点の使用量)が
入っていると思ったのですが・・

この数値はどういった解釈をするものでしょうか?。

アドバイスを頂けると幸いです。

Aベストアンサー

「ifInOctetsやifOutOctetsを単独で取得した時何に使えるのか?」と言われているのであれば、ちょっと思いつきません。
これまで何度も出ていると思いますが、下記の用途以外を自分は知りません。
いわゆる「トラフィック監視(流量監視)」の実現方法ですね。

-----------------------------------------------------------------------------------
1, 送受信で発生したフレーム数が累積されるカウンタがあったとき、そのカウンタを一定間隔で取得する
2, 後は該当のインターフェイス速度と、取得に用いたポーリング間隔さえわかっていれば「使用率」が算出できる

# 上記1に於いて用いられる標準的なカウンタオブジェクトがifInOctetsとifOutOctetsです。
但し、現在のネットワーク環境下に於いては64bitカウンタタイプの他オブジェクト・・・例えば、ifHCInOctetsのような物でないと要件を満たせなかったりします。
http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=ja&translate=Translate&objectInput=ifHCInOctets

「ifInOctetsやifOutOctetsを単独で取得した時何に使えるのか?」と言われているのであれば、ちょっと思いつきません。
これまで何度も出ていると思いますが、下記の用途以外を自分は知りません。
いわゆる「トラフィック監視(流量監視)」の実現方法ですね。

-----------------------------------------------------------------------------------
1, 送受信で発生したフレーム数が累積されるカウンタがあったとき、そのカウンタを一定間隔で取得する
2, 後は該当のインターフェイス速度と、取得に用いたポー...続きを読む

QSNMPのifInOctets について

SNMPのifInOctetsは、「受信した総バイト数」とありますが、本当に「ブロードキャストパケット、マルチキャストパケット、ユニキャストパケット」すべての総バイト数、と理解してよいのでしょうか?


http://www.itmedia.co.jp/enterprise/articles/0705/21/news015_6.html

Aベストアンサー

そうですね
ifInOctets/ifOutOctetsはunicast/non-unicast(multicast/broadcast)の種別に寄らない総パケット数です

個別に見たい場合は、その機器が対応していればUcast/NUcastや、Multicast/BroadcastのMIBを参照すれば見られます

#Multicast/BroadcastのMIBをサポートしていなかったり、MIB自体は持っていてもカウンタが動作していない(0のままだったりする)機器もあるので、もしこの辺を見たいのであれば事前にベンダに確認したほうがいいでしょう

Q特定PCからのトラフィック量を監視したい

お世話になります。

自宅でルーターを介した有線LANでネットワークを構築しています。
ここ最近頻繁にネットワークが遅くなり、普段のインターネット接続に支障をきたすようになりました。
Yahoo!を開くだけでも10秒程度掛かるようになり、その他のサイトでも体感できるほどに遅いです。
ルーターを再起動すると少しの間は速度が元に戻りますが、暫くするとまた……な状況です。

そのため、特定のPCから膨大なトラフィック量が送受信されている可能性を考えました。

PCを使っている家族に直接聞いても分からないとの答えだったので、
負荷を掛けている可能性のあるPCを特定し直接注意しようと思います。
万が一、ファイル共有ソフト等を使っている事実があれば困りますので……。

IPアドレス別にトラフィック量を監視できるソフトや方法などありませんか?
更に使用しているソフトやアクセス先も分かれば助かるのですが……。

使用しているルーターはWHR-AMPGです。
お手数をお掛けしますが、よろしくお願いします。

Aベストアンサー

ネットワークプロトコルアナライザWiresharkを使えば、パケット単位で情報が入手できます。
http://sourceforge.jp/projects/wireshark/

どのPCがどこと接続しどのようなパケットを交換しているか・・・ネットワーク管理者用のツールです。
家庭内ならある程度対象を絞って監視することも可能。強力なツールですから、それなりの内容が分かってしまいます。知らない方が良かったというような情報まで分かってしまうかも。

でもルーター再起動で戻るなら、大量のパケットというよりルーターの障害という可能性もありますが。

QNTP の TCPポートは?

NTPは123/UDPでようは足りると思うのですが、
WELL KNOWN PORTとかいろいろな資料に「123/TCP」ポートが割当たってます。
ntpd,ntpdate等でNTPを使う場合、実際には123/TCPは使われているのでしょうか?

Aベストアンサー

RFC1305では「ntpには123/udpを割り当てる」となっていますが、RFC1700では「123 ntp」となっており、「123/udp」と明示されているわけではありません。
よって、「123/tcp ntp」が間違っている(または使えない)という明確な根拠にはなりません。

「現状では『123/tcp ntp』を実装するための定義が存在しない」程度に考えた方が良いと思います。

ただ、将来的にRFC2030のSNTPが(IPv6対応などの点で)主流になる可能性があるので、「123/tcp ntp」は定義されない可能性もあります。

Qbashなどのシェル変数の値に改行を含める事は可能でしょうか?

タイトルの通りですが、通常のシェル変数の値として

 [prompt]$ aaa="bbb<改行>ccc"

のようなセットを行い、

 [prompt]$ echo $aaa
 bbb
 ccc
 [prompt]$

のような結果を得たいのですが、可能でしょうか。

Aベストアンサー

可能です.
というか,やってみたら出来ることがわかると思います.こんなところで聞くより早い.
なお,sh/bash系では改行文字は特にエスケープせずそのまま入れられます.

aaa='bbb
ccc'

Qttlで戻り値を取得する方法

Teratermmacroでローカル(cygwin)に入り、サーバ(HP-UX)にリモートで入った後、
コマンドの戻り値で後の行動を操作したいのですが、うまくいきません。
わかる方、教えていただけませんか。

ざっくり以下のようなマクロを組んでいます。

----------------------------------------------------------
sendln 'ssh name@host1'

wait Prompt
sendln 'sendmsg "test"'(のようなコマンド) ←これの戻り値がほしい

if 戻り値 = 0 then
 ○○
elseif 戻り値 = 1 then
 wait Prompt
 sendln 'exit'
 wait Prompt
 sendln 'ssh name2@host2'

以下略
----------------------------------------------------------

上記の「戻り値」をどのようにすれば戻り値で判別してくれるでしょうか。
if文の条件式を $?やresultでやりましたが、どのような戻り値でも
必ず$?は0、resultは1で固定でした。

また、sendmsgとif文の間に以下のように試しましたが、失敗しました。
例1:
----------------------------------------------------------
sendln 'echo $?'
recvln

if inputstr = 0 then ←syntax errorになります。
 ○○
elseif inputstr = 1 then
----------------------------------------------------------

例2:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1247390747参照
----------------------------------------------------------
sendln 'echo $?'
recvln
recvln

hensu=inputstr ←Type mismatch.のエラーになる。 直前にstr2intを入れたりしても駄目でした。
ちなみにsendln 'echo $?'を挟まずsendmsgの直後にrecvlnでも駄目です。

if hensu = 0 then
 ○○
elseif hensu = 1 then
----------------------------------------------------------

host1にシェルスクリプトを入れることは出来ません。

Teratermmacroでローカル(cygwin)に入り、サーバ(HP-UX)にリモートで入った後、
コマンドの戻り値で後の行動を操作したいのですが、うまくいきません。
わかる方、教えていただけませんか。

ざっくり以下のようなマクロを組んでいます。

----------------------------------------------------------
sendln 'ssh name@host1'

wait Prompt
sendln 'sendmsg "test"'(のようなコマンド) ←これの戻り値がほしい

if 戻り値 = 0 then
 ○○
elseif 戻り値 = 1 then
 wait Prompt
 sendln 'exit'
 wait Prompt
...続きを読む

Aベストアンサー

基本方針は、echo $? の出力文字をttlで受信して判定、でいいと思います。

・inputstrは文字列なので、=での比較はできません
strcompareコマンドで比較→変数resultで判定
あるいは
str2int 変数 intputstr で変数に数値化→if 変数=0 等と判定
ということになります。
http://ttssh2.sourceforge.jp/manual/ja/macro/syntax/variables.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/strcompare.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/str2int.html


・recvln1つではエコーバックの分を受け取ってしまうようです。
他の出力を受信してしまう場合もあります。
確実にやるなら、目印を付けてwaitでそこまで待つ、というのがいい思います

sendln 'echo "=== EXIT STATUS === : $?"'
wait '=== EXIT STATUS === : '
recvln


・シェルスクリプトを入れることはできなくても、複合コマンドを実行することはできるはずです。
sendln '(sendmsg "test" && echo "==== OK ====") || echo "==== NG ===="'
waitlnで待ち→resultで分岐とできます
http://ttssh2.sourceforge.jp/manual/ja/macro/command/waitln.html

基本方針は、echo $? の出力文字をttlで受信して判定、でいいと思います。

・inputstrは文字列なので、=での比較はできません
strcompareコマンドで比較→変数resultで判定
あるいは
str2int 変数 intputstr で変数に数値化→if 変数=0 等と判定
ということになります。
http://ttssh2.sourceforge.jp/manual/ja/macro/syntax/variables.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/strcompare.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/str2int.html


・recvln1つではエコーバ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング