Proxmox VEをZabbixで監視する

こんばんは、tukapiyoです。
先日Proxmox VEを導入しましたが、Zabbixの監視をまだ行っていませんでしたので、今回は監視設定を行ってみます。

Proxmox VE自体はDebianベースなのでZabbix Agentを使うこともできると思いますが、Proxmox VEはAPIを有しており、ZabbixとしてもAPIを使った監視テンプレートを標準で用意しています。
APIを使うことで仮想マシンに関する情報も容易に取得できるため、今回はこれを使って行きたいと思います。

環境

被監視サーバ

  • Proxmox VE 8.4

監視サーバ

  • Red Hat Enterprise Linux 9.5
  • Zabbix Server 6.0.39

Proxmox VE側の設定

Zabbixのドキュメントに従って設定を行います。

監視用ユーザの作成

Proxmox VEの監視用ユーザは専用に用意するのが推奨らしいので、今回はzabbixという名前のユーザを作成します。

  1. データセンターを選択し、「ユーザ」の「追加」を選択します。
  2. 監視用のユーザのユーザ名(今回はzabbix)を入力し、「作成」を選択します。

APIトークンの発行

先ほど作成したユーザのAPIトークンを発行します。

  1. 「APIトークン」を開き、「追加」を選択します。
  2. 「ユーザ」には先ほど作成したユーザ名(今回はzabbix)を選択し、「トークンID」には分かりやすいIDを入力します。
    「追加」を選択してトークンを発行します。
  3. トークンIDとシークレットが表示されるので、この2つをメモしておきます。
    シークレットはこの場面でしか確認することができません。

アクセス権限の設定

ユーザとトークンに権限を設定します。

  1. 「アクセス権限」を選択します。
  2. 「追加」を選択し、「ユーザのアクセス権限」を選択します。
  3. 以下の様に値を選択し、「追加」を選択します。
    ドキュメントではパス「/」:権限「Sys Audit」、パス「/storage」:権限「Datastore Audit」、パス「/vms」:権限「VM Audit」の3つ権限を付与することが書かれています。
    今回は最小権限の法則に反しますが、パス「/」にロール「PVEAuditor」を割り当てることで上記を包含するような設定を行います。
    ※ロール「PVEAuditor」には権限「Datastore.Audit、Mapping.Audit、Pool.Audit、SDN.Audit、Sys.Audit、VM.Audit」が設定されています。
    パス /
    ユーザ 先ほど作成したユーザ(今回はzabbix@pam)
    ロール PVEAuditor
    継承 チェックを入れる

  4. 「追加」を選択し、「APIトークンのアクセス権限」を選択します。
  5. 以下の様に値を選択し、「追加」を選択します。
    ユーザのアクセス権と同様に、今回は最小権限の法則に反しますが、パス「/」にロール「PVEAuditor」を割り当てることで上記を包含するような設定を行います。
    パス /
    APIトークン 先ほど作成したAPIトークン(今回はzabbix@pam!zabbix)
    ロール PVEAuditor
    継承 チェックを入れる

  6. 最終的に以下の様に設定されました。

Zabbix Server側の設定

これまでと同様に、Zabbixのドキュメントに従って設定を行います。

ホストの追加

  1. Zabbixの管理画面から「ホストの作成」を選択します。
  2. 「新しいホストの作成」画面でホストの情報を入力します。
    ホスト名 Proxmox VEのホスト名
    テンプレート Proxmox VE by HTTP
    インターフェース エージェントを追加
    ※エージェントは使用しませんが、APIの接続先はここで指定します。

  3. 「マクロ」を選択し以下の様に入力します。
    「追加」を選択してホストを追加します。
    ドキュメントでは、{$PVE.URL.HOST}でProxmox VEのホスト名を指定すると記載されていますが、前述のインターフェースで設定するのが適切です。
    {$PVE.TOKEN.ID} 先ほど作成したトークンID(今回はzabbix@pam!zabbix)
    {$PVE.TOKEN.SECRET} 先ほどメモしたシークレット

  4. これで監視ができるようになります。

マクロについて

前述の手順で

{$PVE.URL.HOST}でProxmox VEのホスト名を指定すると記載されていますが、前述のインターフェースで設定するのが適切です。

と記載したのですが、これについてはテンプレートの中身を確認すると分かります。

例えば、「Proxmox: API service status」の監視アイテムを確認すると、{$PVE.URL.HOST}は使用しておらず{HOST.CONN}が指定されており、インターフェースの接続先を使用していることが見て取れます。

まとめ

ZabbixにはあらかじめProxmox VEのテンプレートが用意されているため、簡単に監視設定を行うことができました。

おすすめ

コメントを残す