2017年1月15日日曜日

ZabbixでESXiのCPU使用率とメモリ使用率を取得しグラフを表示する方法

うちの検証環境はvCenter ServerがないESXiだけの仮想環境となっている。ESXiだけの場合、CPU、メモリなどの情報は直近1時間分しか保存されない。これが短すぎて不便なこともあり、長期的な稼働状態の分析などもできないことから、Zabbixを使って情報を取得し、グラフとして表示させる設定を入れてみた。

なお、最初は情報を取得できず失敗してしまったが、同じ理由ではまる人もいるかもしれないので、敢えて失敗パターンも記載する。

ESXiのホスト名を手動登録してアイテムを作成する(失敗パターン)

先に失敗事象を記載する。今から記載する方法では、zabbix_server.logに以下ログが出て情報取得に失敗する。

[root@t3022ce67 163049]# tal /var/log/zabbix/zabbix_server.log
------------------------------
~(省略)~

  2041:20170114:162720.083 item "t3011es60:vmware.hv.cpu.usage[{$URL},{$UUID}]" became not supported: Unknown hypervisor uuid.
------------------------------

以下に失敗した手順を記載する。

1. 「管理」→「ホスト」にてホストを新規作成する。以下のように「ホスト」タブで、ESXiのホスト名(図の場合はt3011es60)、IPアドレスを手動で登録する
 ※SNMPインターフェースは、別の監視で利用しているだけなので、設定は不要


2. 「テンプレート」タブでは「Template Virt VMware」を追加する
 ※ICMPやSNMPは別の監視で必要なだけなので、設定は不要



3. ここで一度ESXiにvSphere Clientなどでログインし、ユーザーを作成する。ユーザーは読み取り専用で問題ない。今回は「zbxuser」という名前で作成しておく



4. 「マクロ」タブでは、以下の4点を登録する。ホスト名は名前解決できるようにhosts登録などしておくこと

 ・{$PASSWORD} => zbxuserのパスワード
 ・{$URL}            => https://<ESXiのホスト名>/sdk
 ・{$USERNAME}  => zbxuser
 ・{$UUID}           => <ESXiのホスト名>



5. 「管理」→「テンプレート」にて「Template Virt VMware」の「アイテム」を選択する。デフォルトでは以下3つのアイテムが存在する。ここにアイテムを追加する

 ・Event log
 ・Full name
 ・Version



6. 以下のように「CPU usage」という名前でアイテムを作成する



7. 「設定」→「ホスト」で、登録したESXiを選択し「アイテム」を確認すると、「エラー」が「×」となり、「Unknown hypervisor uuid.」と表示されてうまく動かない


というわけで、どうもうまく動かなくて試行錯誤した結果、次の登録方法でうまくいくことがわかった。

ESXiをディスカバリを使って登録する(成功パターン)

1. 「管理」→「ホスト」にてホストを新規作成する。以下のように「ホスト」タブで、ESXiのホスト名ではなく適当な名前(図ではVMware)として、ESXiのIPアドレスを登録する
 ※SNMPインターフェースは、別の監視で利用しているだけなので、設定は不要



2. 「テンプレート」タブでは「Template Virt VMware」を追加する
 ※ICMPやSNMPは別の監視で必要なだけなので、設定は不要


3. ここで一度ESXiにvSphere Clientなどでログインし、ユーザーを作成する。ユーザーは読み取り専用で問題ない。今回は「zbxuser」という名前で作成しておく



4. 「マクロ」タブでは、以下の3点を登録する。ホスト名は名前解決できるようにhosts登録などしておくこと

 ・{$PASSWORD} => zbxuserのパスワード
 ・{$URL}            => https://<ESXiのホスト名>/sdk
 ・{$USERNAME}  => zbxuser


5. しばらくすると作成した「VMware」のホストに設定されているディスカバリによって、以下のようにハイパーバイザーと仮想マシンが自動登録される

 Discover VMware hypervisors: <ESXiのホスト名> ←ディスカバリされたESXi
 Discover VMware VMs: <仮想マシンのホスト名> ←ディスカバリされた仮想マシン


ESXiは「Template Virt VMware Hypervisor」のテンプレートに自動で登録されているが、この中にはCPU使用率やメモリ使用率のアイテムがデフォルトで存在する。

6. 「Template Virt VMware Hypervisor」を選択し「グラフ」を選択する。以下の通りデフォルトでは何も設定されていない


7. 以下のように「CPU usage」と「Used Memory」というグラフを作成する。グラフ作成の際に選択するアイテムは以下の通り

 ・CPU:
   Template Virt VMware Hypervisor: CPU usage


 ・メモリ:
   Template Virt VMware Hypervisor: Total memory
   Template Virt VMware Hypervisor: Used memory
   Template Virt VMware Hypervisor: Ballooned


8. 「監視データ」→「グラフ」選択し、グラフが表示されることを確認する。

・CPUのグラフ



・メモリのグラフ


以上で設定は完了。デフォルトでは90日分のデータが保存され、グラフで確認することが可能となる。