Zabbixを構築していて、今までずっとつまづいていたのESXiの監視。
ローカルな環境のWindowsやLinuxはエージェントやSNMPで大抵の情報を取得できるが、ESXiはZabbixエージェントがインストール出来ないことやSNMPで大した情報が得られないため、ハードウェアの監視やCPUやメモリ・データストアなどの監視が出来ないでいた。

今回、ようやくその手順が分かったのでメモ(・∀・) 

1.まず、WBEMコマンドでハードのステータスを取れるとこまで持っていく。

Zabbixサーバ(CentOS 5 or 6)にwbemcliというコマンドをインストールします。
wbemcliは以下コマンドでサクッと入ります。

yum install -y sblim-wbemcli.x86_64

[監視可能な項目一覧を取得]
wbemcli ecn -noverify -nl 'https://root:パスワード@IPアドレス:5989/root/cimv2'
wbemcli ecn -noverify -nl 'https://root:パスワード@IPアドレス:5989/root/hpq'

rootパスワードとIPアドレスはESXiのです。
上記で監視可能なクラスの一覧をゲットしたら、それらしいクラスにアタックします。

HPサーバ(DL360 G7)は以下でいけましたが、
多分、ハードによって多少の違いはあると思うのでその辺は微調整して下さい。

●温度
wbemcli ei -noverify -nl "https://root:パスワード@IPアドレス:5989/root/cimv2:OMC_NumericSensor" | egrep "ElementName|HealthState"

●ディスク
wbemcli ei -noverify -nl "https://root:パスワード@IPアドレス:5989/root
/cimv2:VMware_StorageVolume" | egrep "ElementName|HealthState"

●アレイコントローラカード
wbemcli ei -noverify -nl "https://root:パスワード@IPアドレス:5989/root
/hpq:SMX_SAArraySystem" | egrep "ElementName|HealthState"

●メモリ
wbemcli ei -noverify -nl "https://root:パスワード@IPアドレス:5989/root
/hpq:SMX_Memory" | egrep "ElementName|HealthState"

●ファン
wbemcli ei -noverify -nl "https://root:パスワード@IPアドレス:5989/root
/hpq:SMX_FAN" | egrep "ElementName|HealthState"

HealthState=5は正常のよう。


2.Zabbixのアイテムとして取得できるよう設定

wbemcliコマンドでハードのステータスが取れることが確認できたら、Zabbixサーバ上で、

/etc/zabbix/zabbix_agentd.d/userparameter.esxi_wbem.conf

を作成し、それぞれ、UserParameterとして定義してやればOK。
定義する時はHealthStateの値だけを取る必要があるので、

UserParameter=FANSTATUS,wbemcli ei -noverify -nl "https://root:パスワード@IPアドレス:5989/root
/hpq:SMX_FAN" | grep -A9 "ElementName=\"Fan Block 1"  | tail -1 | cut -d"=" -f2

などとする。A9の9は ElementName=\"Fan Block 1から何行目にHealthStatusが出ていたかを指定しているので、適宜調整が必要。