IBM CloudのBare Metal Servers for VPC上に構成されたVMware vSphere環境をZabbixで監視する(テンプレート編)

# はじめに

このシリーズでは、IBM CloudのBere Metal Servers for VPC上に構成されたVMware vSphereの環境をZabbixで監視する方法について複数の記事に分けて紹介しています。
1. [IBM CloudのBare Metal Servers for VPC上に構成されたVMware vSphere環境をZabbixで監視する(環境構築編)](https://qiita.com/ytada/items/549ca6b5b2dff7c3ef56)
2. [IBM CloudのBare Metal Servers for VPC上に構成されたVMware vSphere環境をZabbixで監視する(テンプレート編)](https://qiita.com/ytada/items/67eef56287f61fe6c0ce) -> この記事
3. [IBM CloudのBare Metal Servers for VPC上に構成されたVMware vSphere環境をZabbixで監視する(SNMP Trap編)](https://qiita.com/ytada/items/e3e269bb2c59f1ba3bd2)
4. [IBM CloudのBare Metal Servers for VPC上に構成されたVMware vSphere環境をZabbixで監視する(SSHチェック編)](https://qiita.com/ytada/items/ab4deb79cad215d562f7)

この記事では、監視方法の検討や考慮点、Zabbixでのテンプレート適用における設定方法について書いていきます。

## Zabbixでの監視方法

Zabbixでは、監視対象であるデバイスのことを「ホスト」と呼び、様々な方法を用いてホストからデータを収集することができます。また、ホストから収集する個々の監視メトリックのことを「アイテム」と呼び、ホストにアイテムを追加することで実際の監視データが収集されます。

アイテムには[18種類のデータ収集方法](https://www.zabbix.com/documentation/current/en/manual/config/items/itemtypes)が用意されています。エージェントをホストにインストールするだけではなく、例えばホストからのSNMP Trapを受信したり、IPMIからハードウェア情報を確認したり、SSH接続を確立してコマンドを定期実行したり、特定のURLにリクエストを送信したりすることで様々なメトリックを収集することが可能です。かなり自由度の高い設計が可能であるため、監視を実施する前に、サービスを継続するためにはどのような項目を監視する必要があり、障害を検知した場合にどのようなプロセスで対応するかといった要件定義を適切に行う必要があると思います。

## 監視対象

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/eca30a33-4c95-3d91-83b6-df397edceb38.png)

今回はホストとしてESXiとvCenter Server Applianceを対象としています。また、上記で記載したような詳細な要件定義は行っていません。 **このシリーズでは、それぞれの方法でESXiとvCSAからどのようなデータを取得することができるかを確認し、IBM Cloudを実運用する上で必要となる監視項目と、その取得方法を検討することをゴールとしたいと思います。**

# 監視の実施

ではZabbixで環境を監視していきます。個別にアイテムを設定する前にまずはZabbixで用意されているテンプレートを適用することを検討します。

:::note
vSphere上のVMとして稼働しているLinuxやWindows等の通常のサーバーを監視対象とする場合、Zabbix Agentの導入を最初に考えることが一般的だと思います。しかし今回は監視対象がESXiとvCenterであるため、エージェントの導入はサポートされていません。
:::

## テンプレートの適用

Zabbixにはテンプレートという概念があります。複数のアイテムやトリガー、グラフ等の監視設定がセットになったもので、ホストに適用することで複数のホストの監視設定を一元的に管理することが可能となります。

テンプレートは自分自身で新規作成することも可能ですが、Zabbix側であらかじめ用意されているテンプレートを活用することができます。ZabbixのUIで「設定」->「テンプレート」からテンプレートの一覧を確認することができます。VMware環境に適用することのできるテンプレートには下記のようなものがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/c3935873-1159-be40-883a-891c5b34f11d.png)

「VMware Guest」はvSphere上の仮想マシンに、「VMware Hypervisor」はESXiに適用するためのテンプレートです。(後述しますが、実際はこの2つのテンプレートは手動で適用することはしません。)また、「VMware」テンプレートには[ディスカバリルール](https://www.zabbix.com/documentation/current/en/manual/discovery/low_level_discovery)が含まれており、テンプレートを適用することで自動的にESXiとESXi上の仮想マシンを検出し、ホストとして追加してくれます。

### Zabbix Serverの設定ファイルの変更

テンプレートを適用する前に、Zabbix側でVMwareの監視を実施するように設定ファイルを変更する必要があります。`/usr/local/etc/zabbix_server.conf`を開き、VMware Collectorsの値を変更します。

```conf:/usr/local/etc/zabbix_server.conf
### Option: StartVMwareCollectors
#	Number of pre-forked vmware collector instances.
#
# Mandatory: no
# Range: 0-250
# Default:
StartVMwareCollectors=2
```
VMware Collectorsの数については監視対象のVMwareサービスの数に依存します。下記を参考にしてください。

https://www.zabbix.com/documentation/current/en/manual/vm_monitoring

変更後にZabbix Serverを再起動します。

:::note
vSphere環境の監視を実施するにはZabbixでlibcurlとlibxml2モジュールが有効化されている必要があります。libcurlとlibxml2をサーバーにインストールし、Zabbixをコンパイルする際に`--with-libcurl`と`--with-libxml2`オプションを付与してください。
:::

### VMwareテンプレートの適用

テンプレートを適用するためのホストを作成し、そのホストにテンプレートを適用します。
手順については下記の記事を参考にしました。

https://qiita.com/infra_buld/items/80a415c6f8ec6b7646f0

Zabbixのメニューから「設定」->「ホスト」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/de9d0446-a95c-e47c-1961-42a107324eba.png)

画面右上の「ホストの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/5603f1c6-bc4c-5365-bc86-363948a48eeb.png)

このホストは特定のデバイスではなく、VMware vSphereサービス全体を対象としているため、ホスト名には「VMware vSphere」等と入力します。また、テンプレートとして「Templates」ホストグループの中の「VMware」テンプレートを選択し、グループを「VMware」に設定します。
インターフェースに関しては「追加」->「エージェント」と選択して1つ追加し、デフォルトの設定のままで問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/d6eb07c3-31d6-6c32-5183-9b9f75b9302b.png)


「マクロ」タブで「継承したマクロとホストマクロ」を選択します。それぞれの項目に対して「変更」をクリックし、下記のように値を変更します。

- {$VMWARE.PASSWORD}　→　vCenterのログインパスワード
- {$VMWARE.URL}　→　vCenterのSDK URL(`https://<vCenter_IP_or_FQDN>/sdk`)
- {$VMWARE.USERNAME} → vCenterのログインユーザ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/7482f96a-1eac-868a-cc39-69c2a9064836.png)

