サーバ監視項目でよく使う SNMP の MIB オブジェクト ID まとめ

サーバの監視において SNMP は必須技術なわけですが、MRTG や自前スクリプトは一度設定してしまうと、サーバが増減でもしない限り、設定ファイルを見直すことってほとんどありませんよね。

でもって、久々に改めて設定ファイルを見直してみると、設定してある MIB の OID が意味不明・・・なんだっけコレ?ってことが良くあります。※少なくとも僕の場合は、毎回調べ直してる気がする・・・

なので、よく使う MIB オブジェクト ID をまとめておこう・・・と考えました。これでこれからは迷わない。

・・・と思ったらエントリを書き始めたらビックリ仰天!SNMP の知識すら忘れてます・・・再度お勉強です・・・ヽ(τωヽ)ノ
SNMPによるネットワークシステムの監視第01回:第1回:SNMPの基礎

SNMPではマネージャ(NMS:Network Management Station)という管理機器がその管理対象であるエージェントがもつMIB(Management Information Base)という管理情報をネットワーク上から読み出したり、あるいは変更するように要求することで、ネットワークを適切に管理する機能を提供しています。
このエージェントとマネージャでやり取りされるMIBはツリー構造状の管理データベースであり、この値をマネージャが読み出すことで監視対象の状態を監視することができます。また、情報を変更することで監視対象の設定変更や制御を行う場合もあります。

そうそう、思い出してきました。あの意味不明な数値列はツリー構造で管理されている各階層の番号列です。

- スポンサーリンク -

MIB のツリー構造を把握する

まずは、MIB のツリー構造一覧を表示してみましょう。一覧は膨大なデータ量になるので、サーバ監視項目として必要であろう部分を中心に、ある程度抜粋(割愛)しました。

