Friday, September 23, 2016

snmp 與 VMware ESXi

我任職的公司開發的產品,是基於 open-falcon 的監控軟體。北京快網的人,最近對我提了一個需求,要我用 snmp 去監控 VMware 的 ESXi system。

最初也沒有想得很清楚,一直以為要監控的重點是 Guest machine。直到我跟北京快網的運維再次確認之後,才搞懂,原來要監控的重點是 Host machine 。因為 Guest machine 通常是使用 CentOS ,這種都是可以跑 open-falcon agent ,自然也就不需要使用 snmp 了。然而, Host machine 的作業系統是 ESXi system ,沒有辦法安裝 open-falcon agent,所以才會需要使用 snmp 。

我接到工作的時候,翻了翻文件,很快地就找到了一個 open-source 的套件,叫 swcollector ,是特製的 open-falcon agent,可以用來存取 snmp 。但是,仔細看了它的設置檔之後,發現 swcollector 適合去做監控 switch 的事,但是這次的需求是要監控 ESXi system,其實跟 switch 也差很多。

最關鍵的點是 OID 的部分,因為其實 ESXi system,就跟許許多多的 switch 一樣,它使用自己特別的 OID。我下了 snmpwalk 指令,把 ESXi system 所有的 OID 全部撈回之後,就發現 OID 還真的不是一般的多。這邊還有一個插曲,我本來不知道其實我需要去 VMware 的網站上,下載 VMware 的 mib 檔。所以我撈回來的 OID 裡,會有一部分,一定是用數字呈現。後來我注意到可以去 VMware 的網站上下載 VMware ESXi 專屬的 mib 檔,安裝到 /usr/share/snmp/mibs 之後,才把一些本來看不懂的 OID 變成可愛的英文。

不知不覺,這個工作也即將完成。 https://github.com/humorless/esxicollector 

過去用得很開心的 MRTG, Catci, 底下都是靠這個 snmp 在運作,終於搞懂了 snmp 是怎麼運作的了。