入力が完了したら「追加」をクリックし、ホストを追加します。ディスカバリールールの監視間隔が1時間になっているため、各ホストの検出には最大1時間かかります。

正しくホストが検出されると、ESXiやその上の仮想マシンがホストに自動的に登録されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/1bd23870-dae4-c186-7c24-2a2dd0cf997a.png)

### 監視項目の詳細

検出されたホストにおいて、どのような項目が監視される設定となっているか確認していきます。

#### ESXi

まずはESXiに関して、前述した通りVMware Hypervisorというテンプレートが自動的に適用されています。「アイテム」から監視メトリックを確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/6d1f724c-8703-ff8c-0d1c-574b7aadf86b.png)
クラスターやデータセンターの名称、サーバーのモデルといった構成に関する概要レベルの情報から、CPUやメモリの使用率やpingによる死活監視といったリソースの状況まで、様々な項目を取得することができています。

Overall statusではESXiのステータスを監視しています。ESXiのアラームと連動してGreen、Yellow、Redの3段階で状態を確認することができ、ホストの大まかな状態を把握することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/b9cb45a1-303e-51f6-2ed7-3c45924f1651.png)

また、Hypervisor pingは定期的にpingを実行するいわゆる死活監視をおこなっています。トリガーが設定されており、ホストにpingが到達しなかった場合にトリガーが発射されるように設定されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/434c4149-244a-0192-9699-eb76540cd4ca.png)

Get sensorsというアイテムではセンサーデータを監視できるようですが、VMwareではセンサーデータをIPMIから取得しており、かつIBM CloudのBMS for VPCではIPMIへの通信が許可されていないため、情報は表示されていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/ede87466-0400-c637-0fd3-522e91d5444b.png)

また、これらのアイテムは全てVMwareのvSphere APIに対する[シンプルチェック](https://www.zabbix.com/documentation/current/en/manual/config/items/itemtypes/simple_checks)を用いて監視が行われており、エージェントを導入することなく監視を実施しています。

#### vCenter Server Appliance

続いて、vCenterに対してどのような項目が設定されているか確認します。vCenterにはVMware Guestという仮想マシン用のテンプレートが適用されています。

vCenterでは、より多くの種類の監視メトリックが定義されています。ESXiと同様の情報に加えて、Network Interfaceに対するパケットの送受信量やハードディスクに対する読み書きのリクエスト数、ファイルシステムの空き容量などといった統計情報を確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103277/e6616171-4e5b-2f49-d10a-97a056206154.png)

### テンプレートの適用により監視できる項目

以上より、テンプレートの適用によって主に **リソースの使用状況を監視できる** ことがわかりました。 **ESXiのステータスの監視** やシンプルな **死活監視** は実施されていますが、実運用を考慮すると障害の発生箇所を特定するためにより詳細な項目が監視できると良いと感じました。


# あとがき

今回は監視を始めるにあたって、vSphere環境全体を検出することのできるテンプレートを適用しました。次回はより詳細なデータを取得することのできそうなSNMP Trapによる監視を実施します。

次の記事はこちら

https://qiita.com/ytada/items/e3e269bb2c59f1ba3bd2