[user@srv01 ~]$ snmptranslate -Tp
+--iso(1)
   |
   +--org(3)
      |
      +--dod(6)
         |
         +--internet(1)
            |
            +--directory(1)
            |
            +--mgmt(2)
            |  |
            |  +--mib-2(1)
            |     |
            |     +--system(1)
            |     |  |....
            |     |
            |     +--interfaces(2)
            |     |  |....
            |     |....
            |
            +--experimental(3)
            |  |....
            |
            +--private(4)
            |  |
            |  +--enterprises(1)
            |     |
            |     +--ucdavis(2021)
            |     |  |
            |     |  +--prTable(2)
            |     |  |  |....
            |     |  |
            |     |  +--memory(4)
            |     |  |  |
            |     |  |  +-- -R-- Integer32 memIndex(1)
            |     |  |  +-- -R-- String    memErrorName(2)
            |     |  |  |        Textual Convention: DisplayString
            |     |  |  |        Size: 0..255
            |     |  |  +-- -R-- Integer32 memTotalSwap(3)
            |     |  |  +-- -R-- Integer32 memAvailSwap(4)
            |     |  |  +-- -R-- Integer32 memTotalReal(5)
            |     |  |  +-- -R-- Integer32 memAvailReal(6)
            |     |  |  +-- -R-- Integer32 memTotalSwapTXT(7)
            |     |  |  +-- -R-- Integer32 memAvailSwapTXT(8)
            |     |  |  +-- -R-- Integer32 memTotalRealTXT(9)
            |     |  |  +-- -R-- Integer32 memAvailRealTXT(10)
            |     |  |  +-- -R-- Integer32 memTotalFree(11)
            |     |  |  +-- -R-- Integer32 memMinimumSwap(12)
            |     |  |  +-- -R-- Integer32 memShared(13)
            |     |  |  +-- -R-- Integer32 memBuffer(14)
            |     |  |  +-- -R-- Integer32 memCached(15)
            |     |  |  +-- -R-- Integer32 memUsedSwapTXT(16)
            |     |  |  +-- -R-- Integer32 memUsedRealTXT(17)
            |     |  |  +-- -R-- EnumVal   memSwapError(100)
            |     |  |  |        Textual Convention: UCDErrorFlag
            |     |  |  |        Values: noError(0), error(1)
            |     |  |  +-- -R-- String    memSwapErrorMsg(101)
            |     |  |           Textual Convention: DisplayString
            |     |  |           Size: 0..255
            |     |  |
            |     |  +--extTable(8)
            |     |  |  |....
            |     |  |
            |     |  +--dskTable(9)
            |     |  |  |
            |     |  |  +--dskEntry(1)
            |     |  |     |  Index: dskIndex
            |     |  |     |
            |     |  |     +-- -R-- Integer32 dskIndex(1)
            |     |  |     |        Range: 0..65535
            |     |  |     +-- -R-- String    dskPath(2)
            |     |  |     |        Textual Convention: DisplayString
            |     |  |     |        Size: 0..255
            |     |  |     +-- -R-- String    dskDevice(3)
            |     |  |     |        Textual Convention: DisplayString
            |     |  |     |        Size: 0..255
            |     |  |     +-- -R-- Integer32 dskMinimum(4)
            |     |  |     +-- -R-- Integer32 dskMinPercent(5)
            |     |  |     +-- -R-- Integer32 dskTotal(6)
            |     |  |     +-- -R-- Integer32 dskAvail(7)
            |     |  |     +-- -R-- Integer32 dskUsed(8)
            |     |  |     +-- -R-- Integer32 dskPercent(9)
            |     |  |     +-- -R-- Integer32 dskPercentNode(10)
            |     |  |     +-- -R-- EnumVal   dskErrorFlag(100)
            |     |  |     |        Textual Convention: UCDErrorFlag
            |     |  |     |        Values: noError(0), error(1)
            |     |  |     +-- -R-- String    dskErrorMsg(101)
            |     |  |              Textual Convention: DisplayString
            |     |  |              Size: 0..255
            |     |  |
            |     |  +--laTable(10)
            |     |  |  |
            |     |  |  +--laEntry(1)
            |     |  |     |  Index: laIndex
            |     |  |     |
            |     |  |     +-- -R-- Integer32 laIndex(1)
            |     |  |     |        Range: 0..3
            |     |  |     +-- -R-- String    laNames(2)
            |     |  |     |        Textual Convention: DisplayString
            |     |  |     |        Size: 0..255
            |     |  |     +-- -R-- String    laLoad(3)
            |     |  |     |        Textual Convention: DisplayString
            |     |  |     |        Size: 0..255
            |     |  |     +-- -R-- String    laConfig(4)
            |     |  |     |        Textual Convention: DisplayString
            |     |  |     |        Size: 0..255
            |     |  |     +-- -R-- Integer32 laLoadInt(5)
            |     |  |     +-- -R-- Opaque    laLoadFloat(6)
            |     |  |     |        Textual Convention: Float
            |     |  |     |        Size: 7
            |     |  |     +-- -R-- EnumVal   laErrorFlag(100)
            |     |  |     |        Textual Convention: UCDErrorFlag
            |     |  |     |        Values: noError(0), error(1)
            |     |  |     +-- -R-- String    laErrMessage(101)
            |     |  |              Textual Convention: DisplayString
            |     |  |              Size: 0..255
            |     |  |
            |     |  +--systemStats(11)
            |     |  |  |
            |     |  |  +-- -R-- Integer32 ssIndex(1)
            |     |  |  +-- -R-- String    ssErrorName(2)
            |     |  |  |        Textual Convention: DisplayString
            |     |  |  |        Size: 0..255
            |     |  |  +-- -R-- Integer32 ssSwapIn(3)
            |     |  |  +-- -R-- Integer32 ssSwapOut(4)
            |     |  |  +-- -R-- Integer32 ssIOSent(5)
            |     |  |  +-- -R-- Integer32 ssIOReceive(6)
            |     |  |  +-- -R-- Integer32 ssSysInterrupts(7)
            |     |  |  +-- -R-- Integer32 ssSysContext(8)
            |     |  |  +-- -R-- Integer32 ssCpuUser(9)
            |     |  |  +-- -R-- Integer32 ssCpuSystem(10)
            |     |  |  +-- -R-- Integer32 ssCpuIdle(11)
            |     |  |  +-- -R-- Counter   ssCpuRawUser(50)
            |     |  |  +-- -R-- Counter   ssCpuRawNice(51)
            |     |  |  +-- -R-- Counter   ssCpuRawSystem(52)
            |     |  |  +-- -R-- Counter   ssCpuRawIdle(53)
            |     |  |  +-- -R-- Counter   ssCpuRawWait(54)
            |     |  |  +-- -R-- Counter   ssCpuRawKernel(55)
            |     |  |  +-- -R-- Counter   ssCpuRawInterrupt(56)
            |     |  |  +-- -R-- Counter   ssIORawSent(57)
            |     |  |  +-- -R-- Counter   ssIORawReceived(58)
            |     |  |  +-- -R-- Counter   ssRawInterrupts(59)
            |     |  |  +-- -R-- Counter   ssRawContexts(60)
            |     |  |  +-- -R-- Counter   ssCpuRawSoftIRQ(61)
            |     |  |  +-- -R-- Counter   ssRawSwapIn(62)
            |     |  |  +-- -R-- Counter   ssRawSwapOut(63)
            |     |  |
            |     |  +--ucdInternal(12)
            |     |  |
            |     |  +--ucdExperimental(13)
            |     |  |  |
            |     |  |  +--ucdDlmodMIB(14)
            |     |  |  |  +-- -R-- Integer32 dlmodNextIndex(1)
            |     |  |  |  |....
            |     |  |  |
            |     |  |  +--ucdDiskIOMIB(15)
            |     |  |  |  |
            |     |  |  |  +--diskIOTable(1)
            |     |  |  |     |
            |     |  |  |     +--diskIOEntry(1)
            |     |  |  |        |  Index: diskIOIndex
            |     |  |  |        |
            |     |  |  |        +-- -R-- Integer32 diskIOIndex(1)
            |     |  |  |        |        Range: 0..65535
            |     |  |  |        +-- -R-- String    diskIODevice(2)
            |     |  |  |        |        Textual Convention: DisplayString
            |     |  |  |        |        Size: 0..255
            |     |  |  |        +-- -R-- Counter   diskIONRead(3)
            |     |  |  |        +-- -R-- Counter   diskIONWritten(4)
            |     |  |  |        +-- -R-- Counter   diskIOReads(5)
            |     |  |  |        +-- -R-- Counter   diskIOWrites(6)
            |     |  |  |        +-- -R-- Integer32 diskIOLA1(9)
            |     |  |  |        |        Range: 0..100
            |     |  |  |        +-- -R-- Integer32 diskIOLA5(10)
            |     |  |  |        |        Range: 0..100
            |     |  |  |        +-- -R-- Integer32 diskIOLA15(11)
            |     |  |  |        |        Range: 0..100
            |     |  |  |        +-- -R-- Counter64 diskIONReadX(12)
            |     |  |  |        +-- -R-- Counter64 diskIONWrittenX(13)
            |     |  |  |
            |     |  |  +--lmSensors(16)
            |     |  |     |
            |     |  |     +--lmSensorsMIB(1)
            |     |  |     |
            |     |  |     +--lmTempSensorsTable(2)
            |     |  |     |  |
            |     |  |     |  +--lmTempSensorsEntry(1)
            |     |  |     |     |  Index: lmTempSensorsIndex
            |     |  |     |     |
            |     |  |     |     +-- -R-- Integer32 lmTempSensorsIndex(1)
            |     |  |     |     |        Range: 0..65535
            |     |  |     |     +-- -R-- String    lmTempSensorsDevice(2)
            |     |  |     |     |        Textual Convention: DisplayString
            |     |  |     |     |        Size: 0..255
            |     |  |     |     +-- -R-- Gauge     lmTempSensorsValue(3)
            |     |  |     |
            |     |  |     +--lmFanSensorsTable(3)
            |     |  |     |  |
            |     |  |     |  +--lmFanSensorsEntry(1)
            |     |  |     |     |  Index: lmFanSensorsIndex
            |     |  |     |     |
            |     |  |     |     +-- -R-- Integer32 lmFanSensorsIndex(1)
            |     |  |     |     |        Range: 0..65535
            |     |  |     |     +-- -R-- String    lmFanSensorsDevice(2)
            |     |  |     |     |        Textual Convention: DisplayString
            |     |  |     |     |        Size: 0..255
            |     |  |     |     +-- -R-- Gauge     lmFanSensorsValue(3)
            |     |  |     |
            |     |  |     +--lmVoltSensorsTable(4)
            |     |  |     |  |
            |     |  |     |  +--lmVoltSensorsEntry(1)
            |     |  |     |     |  Index: lmVoltSensorsIndex
            |     |  |     |     |
            |     |  |     |     +-- -R-- Integer32 lmVoltSensorsIndex(1)
            |     |  |     |     |        Range: 0..65535
            |     |  |     |     +-- -R-- String    lmVoltSensorsDevice(2)
            |     |  |     |     |        Textual Convention: DisplayString
            |     |  |     |     |        Size: 0..255
            |     |  |     |     +-- -R-- Gauge     lmVoltSensorsValue(3)
            |     |  |     |
            |     |  |     +--lmMiscSensorsTable(5)
            |     |  |        |
            |     |  |        +--lmMiscSensorsEntry(1)
            |     |  |           |  Index: lmMiscSensorsIndex
            |     |  |           |
            |     |  |           +-- -R-- Integer32 lmMiscSensorsIndex(1)
            |     |  |           |        Range: 0..65535
            |     |  |           +-- -R-- String    lmMiscSensorsDevice(2)
            |     |  |           |        Textual Convention: DisplayString
            |     |  |           |        Size: 0..255
            |     |  |           +-- -R-- Gauge     lmMiscSensorsValue(3)
            |     |  |....
            |     |
            |     +--netSnmp(8072)
            |        |....
            |
            +--security(5)
            |
            +--snmpV2(6)
               |....

