すべてのプロダクト
Search
ドキュメントセンター

Time Series Database:Prometheus から TSDB へのデータ移行

最終更新日:Jan 14, 2025

このトピックでは、DataX を使用して Prometheus Service(Prometheus)から時系列データベース(TSDB)データベースにデータを移行する方法について説明します。DataX は、Alibaba Group によって提供されるオープンソースツールです。

背景情報

DataX を使用して、Prometheus から TSDB データベースにデータを移行できます。

DataX の使用方法の詳細については、「README」をご参照ください。

以下のセクションでは、DataX、Prometheus Reader プラグイン、および TSDB Writer プラグインについて説明します。Prometheus Reader と TSDB Writer は、データを移行するために DataX によって提供されます。

DataX

 DataX は、Alibaba Group 内で広く使用されているオフラインデータ同期ツールです。 DataX を使用すると、MySQL、Oracle、SQL Server、PostgreSQL、Hadoop 分散ファイルシステム(HDFS)、Hive、AnalyticDB for MySQL、HBase、Tablestore(OTS)、MaxCompute、分散リレーショナルデータベースサービス(DRDS)など、さまざまな異なるデータソース間でデータを効率的に同期できます。MaxCompute は、以前は Open Data Processing Service(ODPS)として知られていました。

Prometheus Reader

 DataX は、Prometheus からデータポイントを読み取るための Prometheus Reader プラグインを提供します。

TSDB Writer

 DataX は、データポイントを TSDB データベースに書き込むための TSDB Writer プラグインを提供します。TSDB は、Alibaba Cloud によって開発されたデータベースサービスです。

クイックスタート

手順 1:環境を構成する

  • Linux

  • Java Development Kit(JDK): JDK バージョン 1.8 以降を使用します。JDK 1.8 を使用することをお勧めします。

  • Python: Python 2.6.x を使用することをお勧めします。

  • Prometheus: Prometheus バージョン 2.9.x のみがサポートされています。以前のバージョンは DataX と完全には互換性がありません。

  • TSDB: TSDB バージョン 2.4.x 以降のみがサポートされています。以前のバージョンは DataX と完全には互換性がありません。

手順 2:DataX とプラグインをダウンロードする

  • DataX をクリックして、DataX と TSDB Writer プラグインをダウンロードします。

  • Prometheus Reader をクリックして、Prometheus Reader プラグインをダウンロードします。

手順 3:DataX によって提供される組み込みスクリプトを使用して、DataX が期待どおりにデータを移行できるかどうかをテストする

 テストでは、Stream Reader プラグインと Stream Writer プラグインが使用されます。Stream Reader と Stream Writer は外部依存関係を必要としません。したがって、Stream Reader と Stream Writer はテストに適しています。Stream Reader と Stream Writer は、単純なデータ移行プロセスをシミュレートするために使用されます。Stream Reader はランダムな文字列を生成します。Stream Writer は文字列を受信し、CLI に出力します。

DataX をインストールする

 インストールパッケージを指定したディレクトリに解凍し、datax.py スクリプトを実行して移行タスクを開始します。

$ cd ${DATAX_HOME}
$ python bin/datax.py job/job.json
// 指定されたディレクトリにインストールパッケージを解凍し、datax.pyスクリプトを実行して移行タスクを開始します。

移行結果を確認する

 データが移行された場合、次のサンプルに返される情報が示されています。

Task start time: 2019-04-26 11:18:07
Task end time: 2019-04-26 11:18:17
Time consumed: 10s
Average traffic: 253.91KB/s
Write rate: 10000rec/s
Number of records obtained: 100000
Number of write and read failures: 0
// タスク開始時刻:2019-04-26 11:18:07
// タスク終了時刻:2019-04-26 11:18:17
// 消費時間:10秒
// 平均トラフィック:253.91KB/s
// 書き込み速度:10000レコード/秒
// 取得レコード数:100000
// 書き込みおよび読み取りの失敗数:0

DataX のテスト方法の詳細については、「データ移行のクイックスタート」をご参照ください。

手順 4:Prometheus から TSDB データベースにデータを移行するタスクを構成して開始する

 手順 3 では、Stream Reader プラグインと Stream Writer プラグインを使用して、DataX の移行機能をテストしました。移行結果は、DataX が期待どおりにデータを移行できることを示しています。以下の部分では、Prometheus Reader プラグインと TSDB Writer プラグインを使用して、Prometheus から TSDB データベースにデータを移行する方法について説明します。

移行タスクを構成する

 Prometheus から TSDB データベースにデータを移行するタスクを構成します。この例では、タスク名は prometheus2tsdb.json です。次のサンプルコードは、タスク構成の例を示しています。パラメーターの詳細については、「パラメーターの説明」セクションを参照してください。

