地方在住IT系ニート

bkds

ProxmoxをPrometheusとGrafanaで監視するメモ

はじめに

ProxmoxのVMをHomebridgeで管理できるようになったので、今度はPrometheusGrafanaを使ってProxmox VEのメトリクスを監視する仕組みを導入しました。

prometheus-pve-exporterを使うことで、以下の情報を可視化できます。

prometheus-pve-exporterのインストール

pipでインストール

Python 3.9以上が必要です。

python3 -m pip install prometheus-pve-exporter

Dockerでインストール

docker pull prompve/prometheus-pve-exporter

Proxmox側の設定

監視用ユーザーの作成

セキュリティのため、読み取り専用権限を持つ専用ユーザーを作成します。

# ユーザー作成
pveum user add prometheus@pve

# PVEAuditorロール(読み取り専用)を付与
pveum aclmod / -user prometheus@pve -role PVEAuditor

APIトークンの作成(推奨)

パスワード認証よりAPIトークンを使用する方が安全です。

  1. Proxmox Web管理画面で DatacenterPermissionsAPI Tokens を選択
  2. Add をクリックしてトークンを作成
  3. 表示されるSecretを必ず控えておく(再表示不可)

exporterの設定ファイル

設定ファイル pve.yml を作成します。

パスワード認証の場合

default:
  user: prometheus@pve
  password: "your-password"
  verify_ssl: false  # 自己署名証明書の場合

APIトークン認証の場合(推奨)

default:
  user: prometheus@pve
  token_name: "your-token-id"
  token_value: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  verify_ssl: false

exporterの起動

直接起動

pve_exporter --config.file /path/to/pve.yml

デフォルトではポート9221で起動します。

Dockerで起動

docker run --init --name prometheus-pve-exporter -d \
  -p 127.0.0.1:9221:9221 \
  -v /path/to/pve.yml:/etc/prometheus/pve.yml:ro \
  prompve/prometheus-pve-exporter

Prometheusの設定

prometheus.yml にスクレイプ設定を追加します。

exporterをProxmoxノード上で動かす場合

scrape_configs:
  - job_name: 'pve'
    static_configs:
      - targets:
        - 192.168.1.100:9221  # Proxmoxノード1
        - 192.168.1.101:9221  # Proxmoxノード2
    metrics_path: /pve
    params:
      module: [default]
      cluster: ['1']
      node: ['1']

exporterを別サーバーで動かす場合

scrape_configs:
  - job_name: 'pve'
    static_configs:
      - targets:
        - 192.168.1.100  # Proxmoxノード1
        - 192.168.1.101  # Proxmoxノード2
    metrics_path: /pve
    params:
      module: [default]
      cluster: ['1']
      node: ['1']
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9221  # exporterのアドレス

メトリクスの確認

ブラウザで以下のURLにアクセスすると、メトリクスが確認できます。

http://localhost:9221/pve?target=192.168.1.100&cluster=1&node=1

主要なメトリクスは以下の通りです。

メトリクス名説明
pve_upノード/VM/LXCの稼働状態
pve_cpu_usage_ratioCPU使用率
pve_memory_usage_bytesメモリ使用量
pve_disk_usage_bytesディスク使用量
pve_network_receive_bytes_total受信バイト数
pve_network_transmit_bytes_total送信バイト数

Grafanaダッシュボードの導入

GrafanaのダッシュボードID 10347 を使用すると、すぐに可視化できます。

ダッシュボードのインポート

  1. Grafanaの左メニューから DashboardsImport を選択
  2. Dashboard IDに 10347 を入力
  3. Load をクリック
  4. Prometheusデータソースを選択して Import

表示される情報

メモ

クラスタ規模に応じた設定

大規模なクラスタの場合、クラスタメトリクスとノードメトリクスを別々のジョブで収集すると効率的です。

# クラスタメトリクス(1ノードから取得でOK)
- job_name: 'pve-cluster'
  static_configs:
    - targets: ['192.168.1.100:9221']
  metrics_path: /pve
  params:
    cluster: ['1']
    node: ['0']

# ノードメトリクス(全ノードから取得が必要)
- job_name: 'pve-node'
  static_configs:
    - targets:
      - 192.168.1.100:9221
      - 192.168.1.101:9221
  metrics_path: /pve
  params:
    cluster: ['0']
    node: ['1']

アラート設定例

VMのタグに基づいてアラートを出す場合は、pve_guest_infoメトリクスを使います。

# criticalタグ付きのVMが停止した場合にアラート
(pve_guest_info{tags=~".*critical.*"} * on(id) group_left(name) pve_up{}) == 0

参考リンク

まとめ

prometheus-pve-exporterを使うことで、Proxmox VEの包括的な監視が可能になりました。既存のGrafana環境に統合することで、サーバー監視と一緒にProxmoxの状態も一元管理できます。

APIトークン認証を使用し、verify_ssl: falseは自己署名証明書環境のみで使用するように注意してください。

<-- Back to home
にほんブログ村 IT技術ブログ IT技術メモへ PVアクセスランキング にほんブログ村