さて、snmptranslate のログで随分と長くなってしまいましたが、まとめです。サーバ監視でよく使う MIB - OID はこんな感じでほぼ十分だと思います。このほかに lm-sensor とかを入れている場合は、そこら辺も追加すると、CPU やディスクの温度管理もできます。

OID 監視項目名 説明
メモリ関連
.1.3.6.1.4.1.2021.4.3 memTotalSwap スワップファイルの確保容量(キロバイト単位)
.1.3.6.1.4.1.2021.4.4 memAvailSwap スワップファイルの未使用容量(キロバイト単位)
.1.3.6.1.4.1.2021.4.5 memTotalReal 搭載されている実メモリ(キロバイト単位)
.1.3.6.1.4.1.2021.4.6 memAvailReal 空き実メモリ(キロバイト単位)
.1.3.6.1.4.1.2021.4.11 memTotalFree 総空きメモリ(実空きメモリ+スワップ空き容量)。キロバイト単位
.1.3.6.1.4.1.2021.4.13 memShared 総共有メモリの容量(キロバイト単位)
.1.3.6.1.4.1.2021.4.14 memBuffer 総バッファメモリの容量(キロバイト単位)
.1.3.6.1.4.1.2021.4.15 memCached 総キャッシュメモリ容量(キロバイト単位)
システム・ステータス関連
.1.3.6.1.4.1.2021.11.3 ssSwapIn スワップインにかかった時間(キロバイト/秒)
.1.3.6.1.4.1.2021.11.4 ssSwapOut スワップアウトにかかった時間(キロバイト/秒)
.1.3.6.1.4.1.2021.11.5 ssIOSent ブロックデバイスへの送信にかかった時間(ブロック/秒)
.1.3.6.1.4.1.2021.11.6 ssIOReceive ブロックデバイスからの受信にかかった時間(ブロック/秒)
.1.3.6.1.4.1.2021.11.7 ssSysInterrupts 1秒間にかかった割り込みの回数。クロック割り込みも含む
.1.3.6.1.4.1.2021.11.8 ssSysContext 1秒間に切り替えられたコンテキストスイッチの回数
.1.3.6.1.4.1.2021.11.9 ssCpuUser ユーザーがCPUを使っている割合(百分率)
.1.3.6.1.4.1.2021.11.10 ssCpuSystem システムがCPUを使っている割合(百分率)
.1.3.6.1.4.1.2021.11.11 ssCpuIdle CPUがアイドルである割合(百分率)
ロードアベレージ関連
.1.3.6.1.4.1.2021.10.1.3.1 laLoad.1 1分平均ロードアベレージ
.1.3.6.1.4.1.2021.10.1.3.2 laLoad.2 5分平均ロードアベレージ
.1.3.6.1.4.1.2021.10.1.3.3 laLoad.3 15分平均ロードアベレージ
ディスク関連
1.3.6.1.4.1.2021.9.1.2 dskPath 調査対象となるパス名。disk行の調査するパス名に指定した値
1.3.6.1.4.1.2021.9.1.3 dskDevice dskPathが含まれるデバイス名。/dev/hda1など
1.3.6.1.4.1.2021.9.1.6 dskTotal dskDeviceで指定されるデバイスが格納できる最大容量。キロバイト単位
1.3.6.1.4.1.2021.9.1.7 dskAvail dskDeviceで指定されるデバイスの現在の空き容量。キロバイト単位
1.3.6.1.4.1.2021.9.1.8 dskUsed dskDeviceで指定されるデバイスの現在の利用容量。キロバイト単位
1.3.6.1.4.1.2021.9.1.9 dskPercent dskDeviceで指定されているディスクの使用率を百分率で示した値
1.3.6.1.4.1.2021.9.1.10 dskPercentNode dskDeviceで指定されているディスクのiノードの使用率を百分率で示した値

ちなみに、コマンドで値を確かめる場合は、下記の書式でコマンドを入力します。

snmpwalk -v1 -c <コミュニティ名> <ホスト名> [ 検索範囲 ]

試しにロードアベレージを取得してみたいと思います。

[user@srv01 ~]$ snmpwalk -v1 -c public localhost .1.3.6.1.4.1.2021.10.1.3
UCD-SNMP-MIB::laLoad.1 = STRING: 0.82
UCD-SNMP-MIB::laLoad.2 = STRING: 1.00
UCD-SNMP-MIB::laLoad.3 = STRING: 0.96

本エントリはきっと数ヶ月後の自分に役に立つことと思います。MRTGの設定ファイルや自作の監視スクリプトにお役立てください。

- スポンサーリンク -