はじめに
本ドキュメントでは、機器温度センサー値の監視をするため、個々の OID が表す情報について1つずつ確認し、機器温度センサーの単位やスケールなど把握した上での手順を紹介します。
概要
NX-OS で動作している Nexus シリーズスイッチに対して、SNMP にて温度センサーのモニタリングする場合は、
CISCO-ENTITY-SENSOR-MIB の以下 OID にて温度情報を取得することができます。
- entSensorType (1.3.6.1.4.1.9.9.91.1.1.1.1.1)
- entSensorScale (1.3.6.1.4.1.9.9.91.1.1.1.1.2)
- entSensorPrecision (1.3.6.1.4.1.9.9.91.1.1.1.1.3)
- entSensorValue (1.3.6.1.4.1.9.9.91.1.1.1.1.4)
- entSensorStatus (1.3.6.1.4.1.9.9.91.1.1.1.1.5)
OID |
Description |
Value |
entSensorType
|
センサーのタイプ |
voltsAC(3),voltsDC(4),amperes(5),watts(6),celsius(8),rpm(10), etc. |
entSensorScale |
センサーのスケール |
micro(7),milli(8),units(9),kilo(10),mega(11), etc. |
entSensorPrecision |
センサーの精度 |
(-8..9) |
entSensorValue |
センサーの値 |
(-1000000000..1000000000) |
entSensorStatus |
センサーの状態 |
ok(1),unavailable(2),nonoperational(3) |
また、個々のユニットの対応については Entity-MIB の entPhysicalDescr ( 1.3.6.1.2.1.47.1.1.1.1.2 ) にて確認可能です。
取得シナリオ
今回は、N9K-C93600CD-GX における FRONT / BACK / CPU / ASIC の温度センサー値を取ると想定します。
つまり、show environment や show environment temperature で取得可能な温度センサーが対象となります。
N9K-C93600CD-GX# show environment temperature
Temperature:
--------------------------------------------------------------------
Module Sensor MajorThresh MinorThres CurTemp Status
(Celsius) (Celsius) (Celsius)
--------------------------------------------------------------------
1 FRONT 80 70 37 Ok
1 BACK 60 42 32 Ok
1 CPU 105 80 40 Ok
1 Wolfridge 120 95 64 Ok
N9K-C93600CD-GX#
(1) entPhysicalDescr による対象の確認
温度の単位が celcius であることから celsius(8) を示す entPhysicalIndex をピックアップするのも手ではありますが、先に entPhysicalDescr ( 1.3.6.1.2.1.47.1.1.1.1.2 ) を全て表示させ、対象 entPhysicalIndex を確認します。
コマンド例:snmpwalk -v 2c -c public <A.B.C.D> entPhysicalDescr
% snmpwalk -v 2c -c public <A.B.C.D> 1.3.6.1.2.1.47.1.1.1.1.2
SNMPv2-SMI::mib-2.47.1.1.1.1.2.10 = STRING: "Fabric Stack Root"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.22 = STRING: "28x100/40G + 8x400G QSFP-DD Ethernet Module"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.149 = STRING: "N9K-C93600CD-GX"
omit
SNMPv2-SMI::mib-2.47.1.1.1.1.2.5238 = STRING: "Linecard-1 Port-33"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.38486 = STRING: "module-1 FRONT"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.38487 = STRING: "module-1 BACK"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.38488 = STRING: "module-1 CPU"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.38489 = STRING: "module-1 Wolfridge"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.42710 = STRING: "Module-1 Forwarding Engine-1"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.48854 = STRING: "Transceiver(slot:1-port:1)"
確認対象と思われる FRONT / BACK / CPU / Wolfridge の並びが確認できました。
entPhysicalName(1.3.6.1.2.1.47.1.1.1.1.7) を使用することでも同様の結果が得られます。
(2) entSensorType による単位の確認
次に、entSensorType を確認して、それらが celsius(8) か確認します。
コマンド例:snmpwalk -v 2c -c public <A.B.C.D> entSensorType
% snmpwalk -v 2c -c public <A.B.C.D> 1.3.6.1.4.1.9.9.91.1.1.1.1.1
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.1.38486 = INTEGER: 8
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.1.38487 = INTEGER: 8
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.1.38488 = INTEGER: 8
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.1.38489 = INTEGER: 8
snip
本記事冒頭の表に記載がある通り、 INTEGER: 8 は、celsius を指しています。
(3) entSensorScale によるスケールの確認
次に、entSensorScale を確認して各値のスケールを確認します。
コマンド例:snmpwalk -v 2c -c public <A.B.C.D> entSensorScale
% snmpwalk -v 2c -c public <A.B.C.D> 1.3.6.1.4.1.9.9.91.1.1.1.1.2
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.2.38486 = INTEGER: 9
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.2.38487 = INTEGER: 9
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.2.38488 = INTEGER: 9
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.2.38489 = INTEGER: 9
9 は units(9) となり、倍数がありません。つまり値に対してキロなどのスケールがないことを示します。
(4) entSensorPrecision による精度の確認
精度情報を取得するため、entSensorPrecision を使用します。
コマンド例:snmpwalk -v 2c -c public <A.B.C.D> entSensorPrecision
% snmpwalk -v 2c -c public <A.B.C.D> 1.3.6.1.4.1.9.9.91.1.1.1.1.3
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.3.38486 = INTEGER: 0
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.3.38487 = INTEGER: 0
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.3.38488 = INTEGER: 0
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.3.38489 = INTEGER: 0
(5) entSensorStatus による Status の確認
目標としていた値を entSensorValue で取得する前に、Status を entSensorStatus で確認します。
コマンド例:snmpwalk -v 2c -c public <A.B.C.D> entSensorStatus
% snmpwalk -v 2c -c public <A.B.C.D> 1.3.6.1.4.1.9.9.91.1.1.1.1.5
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.5.38486 = INTEGER: 1
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.5.38487 = INTEGER: 1
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.5.38488 = INTEGER: 1
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.5.38489 = INTEGER: 1
ok(1),unavailable(2),nonoperational(3) であることから、Status が全て OK であることが確認できます。
(6) entSensorValue による温度センサー値の確認
最後に目標としていた各温度センサーの値を entSensorValue で取得します。
コマンド例:snmpwalk -v 2c -c public <A.B.C.D> entSensorValue
% snmpwalk -v 2c -c public <A.B.C.D> 1.3.6.1.4.1.9.9.91.1.1.1.1.4
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.38486 = INTEGER: 36
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.38487 = INTEGER: 32
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.38488 = INTEGER: 40
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.38489 = INTEGER: 64
まとめ
(1) ~ (6) で得た結果をまとめると次のような表になります。
entPhysicalIndex |
entPhysicalDescr |
entSensorType |
entSensorScale |
entSensorPrecision
|
entSensorStatus |
entSensorValue |
CurTemp(℃) |
38486 |
FRONT |
celsius(8) |
units(9) |
0 |
ok(1) |
36 |
36 |
38487 |
BACK |
celsius(8) |
units(9) |
0 |
ok(1) |
32 |
32 |
38488 |
CPU |
celsius(8) |
units(9) |
0 |
ok(1) |
40 |
40 |
38489 |
Wolfridge |
celsius(8) |
units(9) |
0 |
ok(1) |
64 |
64 |
これで、目標としていた show environment や show environment temperature で取得可能な温度センサー値が取得できました。
参考情報
Nexus シリーズ : SNMP 関連ポータル
Nexus シリーズ: MIBのサポートリスト
SNMP を使用する Catalyst 6500/6000 での環境温度の取得方法
IOS-XR: SNMPによる温度センサーモニタリング