【ioDrive】SNMPでioDriveの様々な情報を参照する方法

【ioDrive】SNMPでioDriveの様々な情報を参照する方法

【ioDrive】SNMPでioDriveの様々な情報を参照する方法 はてなブックマーク - 【ioDrive】SNMPでioDriveの様々な情報を参照する方法


ioDrive/ioDrive2 の稼働状況 ( Health Status ) を知るためには、fio-status コマンドを使う方法があります。しかし、毎回サーバにログインし、コマンドラインで確認するのは、あまり現実的ではありません。

そのような場合は、SNMP を用いた ioDrive の状況確認が手軽です。一度設定を済ませてしまえば、SNMP を扱える監視ツールと連携し、アラート送信やリソース推移の確認に活用することができます。

本記事は、snmpd で ioDrive の MIB を取得するための設定方法と、主要な OID についての説明です。

■概要

ioDrive の情報は、SNMP サブエージェント “fio-snmp-agentx” を通して、snmpd が AgentX プロトコルを経由して取得します。そのため、対象サーバでは snmpd をセットアップします。外部の監視サーバから監視するためには、snmpd が参照出来るよう、個別に snmpd.conf の調整が必要です。

なお、以下手順は RHEL において ioDrive2 のデータを参照する場合です。詳細はマニュアルをご覧下さい。

