我看了一下AOS的MIB文件的故事

    この投稿はNutanix Advent Calendar 2018の15日目です。

试用环境

    • みんな大好きTest Drive (今更初めて使うなんて言えない…)

シングルノード
今回はMIBファイルのDLのためだけにログイン…

Prism
NCCのバージョン低くないですか?

设定的地方

転送先設定
Trapは時間なかったですごめんなさい

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进行轮询即可。

以上就是。

bannerAds