このトピックでは、OBCloud Exporter と Prometheus をデプロイして ApsaraDB for OceanBase を監視する方法について説明します。
背景
OBCloud Exporter は、データベースデータを処理するために ApsaraDB for OceanBase が提供するツールです。 このツールを使用して ApsaraDB for OceanBase で認証を行いデータを取得し、Prometheus を使用してデータベースを監視できます。
Prometheus は、システムで直接実行することも、Docker を使用してデプロイすることもできます。
前提条件
Java 8 以降がインストールされていること。
Docker がデプロイされていること。
システムで Prometheus を実行して ApsaraDB for OceanBase を監視する
OBCloud Exporter をダウンロードします。
説明現在、OBCloud Exporter を直接ダウンロードすることはできません。 ツールをダウンロードするには、OceanBase テクニカルサポートにお問い合わせください。
OBCloud Exporter をデプロイします。
OBCloud Exporter のインストールパッケージを
/opt/obcloud-exporterディレクトリに解凍します。mkdir /opt/obcloud-exporter tar -zxvf Obcloud_Exporter.tar.gz -C /opt/obcloud-exporter --strip-components=1インストールパッケージから以下のファイルが抽出されます。
Dockerfile: Docker コンテナビルドファイル。
muticloud_metric_config.yaml: メトリック構成ファイル。 デフォルトでは、このファイルを変更する必要はありません。
application.yaml: コレクション構成ファイル。
obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar: OBCloud Exporter のプログラム。
readme.md: プロジェクトの説明。
application.yaml 構成ファイルを編集します。
# モニター名。 aliyun_monitor: # 認証情報。 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 # エンドポイント。 end_point: xxx # メトリックを定期的にリフレッシュするかどうか。 デフォルト値は false です。 metric_meta_auto_refresh: false instances: # インスタンス ID。 - instance_id: xxx # クラスタ内の特定のテナントのデータをクエリするには、tenant_id を構成する必要があります。 tenant_id: xxx # インスタンスタイプ。cluster(クラスタインスタンス)または tenant(テナントインスタンスまたはサーバーレスインスタンス)を指定できます。 instance_type: tenant metrics:パラメータの説明は以下のとおりです。
access_key_id および access_key_secret: 認証用の AccessKey ペア。 対応するプラットフォームから AccessKey ペアを申請できます。 詳細については、「AccessKey を作成する」をご参照ください。
region_id および end_point: 詳細については、「リージョン (ApsaraDB for OceanBase)」を参照してください。
metric_meta_auto_refresh: メトリックを定期的にリフレッシュするかどうかを指定します。 デフォルト値は false です。
instances: 監視対象のインスタンス。 クラスタインスタンスまたはテナントインスタンスをハイフン (-) で区切ります。
instance_id: クラスタインスタンス、サーバーレスインスタンス、またはテナントインスタンスの ID。
説明値は、クラスタ内のテナント ID にすることはできません。
instance_type: 有効な値は cluster と tenant です。 instance_id の値がクラスタインスタンス ID の場合は、このパラメータを cluster に設定します。 instance_id の値がテナントインスタンス ID またはサーバーレスインスタンス ID の場合は、このパラメータを tenant に設定します。
tenant_id: このパラメータは、クラスタ内の特定のテナントのデータをクエリする場合に必須です。
metrics: 収集するメトリック。 このパラメータを指定しない場合は、すべてのメトリックが収集されます。 メトリックは次の形式で指定します。
instances: -instance_id: xxx tenant_id: xxx instance_type: cluster metrics: - sql_all_rt - sql_delete_rt説明大量のメトリックを収集すると、収集速度に影響を与える可能性があります。 この場合は、複数のエクスポーターを使用してメトリックを収集できます。
OBCloud Exporter の JAR ファイルを実行します。
java -jar /opt/obcloud-exporter/obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jarブラウザでデプロイ結果を確認します。 具体的には、ブラウザで対応する IP アドレスのポート 9400 にアクセスして、モニタリングデータが受信されているかどうかを確認します。
説明実際には、構成済みの IP アドレスとポート番号を使用してアクセスします。
必要なバージョンの Prometheus を公式サイトからダウンロードします。 ここでは、Linux 用の Prometheus 2.50.1 をダウンロードする例を示します。
wget https://github.com/prometheus/prometheus/releases/download/v2.50.1/prometheus-2.50.1.linux-amd64.tar.gzPrometheus をデプロイします。
Prometheus のインストールパッケージを
/opt/prometheusディレクトリに解凍します。mkdir -p /opt/prometheus tar -zxvf prometheus-2.50.1.linux-amd64.tar.gz -C /opt/prometheus --strip-components=1prometheus.yml 構成ファイルを作業ディレクトリに移動し、必要に応じてファイルを編集します。
mv /opt/prometheus/prometheus.yml /usr/local/bin/ vi /usr/local/bin/prometheus.yml以下のパラメータを変更します。
global: scrape_interval: 30s scrape_timeout: 20s scrape_configs: - job_name: "nodes" static_configs: - targets: ['localhost:9400']Prometheus のサービスファイルとデータストレージディレクトリを作成します。
mkdir /var/lib/prometheus/ sudo vim /etc/systemd/system/Prometheus.service次のコンテンツを入力して保存します。
説明User パラメータと Group パラメータはオプションです。 ユーザー名とユーザーグループの構成方法については、次の手順を参照してください。
[Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Restart=on-failure ExecStart=/opt/prometheus/prometheus \ --config.file /usr/local/bin/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ [Install] WantedBy=multi-user.target(オプション) ユーザー名とユーザーグループを構成します。 前の手順で指定したユーザー名とユーザーグループがすでに存在する場合、またはユーザー名とユーザーグループを指定していない場合は、この手順をスキップできます。
sudo groupadd prometheus sudo useradd -r -g prometheus prometheus sudo chown -R prometheus:prometheus /opt/prometheus /var/lib/prometheus sudo chmod -R 755 /opt/prometheus /var/lib/prometheus
Prometheus サービスを開始します。
# systemd 構成を再読み込みします。 sudo systemctl daemon-reload # Prometheus サービスを開始します。 sudo systemctl start prometheus # ブート時に Prometheus サービスが開始されるように有効にします。 sudo systemctl enable prometheus # サービスステータスを確認します。 sudo systemctl status prometheusPrometheus が開始されたかどうかを確認します。
sudo netstat -ntlp | grep 9090
Docker を使用して Prometheus をデプロイして ApsaraDB for OceanBase を監視する
OBCloud Exporter をダウンロードします。
説明現在、OBCloud Exporter を直接ダウンロードすることはできません。 ツールをダウンロードするには、OceanBase テクニカルサポートにお問い合わせください。
OBCloud Exporter をデプロイします。
OBCloud Exporter のインストールパッケージを
/opt/obcloud-exporterディレクトリに解凍します。mkdir /opt/obcloud-exporter tar -zxvf Obcloud_Exporter.tar.gz -C /opt/obcloud-exporter --strip-components=1インストールパッケージから以下のファイルが抽出されます。
Dockerfile: Docker コンテナビルドファイル。
muticloud_metric_config.yaml: メトリック構成ファイル。 デフォルトでは、このファイルを変更する必要はありません。
application.yaml: コレクション構成ファイル。
obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar: OBCloud Exporter のプログラム。
readme.md: プロジェクトの説明。
application.yaml 構成ファイルを編集します。
# モニター名。 aliyun_monitor: # 認証情報。 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 # エンドポイント。 end_point: xxx # メトリックを定期的にリフレッシュするかどうか。 デフォルト値は false です。 metric_meta_auto_refresh: false instances: # インスタンス ID。 - instance_id: xxx # クラスタ内の特定のテナントのデータをクエリするには、tenant_id を構成する必要があります。 tenant_id: xxx # インスタンスタイプ。cluster(クラスタインスタンス)または tenant(テナントインスタンスまたはサーバーレスインスタンス)を指定できます。 instance_type: tenant metrics:パラメータの説明は以下のとおりです。
access_key_id および access_key_secret: 認証用の AccessKey ペア。 対応するプラットフォームから AccessKey ペアを申請できます。 詳細については、「AccessKey を作成する」をご参照ください。
region_id および end_point: 詳細については、「リージョン (ApsaraDB for OceanBase)」を参照してください。
metric_meta_auto_refresh: メトリックを定期的にリフレッシュするかどうかを指定します。 デフォルト値は false です。
instances: 監視対象のインスタンス。 クラスタインスタンスまたはテナントインスタンスをハイフン (-) で区切ります。
instance_id: クラスタインスタンス、サーバーレスインスタンス、またはテナントインスタンスの ID。
説明値は、クラスタ内のテナント ID にすることはできません。
instance_type: 有効な値は cluster と tenant です。 instance_id の値がクラスタインスタンス ID の場合は、このパラメータを cluster に設定します。 instance_id の値がテナントインスタンス ID またはサーバーレスインスタンス ID の場合は、このパラメータを tenant に設定します。
tenant_id: このパラメータは、クラスタ内の特定のテナントのデータをクエリする場合に必須です。
metrics: 収集するメトリック。 このパラメータを指定しない場合は、すべてのメトリックが収集されます。 メトリックは次の形式で指定します。
instances: -instance_id: xxx tenant_id: xxx instance_type: cluster metrics: - sql_all_rt - sql_delete_rt説明詳細については、「監視メトリック」をご参照ください。
大量のメトリックを収集すると、収集速度に影響を与える可能性があります。 この場合は、複数のエクスポーターを使用してメトリックを収集できます。
Docker を使用して OBCloud Exporter を開始します。
/opt/obcloud-exporterディレクトリで、Docker コンテナ obcloud-exporter をビルドします。cd /opt/obcloud-exporter docker build -t obcloud-exporter:1.0 .Docker コンテナを直接、または外部構成ファイルを使用して開始します。
Docker コンテナを直接開始します。
docker run -itd -p9400:9400 --name obcloud-exporter obcloud-exporter:1.0外部構成ファイルを使用して Docker コンテナを開始します。
docker run -itd -p9400:9400 -v /opt/obcloud-exporter/application.yaml:/app/application.yaml --name obcloud-exporter obcloud-exporter:1.0
ブラウザでデプロイ結果を確認します。 具体的には、ブラウザで対応する IP アドレスのポート 9400 にアクセスして、モニタリングデータが受信されているかどうかを確認します。
説明実際には、構成済みの IP アドレスとポート番号を使用してアクセスします。
Prometheus の prometheus.yml 構成ファイルを作成します。
vi /usr/local/bin/prometheus.yml構成ファイルを編集します。
global: scrape_interval: 30s evaluation_interval: 30s scrape_configs: - job_name: obcloud-exporter-test static_configs: # ローカルサーバーとポート番号。 - targets: ['obcloud-exporter:9400'] labels: instance: obcloud-exporterPrometheus サービスを開始します。
docker run -d \ -p 9090:9090 \ -v /usr/local/bin/prometheus.yml:/etc/prometheus/prometheus.yml \ --link obcloud-exporter \ --name prometheus \ prom/prometheusPrometheus が開始されたかどうかを確認します。
sudo netstat -ntlp | grep 9090
Prometheus を介してデータベースのモニタリングデータを表示する
ブラウザで Prometheus サービス URL http://localhost:9090/targets にアクセスして、対応するモニタリングデータを表示します。
監視メトリック
OBCloud Exporter を構成する際に、ApsaraDB for OceanBase でサポートされている監視メトリックを指定すると、OBCloud Exporter によってメトリックが収集されます。 OBCloud Exporter が実行されている場合、システムはこれらの監視メトリック (クラスタホスト監視メトリックとテナントレベルの監視メトリックを含む) を OBCloud Exporter に同期します。 詳細については、「クラスタ監視メトリック」および「テナント監視メトリック」をご参照ください。
application.yaml 構成ファイルの metric_meta_auto_refresh パラメータが false に設定されている場合、サポートされる監視メトリックは初期アクセス時に返されるメトリックです。 metric_meta_auto_refresh パラメータが true に設定されている場合、サポートされる監視メトリックのリストは 10 分ごとにリフレッシュされます。