Prometheus と Grafana を使用した Ceph クラスターの監視 |
この記事はスマート インフラストラクチャ監視シリーズの一部であり、CentOS 7 に Prometheus Server をインストールする方法と、CentOS 7 に Grafana と InfluxDB をインストールする方法をすでに説明しました。本番環境に Ceph クラスタがあり、それを使って適切なツールを見つけようとしています。それを監視するために、幸運なことに、Prometheus と Grafana に遭遇しました。
Prometheus を使用した Ceph クラスターのモニタリングには、ceph クラスターに関するメタ情報を収集する Prometheus エクスポーターが必要です。このガイドでは、DigitalOcean Ceph エクスポーターを使用します。
前提条件:
- Prometheusサーバーをインストールしました。
- Grafanaサーバーをインストールしました。
- Prometheus Ceph エクスポーターを実行するためにサーバーにインストールされた Docker。 ceph クラスターと通信できるはずです。
- 動作中の Ceph クラスター
- Ceph クラスターにアクセスして、ceph.conf 構成ファイルと ceph.
.keyring をコピーし、クラスターに対する認証を行います。
これを設定する方法に関する完全なガイドについては、以下の手順に従ってください。
ステップ 1: Prometheus Server と Grafana をインストールします。
Prometheus と Grafana をインストールする方法については、これらのリンクを使用してください。
- Prometheus Server を CentOS 7 にインストールし、Grafana と InfluxDB を CentOS 7 にインストールします。
- Prometheus Server と Grafana を Ubuntu にインストールする
- Prometheus Server と Grafana を Debian にインストールする
ステップ 2: Prometheus Ceph エクスポーター クライアントに Docker をインストールする
Prometheus Ceph エクスポータ クライアントがクラスタ メトリクスを取得するには、Ceph クラスタ ネットワークにアクセスできる必要があることに注意してください。公式の Docker インストール ガイドを使用して、このサーバーに Docker をインストールします。
- Ubuntu/Debian/Fedora/Arch/CentOS に Docker CE をインストールする
また、docker-compose もインストールします。
- Linux システムに Docker Compose をインストールする
ステップ 3: Ceph Exporter Docker イメージを構築する
Docker エンジンがインストールされ、サービスが実行されたら。 DigitalOcean Ceph エクスポータ プロジェクトから Docker イメージを構築する準備ができているはずです。 Git をまだお持ちでない場合は、インストールすることを検討してください。
sudo yum -y install git
Ubuntu を使用している場合は、次を実行します。
sudo apt update && sudo apt -y install git
次に、Github からプロジェクトのクローンを作成します。
git clone https://github.com/digitalocean/ceph_exporter.git
ceph_exporter ディレクトリに切り替えて、Docker イメージをビルドします。
cd ceph_exporter
docker build -t ceph_exporter .
これにより、ceph_exporter という名前のイメージが構築されます。インターネットとディスクの書き込み速度によっては、時間がかかる場合があります。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ceph_exporter latest 1e3b0082e6d4 3 minutes ago 379MB
ステップ 4: Prometheus ceph エクスポータ クライアント コンテナを開始する
ceph.conf 設定ファイルとceph.
docker run -it \
-v /etc/ceph:/etc/ceph \
--net=host \
-p=9128:9128 \
digitalocean/ceph_exporter
docker-compose の場合は、次のファイルを作成します。
$ vim docker-compose.yml
# Example usage of exporter in use
version: '2'
services:
ceph-exporter:
image: ceph_exporter
restart: always
network_mode: "host"
volumes:
- /etc/ceph:/etc/ceph
ports:
- '9128:9128'
次に、以下を使用して Docker コンテナを起動します。
$ docker-compose up -d
systemd の場合は、以下のようなサービスユニットファイルを作成します。
$ sudo vim /etc/systemd/system/ceph_exporter.service
[Unit]
Description=Manage Ceph exporter service
[Install]
WantedBy=multi-user.target
[Service]
Restart=always
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill ceph_exporter
ExecStartPre=-/usr/bin/docker rm ceph_exporter
ExecStart=/usr/bin/docker run \
--name ceph_exporter \
-v /etc/ceph:/etc/ceph \
--net=host \
-p=9128:9128 \
ceph_exporter
ExecStop=-/usr/bin/docker kill ceph_exporter
ExecStop=-/usr/bin/docker rm ceph_exporter
systemd デーモンをリロードします。
sudo systemctl daemon-reload
サービスを開始して有効にします。
sudo systemctl enable ceph_exporter
sudo systemctl start ceph_exporter
コンテナのステータスを確認します。
sudo systemctl status ceph_exporter
すべてがうまくいけば、以下のような出力が得られるはずです。
ステップ 5: ファイアウォールで 9128 を開く
これは CentOS 7 サーバーであるため、firewalld を使用し、信頼できるネットワークからポート 9128 へのアクセスを許可します。
sudo firewall-cmd --permanent \
--add-rich-rule 'rule family="ipv4" \
source address="192.168.10.0/24" \
port protocol="tcp" port="9128" accept'
sudo firewall-cmd --reload
nc または telnet コマンドを使用してアクセスをテストします。
$ telnet 127.0.0.1 9128
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
$ nc -v 127.0.0.1 9128
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:9128.
ステップ 6: Prometheus スクレイピング ターゲットを構成する
作成された ceph エクスポーター コンテナーに対して Prometheus の static_configs 行を定義する必要があります。 Prometheus サーバー上のファイル /etc/prometheus/prometheus.yml を次のように編集します。
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
- job_name: 'ceph-exporter'
static_configs:
- targets: ['ceph-exporter-node-ip:9128']
labels:
alias: ceph-exporter
localhost を ceph エクスポータのホスト IP アドレスに置き換えます。変更を加えた後は、忘れずに Prometheus サービスを再起動してください。
sudo systemctl restart prometheus
ステップ 7: Prometheus データ ソースを Grafana に追加する
Grafana ダッシュボードにログインし、Prometheus データ ソースを追加します。次の情報を入力する必要があります。
名前: このデータ ソースに付けられた名前
タイプ: データ ソースのタイプ。この場合は Prometheus です
URL : 追加する Prometheus サーバーの IP アドレスとポート番号。
アクセス:プロキシ経由でアクセスするか直接アクセスするかを指定します。プロキシとはGrafanaサーバーを介したアクセスを意味し、ダイレクトとはWebからのアクセスを意味します。
[保存してテスト] ボタンをクリックして設定を保存します。
ステップ 8: Ceph Cluster Grafana ダッシュボードをインポートする
最後のステップは、Ceph Cluster Grafana ダッシュボードをインポートすることです。私の調査により、Cristian Calin による次のダッシュボードが見つかりました。
- Ceph クラスターの概要: https://grafana.com/dashboards/917
- Ceph プールの概要: https://grafana.com/dashboards/926
- Ceph OSD の概要: https://grafana.com/dashboards/923
Grafana にダッシュボードをインポートするときは、ダッシュボード ID 917、926、および 923 を使用します。
プラス記号 (+) > インポート をクリックしてダッシュボードをインポートします。上でインポートするダッシュボードに一致する番号を入力します。
インポートされたダッシュボードを表示するには、「ダッシュボード」に移動し、表示するダッシュボードの名前を選択します。
OSD およびプール ダッシュボードの場合、プール名/OSD 番号を選択して、その使用状況とステータスを表示する必要があります。 SUSE 担当者は、https://github.com/SUSE/grafana-dashboards-ceph で同様のダッシュボードを利用できます。
その他の Prometheus モニタリング ガイド:
- Prometheus と Grafana を使用して Redis サーバーを 5 分で監視する方法
- Prometheus と Grafana を使用して Linux サーバーのパフォーマンスを 5 分で監視する方法
- Prometheus と Grafana を使用して BIND DNS サーバーを監視する方法
- Prometheus を使用した 5 分での MySQL/MariaDB のモニタリング
- Prometheus と Grafana を使用して Apache Web サーバーを 5 分で監視する方法