ウェブサイト検索

Prometheus と Grafana を使用した Ceph クラスターの監視 |


この記事はスマート インフラストラクチャ監視シリーズの一部であり、CentOS 7 に Prometheus Server をインストールする方法と、CentOS 7 に Grafana と InfluxDB をインストールする方法をすでに説明しました。本番環境に Ceph クラスタがあり、それを使って適切なツールを見つけようとしています。それを監視するために、幸運なことに、Prometheus と Grafana に遭遇しました。

Prometheus を使用した Ceph クラスターのモニタリングには、ceph クラスターに関するメタ情報を収集する Prometheus エクスポーターが必要です。このガイドでは、DigitalOcean Ceph エクスポーターを使用します。

前提条件:

  1. Prometheusサーバーをインストールしました。
  2. Grafanaサーバーをインストールしました。
  3. Prometheus Ceph エクスポーターを実行するためにサーバーにインストールされた Docker。 ceph クラスターと通信できるはずです。
  4. 動作中の Ceph クラスター
  5. 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..keyring /etc/ceph ディレクトリにコピーします。そして、Dockerコンテナホストのネットワークスタックを起動します。バニラの docker コマンド、docker-compose、または systemd を使用してコンテナーを管理できます。 docker コマンドライン ツールの場合は、以下のコマンドを実行します。

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 分で監視する方法

関連記事: