G1BS.0N

Tech Memo

Zabbix2.0でESXiのVMごとに監視してみる

| Comments

vSphere APIを使えば、ESXiだけじゃなくて、VMごとのCPU、メモリなんかのステータスも取得てきます。 取得した値をZabbixに食わせて、Zabbixで監視してみます。 VMwareのサイトにPerlのSDKがありますが、書き方が分かりにくかったので、 今回はRubyのRbVmomiを使ってみます。

RbVmomi

まずはインストール

1
gem install rbvmomi

使い方

1
require 'rbvmomi'

これでステータスが取れます。簡単です。
取得する値は、 VMware vSphere API Reference Documentation とか https://(vCenter)/mob を参照します。

Zabbixへの取込み方は、 ESXi 4.0 Hardware and Software Monitoring VMWare を参考にして、

  1. 取得した値をローカルにテキストで保存する
  2. それをZabbix AgentのUserParameterで取得する

というやり方にしてみます。
上記のサイトでは1つのファイルにしていますが、VMごとに取得したいので、 ついでに、ESXi、データストアのステータスも取得したいと思います。
VM、ESXi、データストアそれぞれをZabbixに監視ホストとして登録しようと思うので、それぞれ別ファイルにしてみます。

RbVmomiスクリプト

で、スクリプトはこんな感じになりました。

/tmp/vsphere にファイルを保存するのdで、zabbixの実行ユーザに書き込み権を与えておきます。

chown zabbix:zabbix /var/vsphere

引数にvCenter(or ESXi)のIPアドレス、ユーザ名、パスワードを指定して実行します。

su -u zabbix rbvmomi-zabbix.rb 192.168.1.1 root password

成功すれば、/tmp/vspere以下にESXi、データストア、VMごとのファイルができます。

Zabbix設定

次はZabbix側です。

まず、APIからのデータ取得は結構時間がかかるので、サーバ側、エージェント側両方のタイムアウトを30秒にして、再起動しておきます。

  • /etc/zabbix/zabbix_server.conf
1
Timeout=30
  • /etc/zabbix/zabbix_agentd.conf
1
TImeout=30

テンプレートをインポートします。

Zabbix UserParameterの設定

下記のファイルを/etc/zabbix/zabbix_agentd.d/以下に保存します。

vCenterの登録

Zabbixにホストとして、vCenterを登録します。

ホスト
- ホスト名:適当
- エージェントのIPアドレス:127.0.0.1
- ポート:10050

テンプレート
- インポートしたvCenter用テンプレート

マクロ
- {$HOST} : IPアドレス
- {$USERNAME} : ユーザ名
- {$PASSWORD} : パスワード

これで、スクリプトが設定した間隔で実行されます。

ESXi、データストア、VMの登録

ホスト
- ホスト:各登録名
- IPアドレス:127.0.0.1
- ポート:10050

テンプレート
- インポートしたESXi、データストア、VM用テンプレート

名前に「:」が含まれていると、登録できないので、「-」に変換して登録してください。

Comments