このトピックでは、セルフマネージドのオープンソース 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 管理コンソールにログインします。
Cloud Monitor コンソールまたは Managed Service for Prometheus コンソールにログインします。既存の Prometheus インスタンスを選択するか、新しいインスタンスを作成します。
インスタンスを作成する際は、セルフマネージドの Prometheus の既存データの保持期間よりも長いストレージ期間を選択してください。
重要まず、ローカルデータの量を評価し、Prometheus インスタンスの Simple Log Service MetricStore シャードをスケールアウトします。
データ量 > 1 GB: 4 シャードにスケールアウトします。
データ量 > 10 GB: 16 シャードにスケールアウトします。
データ量 > 100 GB: 64 シャードにスケールアウトします。
データ量 < 1 TB: 256 シャードにスケールアウトします。
データ量が大きい場合は、チケットを送信してサポートを依頼してください。
インスタンスの書き込みエンドポイントを取得します。
宛先インスタンスの名前をクリックします。これにより [設定] ページが開き、パブリックな Remote Write URL を取得できます。セルフマネージドサービスが Alibaba Cloud 上で実行されている場合は、内部 URL も取得できます。
認証には、AliyunPrometheusMetricWriteAccess ロールを RAM ユーザーに割り当てて書き込み権限を付与します。次に、AccessKey ペアを生成してユーザー名とパスワードとして使用できます。または、インスタンス設定ページに移動して、
0.0.0.0からのパスワードなしの書き込みアクセスを有効にすることもできます。
ステップ 2: promtool migrate を使用して移行を実行する
promtool migrate は、Managed Service for Prometheus が提供する公式ツールです。このツールは、ローカルの TSDB データを Managed Service for Prometheus に移行するために使用されます。
移行の準備をします。
データのバックアップ: 移行の前に、セルフマネージド Prometheus の
data/ディレクトリをバックアップします。このディレクトリは TSDB のストレージパスです。promtool をインストールします。
curl -fsSL "https://o11y-addon-hangzhou-public.oss-cn-hangzhou.aliyuncs.com/share/promtool/install.sh" | bashpromtool コマンドのヘルプ情報を表示します。
# サポートされているすべてのツールコマンドを表示 promtool --help # データ移行パラメーターを表示 promtool migrate --help
移行コマンドを実行します。
promtool migrate \ --db_dir=/path/to/local/prometheus/data \ # セルフマネージド Prometheus の TSDB データディレクトリ --output=rw # Remote Write メソッドを使用してデータを書き込む --rw_url=<Alibaba Cloud Remote Write URL> \ # 例: https://xxx.region.aliyuncs.com/api/v1/write --rw_username=<Access Key ID> \ # Alibaba Cloud インスタンスの AccessKey ID --rw_password=<Access Key Secret> \ # Alibaba Cloud インスタンスの 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_usernameAlibaba Cloud インスタンスの AccessKey ID。パスワードなしのアクセスが有効になっていない場合、このパラメーターは必須です。
LTAI5tXXXXXXX--rw_passwordAlibaba Cloud インスタンスの 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 コンソールにログインします。[インスタンス] ページで、宛先インスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、[メトリック管理] をクリックします。[メトリックエクスプローラー] タブで、Prometheus クエリ言語 (PromQL) クエリを実行します。
既存データの時間範囲がセルフマネージド Prometheus の時間範囲と一致することを確認します。
データ整合性を比較します。
主要なメトリック (例:
up、node_cpu_seconds_total) を選択し、移行前後のデータを比較して一貫性を検証します。
注意事項
データフィルタリング
特定の期間または特定のメトリックのデータを移行するには、
--min_time、--max_time、および--matchパラメーターを使用して移行を正確に制御し、冗長なデータ転送を回避します。パフォーマンスの最適化
--rw_batch_sizeの調整: 値を大きくすると移行速度が向上します。ただし、ネットワーク帯域幅と Managed Service for Prometheus インスタンスの負荷に基づいて値を調整する必要があります。推奨値は 500 から 2000 の間です。バッチでの移行: データ量が大きい場合は、週単位や月単位などの期間に基づいてバッチで移行を実行します。
セキュリティ
コマンドラインで
--rw_passwordを直接公開することは避けてください。環境変数または構成ファイルを使用して機密情報を渡します。ネットワークと安定性
移行中は安定したネットワーク接続を確保してください。移行が失敗した場合は、
--min_timeパラメーターを指定することで中断した時点から再開できます。
よくある質問
移行中に認証が失敗した場合はどうすればよいですか?
--rw_usernameおよび--rw_passwordパラメーターが Managed Service for Prometheus インスタンスの AccessKey ペアと一致することを確認してください。Remote Write URL が正しく、Managed Service for Prometheus インスタンスで Remote Write エンドポイントが有効になっていることを確認してください。
移行が遅すぎる場合はどうすればよいですか?
--rw_batch_sizeの値を増やします (例:--rw_batch_size=1000)。セルフマネージド Prometheus サーバーと Managed Service for Prometheus インスタンスの間に十分なネットワーク帯域幅があることを確認してください。
移行後にデータが表示されない場合はどうすればよいですか?
Managed Service for Prometheus インスタンスがデータを同期するまで数分待ちます。
Prometheus インスタンスの保持期間が十分であることを確認してください。
タイムスタンプ変換ツール
次のコマンドを使用して、日付をミリ秒単位の UNIX タイムスタンプに変換します。
date -d "2020-01-01 00:00:00" +%s%3N
# 出力例: 1577836800000 (2020-01-01 00:00:00 UTC に対応)