前の記事では、Zabbix5.0系で監視を行いましたが今回は、Zabbix Appliance 6.0でvCenter Server7.0の監視設定を入れていきたいと思います。
期待する目標
本手順で期待する目標は以下の通りです。
- ZabbixにVMware製品の設定を行うことができる
- ZabbixにvCenterのアイテム登録ができる
- vCenterの監視ができる
前提条件
今回使用するZabbixのスペックは以下の通りです。
- CPU : 2vCPU
- MEM : 4GB
- DISK : 100GB
なお、ZabbixはApplianceを使用しています。
ZabbixにvCenterの設定を行うため、ZabbixにSSHできる環境も必要となります。
また、ZabbixでvCenterを監視するには、vCenterの認証情報が必要となります。
Zabbixサーバの設定
ZabbixにSSHを行います。
Zabbixの設定は以下にあるため、必要に応じて設定ファイルのバックアップを行います。
Zabbix conf : /etc/zabbix/zabbix_server.conf
[zabbix_server.conf]の以下の個所を編集することでVMwareの設定を有効化することができます。
### Option: StartVMwareCollectors
# Number of pre-forked vmware collector instances.
#
# Mandatory: no
# Range: 0-250
# Default:
# StartVMwareCollectors=0
#StartVMwareCollectorsのコメントアウトを外し、設定値を1以上にする。
StartVMwareCollectors=2
### Option: VMwareFrequency
# How often Zabbix will connect to VMware service to obtain a new data.
#
# Mandatory: no
# Range: 10-86400
# Default:
# VMwareFrequency=60
#VMwareFrequency=のコメントアウトを外す。
VMwareFrequency=60
### Option: VMwarePerfFrequency
# How often Zabbix will connect to VMware service to obtain performance data.
#
# Mandatory: no
# Range: 10-86400
# Default:
# VMwarePerfFrequency=60
#VMwarePerfFrequencyのコメントアウトを外す。
VMwarePerfFrequency=60
### Option: VMwareCacheSize
# Size of VMware cache, in bytes.
# Shared memory size for storing VMware data.
# Only used if VMware collectors are started.
#
# Mandatory: no
# Range: 256K-2G
# Default:
# VMwareCacheSize=8M
#VMwareCacheSizeのコメントアウトを外す。
VMwareCacheSize=8M
### Option: VMwareTimeout
# Specifies how many seconds vmware collector waits for response from VMware service.
#
# Mandatory: no
# Range: 1-300
# Default:
# VMwareTimeout=10
# VMwareTimeoutのコメントアウトを外す。
VMwareTimeout=10
[StartVMwareCollectors]はVMwareのデータを収集するプロセス数を指定しています。
監視対象のvCenter*2するように設定しています。
また、大規模な環境だとvCenterからの監視ではなく、ESXiレベルで監視を入れることが推奨されています。
[VMwareFrequency]はVMware製品の監視を行う最小間隔を設定します。
多分60secondsだと思いますが、必要に応じて監視間隔を長めにすることで、監視による処理詰まりを解消することができるらしいです。(小規模環境なので、問題が発生したことはない)
[VMwarePerfFrequency]は、VMware製品のパフォーマンスデータを取得する最小間隔を設定します。
これもデフォルトで60secondsだと思いますが、こちらも同様に監視間隔の調整を行ってください。(こちらも問題が発生したことはありません。)
[VMwareCacheSize]はVMware製品のデータを格納するキャッシュサイズの設定となります。
これも規模により調整してください。ついでに小規模環境では問題になったことはありません。
[VMwareTimeout]はVMware製品のデータを取得する際のタイムアウト時間となります。
デフォルトで10secondsだと思うので、これも規模により調整してください。
色々と記載しましたが、StartVMwareCollectors以外はほぼデフォルトです。
大規模な環境だと監視のチューニングは必要だと思いますが、よっぽどのことが無い限りデフォルトの環境で問題ないと思います。
設定が完了したら、設定を保存します。
保存が完了したら、以下のコマンドを実行してZabbixのサービスを再起動します。
[root@xxxxx ~]# sudo systemctl restart zabbix-server
[root@xxxxx ~]# systemctl status zabbix-server
● zabbix-server.service - Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-08-27 13:50:48 JST; 10s ago
Process: 3596240 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 3596242 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 3596245 (zabbix_server)
Tasks: 58 (limit: 24876)
Memory: 65.2M
CGroup: /system.slice/zabbix-server.service
サービス再起動後、サービスが上がっていることを確認します。
以上でZabbix側の設定は完了です。
vCenter監視設定
Zabbix自体の設定が完了したら、vCenterの監視設定を行っていきます。

Zabbixのコンソールから[管理]-[一般設定]-[マクロ]を選択します。

[マクロ]より、[追加]を選択します。

マクロの追加より、以下のマクロを追加します。なお、本設定を行いましたが、なぜかテンプレートに適用されず、結果的にテンプレートにも同様の設定を行いました。
2022/09/02訂正
Zabbixのマクロの継承についてご指摘があり、理解することができました。
この場合は、グローバルのマクロに設定するよりもホストに対してマクロを設定するほうがベターであると判断したため、この設定はホストのマクロに対して設定することおすすめします。
Twitterにてご指摘頂いたZabbixつよつよの方、ありがとうございました。
マクロ名 | 値 |
{$VMWARE.PASSWORD} | vCenterのパスワード |
{$VMWARE.URL} | https://<vCenterのFQDN>/sdk |
{$VMWARE.USERNAME} | vCenterのユーザ名(デフォルトだとadministrator@vsphere.local) |
以上の設定を追加したら[更新]を選択します。

