はじめに
ProxmoxをZabbixで監視する際APIを利用するのが一般的ですが、Cephの監視はZabbix Agent2を噛ませたほうがOSDごとの詳細な性能・統計情報などが取れるので、今回はそちらの設定をしてみようと思います。
注意点として、Ceph Squid (v19.x) 以降を Zabbix Agent2で監視する際、ceph restfulモジュールの設定だけではOSD関連のアイテムでAccess deniedになって、正常にデータを取得できないケースがありました。
これはmgrエンティティの権限不足が主な原因で、本記事ではその辺の設定も含めて監視の手順をまとめています。
1. 【全ノード】Zabbix Agent 2 のインストールと設定
まず、Cephクラスタの各ノードにエージェントを導入します。
リポジトリの更新とインストール
# リポジトリパッケージのダウンロード
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0%2Bdebian13_all.deb
# パッケージのインストール
dpkg -i zabbix-release_latest_7.0+debian13_all.deb
# リポジトリ情報の更新
apt update
apt install zabbix-agent2 zabbix-agent2-plugin-ceph
2. 設定ファイルの編集
# /etc/zabbix/zabbix_agent2.conf を編集します
# Server= に ZabbixサーバのIP
# Hostname= に 自サーバーのホスト名 を設定
sed -i 's/Server=127.0.0.1/Server=【ZabbixサーバのIP】/' /etc/zabbix/zabbix_agent2.conf
sed -i "s/Hostname=Zabbix server/Hostname=$(hostname)/" /etc/zabbix/zabbix_agent2.conf
3. サービスの起動と有効化
systemctl enable --now zabbix-agent2
準備:Active MGR ノードの特定
いずれか1台のノードで実行し、現在どのマネージャーが稼働中か確認します。
ceph mgr stat
出力例: { "active_name": "pve-prod01", ... }
以下、この active_name のノードを 「操作ノード」 として進めます。
【1台のみ(操作ノード)】RESTful API の全体設定
クラスタ共通の設定データベースを更新します。
# モジュールの有効化
ceph mgr module enable restful
# 自己署名証明書の作成
ceph restful create-self-signed-cert
# API待ち受け設定(全インターフェースの8003番ポート)
ceph config set mgr mgr/restful/server_addr 0.0.0.0
ceph config set mgr mgr/restful/server_port 8003
# Zabbix用APIユーザーの作成
ceph restful create-key zabbix
【重要】 ここで表示された UUID(APIキー) を必ず控えてください。
4. 【1台のみ(操作ノード)】全mgrへの権限付与
各ノードのmgrプロセスが統計情報を取得できるよう、1台からまとめて権限を上書きします。
全ノードの mgr エンティティに対してフル権限を付与しないと、フェイルオーバー発生時や特定の API 叩き込み時に 500 エラーが発生します。
# ノード数分、エンティティ名を変えて実行してください
ceph auth caps mgr.pve-prod01 mon 'allow *' mds 'allow *' osd 'allow *'
ceph auth caps mgr.pve-prod02 mon 'allow *' mds 'allow *' osd 'allow *'
ceph auth caps mgr.pve-prod03 mon 'allow *' mds 'allow *' osd 'allow *'
5. 【全ノード】設定の確定(プロセス再起動)
付与した新しい権限をmgrプロセスに読み込ませるため、全ノードで実行します。
# mgrプロセスの再起動
systemctl restart ceph-mgr.target
6. 動作確認テスト
エージェントがCephからデータを抜けるか最終確認します。
zabbix_agent2 -t ceph.osd.stats["https://localhost:8003","zabbix","【手順3のUUID】"]
成功: [s|{"osd_latency_apply":{...}}] とJSONが返ればOKです。
7. Zabbix ホスト設定
ZabbixのWebUIで対象ホストに以下の設定を行います。
テンプレート適用: Ceph by Zabbix agent 2 をリンク。
マクロの設定:
{$CEPH.CONNSTRING} : https://localhost:8003
{$CEPH.USER} : zabbix
{$CEPH.API.KEY} : 【手順3のUUID】
8.参考リンク

