what i had today
|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
|
2007/05/31 Thu ifHCInOctets / ifHCOutOctets [長年日記]
_ 朝
なし
_ [work] MaxClients
Apache のレスポンスが悪いというアラートが届いてログインしてみると,MaxClients に達していた。大きなファイルをダウンロードさせるので,各セッションごとに帯域制限をして,かつトータルの帯域も制限していた自前モジュールが機能していたせい。もちろん,正しい動作。トータルを増やして,一緒に MaxClients も増やそうと思ったら,別の部署で別の問題が出たらしくて対応せずに終了。
各セッションごとの帯域制限って,サーバアプリで対応するしかなさげ。本当は,途中の機器でうまく制限して,送り手側では cache に乗せてとにかくガンガン送り出したい所なんだけど・・・。
_ [work] ネットワーク設計
最近,やっと要件が見えてきたのでネットワークの設計を開始。偉い人とか営業さんから要件をヒアリングするのは分かるけど,同僚のエンジニアからヒアリングしなきゃいけないのって,どうよ? ま,話をすると見えてくる要件もあるけど,まずは概要を伝えてくれよ。何で一から聞き出さなきゃいけないんだよ・・・。
_ 非常階段
MTに移動して 2週間,やっと非常階段を見つけた。これでエレベータを使わずに自動販売機にたどり着ける。でも,社内の自動販売機はしょぼいので,セブンイレブンまで行くことが多い。
_ ifHCInOctets / ifHCOutOctets
帰る間際に,NKTさんと雑談。「トラフィックが増えると,ifInOctets / ifOutOctets をうまく監視できないよねぇ」って話。何が問題なのかは分かったので,詳細調査は家に帰ってからのお互いの宿題にする。
ifInOctets / ifOutOctets は 32bitカウンタ。2^32[Byte] = 4294967296 [Byte] = 34359738368 [bit]。5[min] = 300[sec] 間隔でカウンタを読みにいく場合,34359738368 / 300 = 114532461[bps] = 114[Mbps] で 5分間通信されてしまうと,監視する間に桁上がりしちゃって値を正しく取得できない。
家でちょいと調べると・・・SNMPv1 は 32bit のみをサポート。64bitをサーポートしているのは,SNMPv2C and SNMPv3。で,HC(High Capacity)がついた MIB が定義されている模様。
ifInOctets = .1.3.6.1.2.1.2.2.1.10 ifOutOctets = .1.3.6.1.2.1.2.2.1.16 ifHCInOctets = .1.3.6.1.2.1.31.1.1.1.6 ifHCOutOctets = .1.3.6.1.2.1.31.1.1.1.10
実装側も net-snmp で確認。5.2.x だと "configure --enable-mfd-rewrites" で MFD(MIBs For Dummies)が使える。ただし Linuxのみ。5.3.x だと Default で対応。これも Linuxのみ。5.4.x だと,"configure --enable-mfd-rewrites" すれば OpenBSD/FreeBSD/Solaris でも対応。
NW機器だと対応状況も良くて,手元の機器で ifHCIn/OutOctets が取れない機器は FireWall位だった。
[host]$ snmpwalk -On -v 2c -c (community) (IPAddress) .1.3.6.1.2.1.31.1.1.1.6 |head .1.3.6.1.2.1.31.1.1.1.6.1 = Counter64: 0 .1.3.6.1.2.1.31.1.1.1.6.2 = Counter64: 0 .1.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 0 .1.3.6.1.2.1.31.1.1.1.6.4 = Counter64: 482227651483 .1.3.6.1.2.1.31.1.1.1.6.5 = Counter64: 140346720454 .1.3.6.1.2.1.31.1.1.1.6.6 = Counter64: 2100385903 .1.3.6.1.2.1.31.1.1.1.6.7 = Counter64: 4891098321 .1.3.6.1.2.1.31.1.1.1.6.8 = Counter64: 653615179 .1.3.6.1.2.1.31.1.1.1.6.9 = Counter64: 2365673091 .1.3.6.1.2.1.31.1.1.1.6.10 = Counter64: 202595237 [host]$ snmpwalk -On -v 2c -c (community) (IPAddress) .1.3.6.1.2.1.31.1.1.1.10 |head .1.3.6.1.2.1.31.1.1.1.10.1 = Counter64: 0 .1.3.6.1.2.1.31.1.1.1.10.2 = Counter64: 0 .1.3.6.1.2.1.31.1.1.1.10.3 = Counter64: 0 .1.3.6.1.2.1.31.1.1.1.10.4 = Counter64: 76642738049 .1.3.6.1.2.1.31.1.1.1.10.5 = Counter64: 2149433755 .1.3.6.1.2.1.31.1.1.1.10.6 = Counter64: 111529354028 .1.3.6.1.2.1.31.1.1.1.10.7 = Counter64: 175078107131 .1.3.6.1.2.1.31.1.1.1.10.8 = Counter64: 96421399025 .1.3.6.1.2.1.31.1.1.1.10.9 = Counter64: 5033896164 .1.3.6.1.2.1.31.1.1.1.10.10 = Counter64: 13383778449
逆に,Linuxサーバなどでは対応は遅くて,ifHCIn/OutOctets を取れるサーバはゼロ。値を取りたいなら,都度対応する必要がありそう。
非常に有用なのでメモとしてblogに載せました:)<br>tDiaryだとTrackBackが使えないのでコメントさせていただきました。http://jinkai.macaro.net/?p=59