このトピックでは、セルフマネージド Prometheus から Managed Service for Prometheus に履歴データを移行する方法について説明します。
前提条件
-
データソース:セルフマネージド Prometheus インスタンスは、デフォルトのストレージエンジンである TSDB を使用している必要があります。
-
Managed Service for Prometheus インスタンス:移行先の Managed Service for Prometheus インスタンスが実行中であることを確認してください。
-
ネットワーク接続:セルフマネージド Prometheus サーバーが、Managed Service for Prometheus インスタンスの Remote Write エンドポイントにアクセスできる必要があります。
移行手順
ステップ 1:Managed Service for Prometheus インスタンスの取得
-
Alibaba Cloud Management Console にログインします。
Cloud Monitor コンソールまたはManaged Service for Prometheus コンソールにログインし、既存の Prometheus インスタンスを選択するか、新しいインスタンスを作成します。
インスタンスを作成する際は、セルフマネージド Prometheus の履歴保持期間よりも長い保持期間を選択してください。
重要ローカルデータ量を評価し、それに応じて Prometheus インスタンスの Log Service MetricStore シャードをスケールアウトしてください。
-
データ量 > 1 GB:4 シャードにスケールアウトします。
-
データ量 > 10 GB:16 シャードにスケールアウトします。
-
データ量 > 100 GB:64 シャードにスケールアウトします。
-
データ量 < 1 TB:256 シャードにスケールアウトします。
大量のデータがある場合は、チケットを送信してサポートを依頼してください。
-
-
インスタンスの書き込みエンドポイントを取得します。
-
移行先インスタンスの名前をクリックして 設定 ページを開き、パブリック Remote Write URL を取得します。セルフマネージドサービスが Alibaba Cloud 上で実行されている場合は、内部 URL も取得できます。
-
認証については、RAM ユーザーに AliyunPrometheusMetricWriteAccess ロールを割り当て、認証情報として使用する AccessKey ペア (AK/SK) を生成できます。または、インスタンス設定ページで、
0.0.0.0に対してパスワードなしの書き込みアクセスを有効にすることもできます。ページ下部の [Access Address] セクションで、[Network] 列からパブリックネットワークまたは内部ネットワークの Remote Write URL をコピーします。
-
ステップ 2:promtool migrate を使用した移行
promtool migrate は、Managed Service for Prometheus が提供する、ローカルの TSDB データをサービスに移行するための公式ツールです。
-
移行の準備をします。
-
データバックアップ:移行前に、セルフマネージド Prometheus の
data/ディレクトリ (TSDB ストレージパス) をバックアップします。 -
promtool をインストールします。
curl -fsSL "https://o11y-addon-hangzhou-public.oss-cn-hangzhou.aliyuncs.com/share/promtool/install.sh" | bash -
promtool コマンドのヘルプ情報を表示します。
# サポートされているすべてのツールコマンドを表示します。 promtool --help # データ移行パラメーターを表示します。 promtool migrate --help
-
-
移行コマンドを実行します。
promtool migrate \ --db_dir=/path/to/local/prometheus/data \ # セルフマネージド Prometheus の TSDB データディレクトリ。 --output=rw # Remote Write を使用してデータを書き込みます。 --rw_url=<Remote_Write_URL> \ # 例: https://xxx.region.aliyuncs.com/api/v1/write --rw_username=<AccessKey_ID> \ # Managed Service for Prometheus インスタンスの AccessKey ID。 --rw_password=<AccessKey_Secret> \ # Managed Service for Prometheus インスタンスの AccessKey Secret。 --min_time=START_TIMESTAMP \ # オプション: 移行の開始時刻 (UNIX タイムスタンプ、ミリ秒単位)。 --max_time=END_TIMESTAMP \ # オプション: 移行の終了時刻 (UNIX タイムスタンプ、ミリ秒単位)。パラメーター
説明
例
--db_dirセルフマネージド Prometheus の TSDB データディレクトリへのパス。このパラメーターは必須です。
/opt/prometheus/data--rw_urlManaged Service for Prometheus インスタンスの Remote Write エンドポイント。このパラメーターは必須です。
https://xxx.region.aliyuncs.com/api/v1/write--outputデータ出力方法。
有効な値:
rwまたはstdout--rw_usernameManaged Service for Prometheus インスタンスの AccessKey ID。パスワードなしの書き込みアクセスが有効になっていない場合、このパラメーターは必須です。
LTAI5tXXXXXXX--rw_passwordManaged Service for Prometheus インスタンスの AccessKey Secret。パスワードなしの書き込みアクセスが有効になっていない場合、このパラメーターは必須です。
Co4XXXXXXXXX--min_timeデータ移行の開始時刻 (UNIX タイムスタンプ、ミリ秒単位)。デフォルトは 0 で、最も古いデータから移行を開始します。
1609433200000--max_timeデータ移行の終了時刻 (UNIX タイムスタンプ、ミリ秒単位)。デフォルトは、ツールの実行が開始された時刻です。
1640972400000--match移行するメトリクスをフィルタリングします。正規表現がサポートされています。
'__name__=~"http_*"'--rw_batch_size各バッチで送信されるサンプル数。パフォーマンスを最適化するために、このパラメーターを調整できます。
1000 -
移行結果を検証します。
-
Managed Service for Prometheus インスタンスを確認します。
-
Cloud Monitor コンソールまたはManaged Service for Prometheus コンソールにログインします。インスタンスリスト ページで、移行先インスタンスの名前をクリックします。
-
左側メニューで メトリック管理 をクリックします。メトリックの探索 タブで、PromQL クエリを実行します。
-
履歴データの時間範囲が、セルフマネージド Prometheus の時間範囲と一致することを確認します。
-
-
データ整合性を検証します。
upやnode_cpu_seconds_totalなどの主要なメトリクスを選択し、移行前後でデータ量が一致していることを確認します。
-
注意事項
-
データフィルタリング
特定の時間範囲または特定のメトリクスのデータを移行する場合は、
--min_time、--max_time、--matchパラメーターを使用して移行を正確に制御し、冗長なデータ転送を回避してください。 -
パフォーマンスの最適化
-
--rw_batch_sizeを調整してください。値を大きくすると移行速度が向上しますが、ネットワーク帯域幅と Alibaba Cloud インスタンスの負荷に基づいて値を調整する必要があります。推奨範囲は 500 から 2000 です。 -
バッチで移行する:大量のデータがある場合は、週単位や月単位など、時間帯ごとにバッチで移行してください。
-
-
セキュリティ
コマンドラインで
--rw_passwordを直接公開しないでください。代わりに、環境変数または設定ファイルを使用して機密情報を渡してください。 -
ネットワークと安定性
移行中はネットワークが安定していることを確認してください。移行が失敗した場合は、
--min_timeパラメーターを使用して、中断した箇所から再開できます。
よくある質問
Q1:移行中に認証失敗が発生した場合はどうすればよいですか?
-
指定した
--rw_usernameが AccessKey ID、--rw_passwordが AccessKey Secret と一致していることを確認してください。 -
Remote Write URL が正しいこと、および Managed Service for Prometheus インスタンスで Remote Write エンドポイントが有効になっていることを確認してください。
Q2:移行が遅すぎる場合はどうすればよいですか?
-
--rw_batch_sizeの値を増やしてください (例:--rw_batch_size=1000)。 -
セルフマネージド Prometheus サーバーと Managed Service for Prometheus インスタンスの間に十分なネットワーク帯域幅があることを確認してください。
Q3:移行後にデータが表示されない場合はどうすればよいですか?
-
Managed Service for Prometheus インスタンスが移行されたデータを処理してインデックスを作成するまで、数分待ってください。
-
Prometheus インスタンスの 保持期間 が十分であるかどうかを確認してください。
タイムスタンプ変換ツール
次のコマンドを使用して、日付を UNIX タイムスタンプ (ミリ秒単位) に変換できます。
date -d "2020-01-01 00:00:00" +%s%3N
# 出力例: 1577836800000 (2020-01-01 00:00:00 UTC に対応)