がらくたネット


SNMP関連

SNMP関連

Simple Network Management Protocol

  • v1、v2c、v3がある
  • v3では認証対応

CPU利用率

CPU利用率計測の話

  • CPU Load Averageを読み取ってるサイトが多数あるが根本的には異なる
  • Load Averageは実行待ちプロセス数
  • Load Averageはtopコマンド右上に出てる数字3個のこと
  • CPU使用率(%)はssCpuRawSystem等のRaw系を元に計測する
  • ssCpuSystem等があるが、これはリアルタイムではない
  • ssCpuSystem等は
  • ssRawXXXXはCPU利用時間(起動時からの累計)となる
  • ssRawXXXXはcounterタイプ
  • ssRawXXXXは1tick毎の利用時間の値が入っている
  • ssRawXXXXはマルチプロセッサの場合、合計値はN*100(Nはプロセッサ数)となる
  • ssCpuRawSystemのOIDは.1.3.6.1.4.1.2021.11.52.0
  • 1tickはデフォルトで10ms(kernelにハードコート、1/100s、10ミリ秒)
  • /proc/statで表示される1行目が該当する値
名称 OID 意味
laLoadInt.1 .1.3.6.1.4.1.2021.10.1.5.1 1分平均
laLoadInt.2 .1.3.6.1.4.1.2021.10.1.5.2 5分平均
laLoadInt.3 .1.3.6.1.4.1.2021.10.1.5.3 15分平均
  • laLoad.1等があるが、タイプがSTRINGで戻ってくるので演算には不向き
  • laLoadInt.1等はタイプがINTEGERなので演算向きだが整数値として扱われるので実際には1/100倍しなければいけない
名称 OID 意味
ssCpuRawUser.0 .1.3.6.1.4.1.2021.11.50.0 Userが利用した時間
ssCpuRawNice.0 .1.3.6.1.4.1.2021.11.51.0 Niceが利用した時間(優先度が低いやつ?)
ssCpuRawSystem.0 .1.3.6.1.4.1.2021.11.52.0 Systemが利用した時間
ssCpuRawIdle.0 .1.3.6.1.4.1.2021.11.53.0 Idle時間
ssCpuRawWait.0 .1.3.6.1.4.1.2021.11.54.0 Wait時間
ssCpuRawKernel.0 .1.3.6.1.4.1.2021.11.55.0 Kernelが利用した時間
ssCpuRawInterrupt.0 .1.3.6.1.4.1.2021.11.56.0 割り込みが利用した時間

全てタイプはCounter32

参考)http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html

  • ssCpuRawSystem = ssCpuRawKernel + ssCpuRawInterrupt

演算

ssCpuRawXXXXを利用する時の演算、5分後とにSNMPで取得していると仮定

対象:ssCpuRawSystemとする
今の値:X_now(tick)
5分前の値:X_ago(tick)
5分間のCPU利用時間:X(tick) = X_now - X_ago

ssCpuRawは1tick(1/100s)毎の値なので、秒に単位を修正
5分間のCPU利用時間(秒):XX(s) = X(tick) * 1/100

5分間の使用率を%であらわすと
5分間の使用率(%): XX(s) / (5 * 60) * 100
                =  X(tick) * 1/100 / (5 * 60) * 100
                =  X(tick) / (5 * 60)

つまり、ssCpuRawSyatemから取得できた値の差分をそのまま
更新間隔(ここでは5分)で割ると使用率が出てくる!

SNMPdサーバ

snmpdの設定

OPTIONS=“-Lsd -Lf /dev/null -p /var/run/snmpd -a”とrc.dに記述あり

  • -Lsd Log messages via syslog, using the specified facility(’d’ for LOG_DAEMON, ’u’ for LOG_USER, or ’0’-’7’ for LOG_LOCAL0 through LOG_LOCAL7)
  • -Lf /dev/null Log messages to the specified file
  • -p /var/run/snmpd Save the process ID of the daemon in FILE
  • -a Log the source addresses of incoming requests

OPTIONSの-Lについてはsnmpcmdのmanに記載あり

OPTIONSは/etc/rc.d/init.d/snmpdに直接記述するか /etc/snmp/snmpd.optionsファイルに記述するかのどちらか

/etc/sysconfig/snmpd.optionsに変更された模様(2009/04/13追記)

snmpd.optionsで管理した方が楽だと思われるので /etc/snmp/snmpd.optionsを作成して/etc/sysconfig/snmpd.optionsにシンボリック!

snmpdのログファイルを-Lf <ログファイル名>で設定すると 指定したログにデータが書かれるがタイムスタンプデータがない! :-(

なので、-Ls6などどしてfacility設定しておけばタイムスタンプが出る

このときにはsyslog.conf側でも受信設定が必要

んでもって、messageにログを出している設定行には local6のfacility分を書き出さないようにする必要あり

trap送信先の設定

trapcommunity STRING TRAP送信時のコミュニティ名 trapsink、trap2sink、informsinkよりも前に記述する必要あり
trapsink HOST バージョン1のTRAP
trap2sink HOST バージョン2のTRAP
informsink HOST 通知発行のみ?

trap送信先を設定した後、snmpdを起動した際にはColdStartのtrapが必ず送られる

snmptrap

snmptrapの使い方

$ snmptrap -v [2c|3] 共通オプション 時刻 トラップOID [ data bindingの値群...]

  • 時刻は''とすると現在時刻が利用される
  • data binding値は「OID 型 設定値」の3つの値のペアを空白で区切って指定
  • 型は文字列の場合はs

OID

色々なOIDを知っておくことで情報取得ができるのだ

LM-SENSORS .1.3.6.1.4.1.2021.13.16.3 CPU温度やFan回転数など