我看了一下AOS的MIB文件的故事
- この投稿はNutanix Advent Calendar 2018の15日目です。
试用环境
-
- みんな大好きTest Drive (今更初めて使うなんて言えない…)
シングルノード
今回はMIBファイルのDLのためだけにログイン…


设定的地方


ESXi和其他设备通常使用v2进行snmpwalk,但对于CVM而言,由于采用v3,管理方式变得有些复杂。(变得)
MIB树
-
- まずこれをみないことには始まらない
-
- 世の中にはこんなページもあったりして「このMIBなんの情報だよ…」な具合にとっつきようがなければ参考にしたり(あくまで参考程度)
-
- ちなみにNutanixのEnterpriseIDは41263です。(日常会話でもきっとよく使うのでさっと出てきますよね)
-
- MIB Treeをざっと確認するには snmptranslate が楽で良いですね
EnterpriseIDの部分知りたいときは、.1.3.6.1.4.1 まではおまじないと覚えとくとなお楽です
$ snmptranslate -Tp .1.3.6.1.4.1.41263 -m /usr/share/snmp/mibs/nutanix
+--nutanix(41263)
|
+--softwareVersionTable(1)
| |
| +--svtEntry(1)
| | Index: svtIndex
| |
| +-- -R-- Integer32 svtIndex(1)
| | Range: 1..2147483647
| +-- -R-- String svtControllerVMId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String svtNutanixBootstrap(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String svtNutanixInfrastructure(4)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String svtNutanixCore(5)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String svtNutanixToolchain(6)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String svtNutanixServiceability(7)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String svtLinuxKernel(8)
| Textual Convention: DisplayString
| Size: 0..255
|
+--serviceStatusTable(2)
| |
| +--sstEntry(1)
| | Index: sstIndex
| |
| +-- -R-- Integer32 sstIndex(1)
| | Range: 1..2147483647
| +-- -R-- String sstControllerVMId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstControllerVMStatus(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstZeusStatus(4)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstScavengerStatus(5)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstMedusaStatus(6)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstPithosStatus(7)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstStargateStatus(8)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstChronosStatus(9)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstCuratorStatus(10)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstPrismStatus(11)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstAlertManagerStatus(12)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstStatsAggregatorStatus(13)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String sstSysStatCollectorStatus(14)
| Textual Convention: DisplayString
| Size: 0..255
|
+--diskStatusTable(3)
| |
| +--dstEntry(1)
| | Index: dstIndex
| |
| +-- -R-- Integer32 dstIndex(1)
| | Range: 1..2147483647
| +-- -R-- String dstDiskId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String dstControllerVMId(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String dstSerial(4)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- Counter64 dstNumRawBytes(5)
| +-- -R-- Counter64 dstNumTotalBytes(6)
| +-- -R-- Counter64 dstNumFreeBytes(7)
| +-- -R-- Counter64 dstNumTotalInodes(8)
| +-- -R-- Counter64 dstNumFreeInodes(9)
| +-- -R-- Counter64 dstAverageLatency(10)
| +-- -R-- Counter64 dstIOBandwidth(11)
| +-- -R-- Counter64 dstNumberIops(12)
| +-- -R-- EnumVal dstState(13)
| Values: online(1), offline(2)
|
+--controllerVMResourceTable(4)
| |
| +--crtEntry(1)
| | Index: crtIndex
| |
| +-- -R-- Integer32 crtIndex(1)
| | Range: 1..2147483647
| +-- -R-- String crtControllerVMId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- Counter64 crtMemory(3)
| +-- -R-- Integer32 crtNumCpus(4)
| +-- -R-- String crtName(5)
| Textual Convention: DisplayString
| Size: 0..255
|
+--storagePoolInformationTable(7)
| |
| +--spitEntry(1)
| | Index: spitIndex
| |
| +-- -R-- Integer32 spitIndex(1)
| | Range: 1..2147483647
| +-- -R-- String spitStoragePoolId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String spitStoragePoolName(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- Counter64 spitTotalCapacity(4)
| +-- -R-- Counter64 spitUsedCapacity(5)
| +-- -R-- Integer32 spitIOPerSecond(6)
| +-- -R-- Counter64 spitAvgLatencyUsecs(7)
| +-- -R-- Counter64 spitIOBandwidth(8)
|
+--containerInformationTable(8)
| |
| +--citEntry(1)
| | Index: citIndex
| |
| +-- -R-- Integer32 citIndex(1)
| | Range: 1..2147483647
| +-- -R-- String citContainerId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String citContainerName(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- Counter64 citTotalCapacity(4)
| +-- -R-- Counter64 citUsedCapacity(5)
| +-- -R-- Integer32 citIOPerSecond(6)
| +-- -R-- Counter64 citAvgLatencyUsecs(7)
| +-- -R-- Counter64 citIOBandwidth(8)
|
+--hypervisorInformationTable(9)
| |
| +--hypervisorEntry(1)
| | Index: hypervisorIndex
| |
| +-- -R-- Integer32 hypervisorIndex(1)
| | Range: 1..2147483647
| +-- -R-- String hypervisorId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String hypervisorName(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- Unsigned hypervisorVmCount(4)
| +-- -R-- Unsigned hypervisorCpuCount(5)
| +-- -R-- Unsigned hypervisorCpuUsagePercent(6)
| +-- -R-- Counter64 hypervisorMemory(7)
| +-- -R-- Unsigned hypervisorMemoryUsagePercent(8)
| +-- -R-- Unsigned hypervisorReadIOPerSecond(9)
| +-- -R-- Unsigned hypervisorWriteIOPerSecond(10)
| +-- -R-- Counter64 hypervisorAverageLatency(11)
| +-- -R-- Counter64 hypervisorIOBandwidth(12)
| +-- -R-- Counter64 hypervisorRxBytes(13)
| +-- -R-- Counter64 hypervisorTxBytes(14)
| +-- -R-- Counter64 hypervisorRxDropCount(15)
| +-- -R-- Counter64 hypervisorTxDropCount(16)
|
+--vmInformationTable(10)
| |
| +--vmEntry(1)
| | Index: vmIndex
| |
| +-- -R-- Integer32 vmIndex(1)
| | Range: 1..2147483647
| +-- -R-- String vmId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String vmName(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String vmHypervisorId(4)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String vmPowerState(5)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- Unsigned vmCpuCount(6)
| +-- -R-- Unsigned vmCpuUsagePercent(7)
| +-- -R-- Counter64 vmMemory(8)
| +-- -R-- Unsigned vmMemoryUsagePercent(9)
| +-- -R-- Unsigned vmReadIOPerSecond(10)
| +-- -R-- Unsigned vmWriteIOPerSecond(11)
| +-- -R-- Counter64 vmAverageLatency(12)
| +-- -R-- Counter64 vmIOBandwidth(13)
| +-- -R-- Counter64 vmRxBytes(14)
| +-- -R-- Counter64 vmTxBytes(15)
| +-- -R-- Counter64 vmRxDropCount(16)
| +-- -R-- Counter64 vmTxDropCount(17)
|
+--controllerStatusTable(11)
| |
| +--cstEntry(1)
| | Index: cstIndex
| |
| +-- -R-- Integer32 cstIndex(1)
| | Range: 1..2147483647
| +-- -R-- String cstControllerVMId(2)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String cstControllerVMStatus(3)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String cstDataServiceStatus(4)
| | Textual Convention: DisplayString
| | Size: 0..255
| +-- -R-- String cstMetadataServiceStatus(5)
| Textual Convention: DisplayString
| Size: 0..255
|
+-- -R-- String clusterName(501)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- String clusterVersion(502)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- String clusterStatus(503)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- Counter64 clusterTotalStorageCapacity(504)
+-- -R-- Counter64 clusterUsedStorageCapacity(505)
+-- -R-- Counter64 clusterIops(506)
+-- -R-- Counter64 clusterLatency(507)
+-- -R-- Counter64 clusterIOBandwidth(508)
+--ntxTrap(991)
|
+--ntxAlert(999)
|
+-- -R-- Counter64 ntxAlertCreationTime(1)
+-- -R-- String ntxAlertDisplayMsg(2)
Textual Convention: DisplayString
Size: 0..1024
如果抽取要点的话(※由于只是随意解释,如果有不对的地方,请指正,谢谢)。
-
- softwareVersionTable(1)
まんまです(cvmのソフトバージョン等)
serviceStatusTable(2)
各種サービス(コンポーネント)のステータス
diskStatusTable(3)
結構詳細に取れると思います
シリアルも拾えるのでどのディスクがとかまで追えます
controllerVMResourceTable(4)
CVMのリソース状況
storagePoolInformationTable(7)
ストレージプール単位のリソース状況
containerInformationTable(8)
ストレージコンテナ単位の状況
hypervisorInformationTable(9)
ハイパーバイザーの状況
VM数が拾えたりするのでどのノードにいくつVMが乗っかってるとかはすぐわかります
vmInformationTable(10)
ゲストVMの情報
乗っているノード(id)や電源状態だけでなく、プロビジョニングしたvCPUやメモリもわかる
ここのVMのLatencyやら使用帯域やらパケロス具合も拾える
controllerStatusTable(11)
CVMの稼働状況(↑のsstよりメタ的な感じ)
ここで拾えてるのは主に↓だったと思います。
ControllerVMStatus(Genesis)
DataServiceStatus(Stargate)
MetadataServiceStatus(Cassandra)
clusterName(501)
clusterVersion(502)
clusterStatus(503)
clusterTotalStorageCapacity(504)
clusterUsedStorageCapacity(505)
clusterIops(506)
clusterLatency(507)
clusterIOBandwidth(508)
この辺はクラスタ全体の状況
ntxTrap(991)
ntxAlert(999)
これトラップ
昔なかった…よな…?(4.x台はなくて5.xから入った?)
Nutanix(CVM?)和SNMP
之前我因工作需要一直在忙着设置各种设备和服务的监控,但是使用SNMP来进行Nutanix的监控相当繁琐。(这也要根据使用的监控工具而定)
比如,像Zabbix这样的工具,由于有提供模板,所以只要使用它就能够轻松地建立起相应的监控环境。(当然通知和报警的设置是另外的事情)
-
- Nutanix Template for Zabbix
NutanixをZabbixで監視してみる/@smzksts
在进行Nutanix的SNMP监视时需要注意的是,为了获取每个CVM的信息,单独对每个CVM进行轮询只会增加负载而没有太多意义(集群越大,负载越高)。实际上,无论对哪个节点进行轮询,都会返回相同的MIB表。因此,我认为只需对集群的VIP进行轮询即可。
以上就是。