[設定]-[ホストグループ]-[ホストグループの作成]を選択します。
今回は、vCenterのホストをグループに追加したいので、ホストグループの作成を行います。
ホストグループに追加が不要な場合はスキップします。

[ホストグループ]より、任意のホストグループ名を入力し、[追加]を選択します。

ホストグループより、追加したホストグループが追加されていることを確認します。

[設定]-[ホスト]より、[ホストの作成]を選択します。

[新しいホストの作成]より、以下の設定を行います。
- ホスト名 : vCenter Serverのホスト名を設定
- 表示名 : 任意の表示名を設定
- グループ : 任意のホストグループを設定(今回は作成したホストグループを選択)
設定の完了後、[テンプレート]横にある[選択]を押下します。

テンプレートより、[Template]配下にある[VMware FQDN]を選択します。
Zabbixの5.x系だと[Template VM VMware]となっていましたが、6.x系だと名称が変わったようです。
適用するテンプレートを選択したら、[選択]を押下します。

[インターフェース]より、[追加]を選択し、[SNMP]を押下します。
Zabbix6.x系からはホストを追加しても自動でインターフェースが割り当たらなくなるため、手動で追加します。

インターフェースの設定より、以下の設定を行います。
- IPアドレス : vCenterのIPアドレス
- DNS名 : vCenterのDNS名(任意)
- 接続方法 : IP (任意)
- ポート : 161(任意)
- SNMPバージョン : SNMPv1 (任意のSNMPバージョン)
- SNMPコミュニティ : vCenterのSNMPコミュニティ名
- bulkリクエストを許可 : ■
ここでvCenterのSNMPの情報を入力します。
記事によってはインターフェースのタイプがエージェントだったり、IPアドレスがZabbixのループバックアドレスだったりしますが、自身の環境だとSNMPにしないとvCenterの情報が取得できませんでした。
設定が完了したら[追加]を選択して、vCenterのホストを追加します。

ホストより、作成したホストが追加されていることを確認します。

vCenterのホストより、マクロを選択します。グローバル設定でvCenterのマクロを追加しましたが、うまく反映できなかったのでホストに対してマクロを設定していきます。
マクロより、以下の設定を行います。
マクロ名 | 値 |
{$VMWARE.PASSWORD} | vCenterのパスワード |
{$VMWARE.URL} | https://<vCenterのFQDN>/sdk |
{$VMWARE.USERNAME} | vCenterのユーザ名(デフォルトだとadministrator@vsphere.local) |
ホストのマクロが設定できたら、[更新]を選択してマクロを反映させます。

[設定]-[ホスト]より、vCenter上にあるホストがDiscoverされていることを確認します。
ZabbixのVMwareテンプレートには、vCenter上の仮想マシンを検出する機能があるため、デフォルト1時間でvCenter上にある仮想マシンを自動検出することができます。

vCenterの監視にはアイテムはありますが、トリガーが追加されていないため、別のテンプレートを追加するか、トリガーを手動設定してください。
以上で、vCenterのホスト追加及び監視設定は完了です。
なお、本手順ではZabbixのデフォルトの設定でvCenterの監視を行っているため、必要に応じてvCenterの監視設定は追加してください。
Discoverの監視間隔変更
ZabbixでVMwareの監視設定を入れると、ディスカバリールールにより、デフォルト1時間で自動的にアイテムを収集されます。
これは、テンプレート内にあるディスカバリールールの監視間隔が1時間に設定されているためです。

ホストに割り当たっている[ディスカバリールール]を選択すると、ディスカバリールールの監視間隔が1時間になっていることが確認できます。
この間隔を短くすることで設定後1時間待機する時間を調整することができます。
ディスカバリールールを選択します。

選択したディスカバリールールの[監視間隔]を任意の時間に変更します。
設定が完了したら、[更新]を選択します。
この設定をすることで、監視設定後の待機時間を短くすることができます。
ただ監視間隔を短くすると、その分vCenterやZabbixの負荷が増えるため最初のDiscoverだけ間隔を短くするなどの対応は必要だと思います。
Zabbixのマクロの継承について
掲載当初、Zabbixのマクロの継承に関する理解が不足している状態で手順を掲載していました。
備忘の意味を込めてここでZabbixのマクロの継承についての記載を残しておきたいと思います。
マクロの継承順位について。
これは、③グローバル設定→②テンプレート設定→①ホスト設定の順で強くなります。
今回の場合は、以下のようになります。
グローバル設定→vCenterのマクロを設定
テンプレートの設定→空欄

この場合は、たとえグローバルの設定でvCenterの情報を設定したとしても、テンプレートのほうが継承が強いため、テンプレートの設定(空欄)がホストに当たりました。
この状態でグローバル設定をホストに適用する場合は、テンプレートのマクロ設定を削除すればグローバル設定がホストに適用されます。
この場合、複数のvCenterがある環境だと同一の設定が自動で入ってしまうので、最終的にホストで設定する必要があるため、現実的ではありません。
そのため、vCenterの設定はホスト単位でマクロ設定を行うほうが楽になります。
まとめ
今回はZabbix 6.0にvCenter 7.0の監視設定を行いました。
前にZabbix5.x系でvCenterの監視を行いましたが、構造的にはほぼ変わっておらず、テンプレートの名称が変わった感じになるのでしょうか。
色々と不明点も出てきたので、今後vCenterの監視はどのようにすべきか、検討する必要がありそうです。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。
コメント