{
"job":{
"content":[
{
"reader":{
"name":"prometheusreader",
"parameter":{
"endpoint":"http://localhost:9090",
"column":[
"up"
],
"beginDateTime":"2019-05-20T16:00:00Z",
"endDateTime":"2019-05-20T16:00:10Z"
}
},
"writer":{
"name":"tsdbwriter",
"parameter":{
"endpoint":"http://localhost:8242"
}
}
}
],
"setting":{
"speed":{
"channel":1
}
}
}
}
// Prometheus から TSDB データベースにデータを移行するタスクを構成します。

移行タスクを開始する

$ cd ${DATAX_HOME}/..
$ ls
  datax/  datax.tar.gz  prometheus2tsdb.json
$ python datax/bin/datax.py prometheus2tsdb.json
// 移行タスクを開始します。

移行結果を確認する

 データが移行された場合、次のサンプルに返される情報が示されています。

Task start time: 2019-05-20 20:22:39
Task end time: 2019-05-20 20:22:50
Time consumed: 10s
Average traffic: 122.07KB/s
Write rate: 1000rec/s
Number of records obtained: 10000
Number of write and read failures: 0
// タスク開始時刻:2019-05-20 20:22:39
// タスク終了時刻:2019-05-20 20:22:50
// 消費時間:10秒
// 平均トラフィック:122.07KB/s
// 書き込み速度:1000レコード/秒
// 取得レコード数:10000
// 書き込みおよび読み取りの失敗数:0

Prometheus から TSDB データベースにデータを移行する方法の詳細については、「Prometheus から TSDB データベースへのデータ移行」をご参照ください。

パラメーターの説明

 次の表にパラメーターを示します。

Prometheus Reader

パラメーター

タイプ

必須

説明

デフォルト値

endpoint

String

はい

Prometheus の HTTP エンドポイント。

該当なし

http://127.0.0.1:9090

column

Array

はい

移行するデータの列。

[]

["m"]

beginDateTime

String

はい

このパラメーターは、endDateTime パラメーターと共に使用して、時間範囲を指定します。この時間範囲内に生成されたデータが移行されます。

該当なし

2019-05-13 15:00:00

endDateTime

String

はい

このパラメーターは、beginDateTime パラメーターと共に使用して、時間範囲を指定します。この時間範囲内に生成されたデータが移行されます。

該当なし

2019-05-13 17:00:00

TSDB Writer

パラメーター

タイプ

必須

説明

デフォルト値

endpoint

String

はい

移行先 TSDB データベースの HTTP エンドポイント。

該当なし

http://127.0.0.1:8242

batchSize

Integer

いいえ

一度に移行するデータレコードの数。値は 0 より大きい整数である必要があります。

100

100

maxRetryTime

Integer

いいえ

移行エラーが発生した後に許可される最大再試行回数。値は 1 より大きい整数である必要があります。

3

3

ignoreWriteError

Boolean

いいえ

このパラメーターは、maxRetryTime パラメーターを無視するかどうかを指定します。 ignoreWriteError パラメーターが true に設定されている場合、システムは書き込みエラーを無視し、データを再度書き込もうとします。 ignoreWriteError パラメーターが false に設定されている場合、最大再試行回数に達すると、データ書き込みタスクは終了します。

false

false

DataX が TSDB データベースにアクセスできることを確認してください。

 TSDB Writer は、/api/put HTTP API オペレーションを呼び出してデータを書き込みます。データ移行を成功させるには、移行タスクの各プロセスが TSDB によって提供される HTTP API にアクセスできることを確認してください。アクセスできない場合、接続例外がスローされます。

DataX が Prometheus にアクセスできることを確認してください。

 Prometheus Reader は、/api/v1/query_range オペレーションを呼び出すことによってデータを読み取ります。データ移行を成功させるには、移行タスクの各プロセスが Prometheus によって提供される HTTP API にアクセスできることを確認してください。アクセスできない場合、接続例外がスローされます。

FAQ

移行プロセスの Java 仮想マシン(JVM)メモリサイズを変更できますか?

はい、移行プロセスの JVM メモリサイズを変更できます。次のコマンドを実行して、Prometheus から TSDB データベースにデータを移行するタスクの JVM メモリサイズを変更できます。

python datax/bin/datax.py prometheus2tsdb.json -j "-Xms4096m -Xmx4096m"
// 移行プロセスのJVMメモリサイズを変更できます。

TSDB データベースの IP アドレスホワイトリストに IP アドレスを追加するにはどうすればよいですか?

IP アドレスホワイトリストの構成方法については、「IP アドレスホワイトリストの設定」をご参照ください。

移行タスクが Elastic Compute Service(ECS)インスタンスで実行されている場合、仮想プライベートクラウド(VPC)をどのように構成すればよいですか?また、発生する可能性のある問題は何ですか?

ECS セキュリティグループのユースケース」をご参照ください。