このトピックでは、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 エンドポイント。 | 該当なし |
|
column | Array | はい | 移行するデータの列。 |
|
|
beginDateTime | String | はい | このパラメーターは、endDateTime パラメーターと共に使用して、時間範囲を指定します。この時間範囲内に生成されたデータが移行されます。 | 該当なし |
|
endDateTime | String | はい | このパラメーターは、beginDateTime パラメーターと共に使用して、時間範囲を指定します。この時間範囲内に生成されたデータが移行されます。 | 該当なし |
|
TSDB Writer
パラメーター | タイプ | 必須 | 説明 | デフォルト値 | 例 |
---|---|---|---|---|---|
endpoint | String | はい | 移行先 TSDB データベースの HTTP エンドポイント。 | 該当なし |
|
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 セキュリティグループのユースケース」をご参照ください。