※お約束:当記事は”参考情報”として snmpd を通して取得する方法を記載いたしました。しかし、メーカおよびベンダによる動作確認ならびにサポートを保証するものではありません。畏れ入りますが、ご了承ください。 ←と、一応(;´Д`)

■設定手順(1/2) fio-snmp-agentx のセットアップ

まずはじめに、製品同梱の USB または、製品サポートページから fio-snmp-agentx パッケージをダウンロードします。ダウンロードしたあとは、RPM を使ってセットアップします。

# rpm -ivh ./fio-snmp-agentx-1.x.x86_64.rpm

設定ファイルをコピーします(設定がデフォルトのままでよければ、この作業は不要)。

# cp /usr/share/doc/fio-snmp-agentx/conf/fio-snmp-agentx.conf /etc/snmp/

エージェントを起動し、実行中である事を確認。

# /sbin/service fio-snmp-agentx start
# /sbin/service fio-snmp-agentx status
fio-snmp-agentx fio-snmp-agentx (pid  4214) を実行中...

起動すると、ログ /var/log/fio/fio-snmp-agentx.log に “NET-SNMP version 5.5.1 AgentX subagent connected” 等の表示がされます。起動しない場合は何かエラーが起こっていますので、このログの内容を確認します。

■設定手順(2/2) snmpd.conf のセットアップ

net-snmp モジュールを予めセットアップします。セットアップ後、/etc/snmp/snmpd.conf の末尾付近などで AgentX の指定を追記しておきます。

# iodrive
master agentx

実際には、このほか、適切なコミュニティ名やセキュリティ名の設定が必要です。

※snmpd.conf 例:コミュニティ名 iodrivecheck 、リモート 192.168.100.10 とローカル 127.0.0.1 からのアクセスを許可。エージェントは 127.0.0.1 。

com2sec resourceCheck 192.168.100.10/32 iodrivecheck
com2sec resourceCheck 127.0.0.1/32 iodrivecheck
group   resourceGroup v2c resourceCheck
view    resourceView  included   .1
access  resourceGroup  "" any noauth exact resourceView none none
rocommunity iodrive 192.168.100.10
rocommunity iodrive 127.0.0.1
agentaddress 127.0.0.1:161

設定後は snmpd を再起動します。

# /sbin/service snmpd restart

動作確認は、snmpwalk などを用います。ioDrive 用の OID は “1.3.6.1.4.1.30018” なので、正常にアクセスが出来れば、次のようにして値を取得します。

# snmpwalk -On -v 2c -c iodrivecheck 127.0.0.1 1.3.6.1.4.1.30018
.1.3.6.1.4.1.30018.1.1.1.0 = INTEGER: 1
.1.3.6.1.4.1.30018.1.1.2.0 = INTEGER: 16
.1.3.6.1.4.1.30018.1.1.3.0 = INTEGER: 2
.1.3.6.1.4.1.30018.1.2.1.1.1.1.26 = INTEGER: 26
.1.3.6.1.4.1.30018.1.2.1.1.1.2.26 = INTEGER: 2
(略)

正常に取得できない場合は、一般的な OID の取得が可能かどうかや、各種のログの内容を確認してください。リモートから取得できない場合は、まずローカルで取得できるかどうかや、ネットワーク設定の確認が必要な場合もあります。

■ioDrive 用の MIB 情報と、ステータス監視に有用な OID の確認

MIB OID の詳細は fio-snmp-mib パッケージの “/usr/share/fio/mib/fioIoDimm.mib” が参考になります。配付ユーティリティの中に、”fio-snmp-mib-xxx.x86_64.rpm” というパッケージがあります。次のようにセットアップすると、ファイルが設置されます。

# rpm -ivh fio-snmp-mib-3.1.4.111-1.0.x86_64.rpm
準備中...                ########################################### [100%]
   1:fio-snmp-mib           ########################################### [100%]

展開された fioIoDimm.mib を参照します。

この中で、異常・障害検知に役立ちしそうな OID をみてみます。デバイスの状態は、次の項目が参考になります。

  • デバイスのインデックス ( fusionIoDimmInfoIndex )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.1
  • ioDrive の物理ステータス ( fusionIoDimmInfoStatus )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.2
    • 正常性の確認。ok(2) は正常値。
  • ioDrive の状態 ( fusionIoDimmInfoState )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.12
    • OS 側からどのように認識されているか。attached(2) は正常。
      他に error(4) や formatting(9) 等
  • ミニマル・モード ( fusionIoDimmInfoMinimalModeReason )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.30
    • 正常値は notInMinimalMode(7)
  • 書き込み抑制理由 ( fusionIoDimmInfoReducedWriteReason )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.31
    • 正常値は none(0)

ステータスの変動や抑制モードの検出は、障害の迅速な把握に役立ちそうです。デバイスの環境情報も、参考になりそうなものがあります。

  • デバイス内部温度 [℃] ( fusionIoDimmInfoInternalTemp )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.24
  • PCI Express 供給電圧 [mV] ( fusionIoDimmInfoMilliVolts )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.32
  • 供給電流 [mA] ( fusionIoDimmInfoMilliAmps )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.37
  • 消費電力 [mW] ( fusionIoDimmInfoMilliWatts )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.35
  • 抑制レベル( fusionIoDimmInfoActualGoverningLevel )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.48
    • 正常値は none(0)
  • 寿命抑制レベル ( fusionIoDimmInfoLifespanGoverningLevel )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.49
    • 正常値は none(0)
  • 電源抑制レベル ( fusionIoDimmInfoPowerGoverningLevel )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.50
    • 正常値は none(0)
  • 温度抑制レベル ( fusionIoDimmInfoThermalGoverningLevel )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.51
    • 正常値は none(0)
  • RAM 使用状況(現在値) ( fusionIoDimmExtnCurrentRAMUsageU )
    • 1.3.6.1.4.1.30018.1.2.2.1.1.33
  • RAM 最大値 ( fusionIoDimmExtnPeakRAMUsageU )
    • 1.3.6.1.4.1.30018.1.2.2.1.1.35
  • RAM 最小値 ( fusionIoDimmExtnPeakRAMUsageL )
    • 1.3.6.1.4.1.30018.1.2.2.1.1.36

その他、ヘルス状況の変化や、総読み書き容量も参考になりそうです。

  • ヘルス状況 ( fusionIoDimmInfoHealthPercentage )
    • 1.3.6.1.4.1.30018.1.2.1.1.1.25
    • 出荷時は 100% 。使用するにつれて減少。
  • 総読み込み容量 [byte] = fusionIoDimmExtnBytesReadU * (2^32-1) +
    fusionIoDimmExtnBytesReadL
    ※ fusionIoDimmExtnBytesReadU = 1.3.6.1.4.1.30018.1.2.2.1.1.12
    ※ fusionIoDimmExtnBytesReadL = 1.3.6.1.4.1.30018.1.2.2.1.1.13
  • 総書き込み容量 [byte] = fusionIoDimmExtnBytesWrittenU * (2^32-1) +
    fusionIoDimmExtnBytesWrittenL
    ※ fusionIoDimmExtnBytesWrittenU = 1.3.6.1.4.1.30018.1.2.2.1.1.14
    ※ fusionIoDimmExtnBytesWrittenL = 1.3.6.1.4.1.30018.1.2.2.1.1.15

その他、ステータスの変化時には、SNMP Trap を通知することもできます。詳しくは fioIoDimm.mib の中を参照ください。

■参考

ユーザガイド “ioMemory VSL 2.x User Guide for Linux”
※ Fusion-io社の support 登録があれば、”KB – ioDrive Status Alerts” や “KB484 – Setting Up SNMP” が参考になります。詳細は、ベンダ等のサポート情報をご覧下さい。