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” が参考になります。詳細は、ベンダ等のサポート情報をご覧下さい。