データ変換タスクが開始されると、データ変換エンジンは、ルーティングルールに基づいて変換結果を宛先Logstoreに送信します。 このトピックでは、データ変換タスクが失敗した場合に使用できるトラブルシューティング方法について説明します。 たとえば、宛先Logstoreにログが生成されないか、データ変換プロセス中に長い遅延が発生します。
エラーの分析
エラーが発生した場合は、まずデータ変換プロセスでエラーを特定できます。
- データ変換エンジンを開始する
- ドメイン固有言語 (DSL) ルールがデータ変換エンジンのセキュリティチェックに失敗した場合、このステップでエラーが発生する可能性があります。
- このステップでエラーが発生した場合、データ変換タスクは停止します。 DSLルールを変更し、データ変換タスクを再開する必要があります。 再試行が成功した場合、変換タスクは続行され、データの損失や重複は発生しません。
- ソース Logstore からデータを読み取ります。
- ソースLogstoreへのアクセスに失敗したため、このステップでエラーが発生する可能性があります。 障害は、ソースLogstoreの無効な設定、ネットワークエラー、またはソースLogstoreの更新が原因で発生する可能性があります。
- この手順でエラーが発生した場合、データ変換タスクは、データの読み取りが成功するか、手動で停止するまで再試行を続けます。 再試行が成功した場合、変換タスクは継続し、データ損失は発生しません。
- データの読み取り後にエラーが発生した場合、データ変換タスクはチェックポイントを保存し、再試行を続けます。 再試行が成功すると、チェックポイントからデータを読み取り続け、データの損失や冗長性は発生しません。 リトライ処理中にタスクが停止した場合、データの損失や冗長性は発生しません。
- ログイベントを変換する
- データ変換プロセス中にすべてまたは一部のログイベントに変換ルールが適用されない場合、このステップでエラーが発生する可能性があります。
- 変換処理中に、変換ルールと競合するログイベントが発生すると、エラーが発生します。これらのエラーは、警告レベルとエラーレベルに分けられます。 エラーレベルはlogging.levelnameフィールドによって識別されます。
- ERRORレベルのエラーの場合、関連するログイベントはドロップされます。変換結果にはこれらのログイベントは含まれません。
- WARNINGレベルのエラーの場合、現在のDSLではデータは変換されない。例えば、ログイベントが指定された正規表現にマッチしない場合、次のステップが実行されます。
- 変換結果を宛先Logstoreにエクスポートします。
- このステップでは、宛先のLogstoreへのアクセスに失敗し、エラーが発生することがあります。失敗は、宛先Logstoreの無効な設定、ネットワークエラー、または宛先Logstoreの更新が原因で発生する可能性があります。
- このステップでエラーが発生した場合、データ変換タスクはデータの読み込みに成功するか、手動で停止するまで再試行を続けます。リトライが成功した場合、変換タスクは続行され、データの損失は発生しません。
- あるデータをエクスポートした後にエラーが発生した場合、変換タスクは再試行を続けます。たとえば、2つの宛先Logstoreが指定されているとします。 あるLogstoreからのデータのエクスポートは成功しますが、他のLogstoreからのデータは失敗します。 この場合、変換タスクはブレークポイントを保存し、再試行を続けます。 再試行が成功した後、データの損失や重複は発生しません。 エラーが発生したときにデータ変換タスクが停止して再開された場合、データ変換タスクはブレークポイントから続行されます。 この場合、データは失われないが、データの冗長性が生じる可能性がある。
一般的なエラーのトラブルシューティング
- データが宛先Logstoreに書き込まれているかどうかを確認します。 データが宛先Logstoreに最近書き込まれたかどうかを確認するには、宛先Logstoreの [消費プレビュー] ページでデータを表示します。説明 以下の理由により、消費プレビューデータが不正確になる可能性があります。
- Log Serviceでは、ログが受信された時刻に基づいてログが変換されます。 履歴ログが変換されているシナリオでは、ログが書き込まれる時刻が、履歴ログを照会するために指定された時間範囲内にない場合があります。
- 過去ログのインデックスをもとに、ログデータを照会することができます。 しかしながら、数分の遅延が生じることがある。 履歴ログがデータ変換タスクで書き込まれている場合、ログデータはすぐには照会されません。
- データ変換タスクのステータスを表示します。
- 現在のタスクが開始されているかどうかを確認します。 詳細については、「t1253393.html#section_g57_l8g_v5v」をご参照ください。 時間帯が決まっているタスクは、指定した終了時刻になると自動的に停止します。
- 現在のタスクのコンシューマグループの有効化と更新がされているかを確認します。
- Check whether errors occur. 詳細については、「エラーログを表示する」をご参照ください。 エラーが発生した場合は、エラーの原因を特定して修正してください。 詳細については、「エラーの分析」をご参照ください。
- ソース Logstore にデータが生成されているかどうかを確認します。 現在のデータ変換タスクの時間範囲内で、ソース Logstore にログが存在するかどうかを確認します。
- 時間範囲の終了時刻が指定されていない場合は、ソースLogstoreに新しいログが生成されているかどうかを確認します。 新しいログが生成されず、指定された時間範囲内に過去のログが存在しない場合、データ変換タスクを実行することはできません。
- 履歴の時間範囲を選択した場合、時間範囲内のソースLogstoreにログが存在するかどうかを確認します。
データ変換タスクのt1253393.html#section_ynp_3xv_m26をクリックし、時間範囲を選択して、指定した時間範囲内に生ログが存在するかどうかを確認します。
- 変換ルールが有効かどうかを確認する。変換ルールにコードエラーが存在するかどうかを確認します。 例:
- ログ時間が変更されました。 その結果、指定された時間範囲内にログが見つかりません。
- ログは、特定の条件下で変換ルールに基づいて削除されます。 たとえば、変換ルールに次のコードが含まれているとします。 ログに
name
フィールドが含まれていない場合、またはこのフィールドの値がnullの場合、ログは削除されます。 コード内のプリロジックは、name
フィールドを構築するために使用されます。 ロジック前の問題によりname
フィールドが構築されない場合、ログは生成されません。# .... The pre-logic. # .... 名前フィールドをビルドします... e_keep(e_search('name: "?" '))
- タスクがデータ強化のためにサードパーティからデータをプルする場合、サードパーティのデータサイズが大きすぎるかどうかを確認します。 そうである場合、データ変換タスクは、すぐにデータを消費し始めることができず、長い間初期化状態に留まることがある。 例:
e_dict_map(res_rds_mysql(..database="userinfo", table="user"), "username", ["city", "school", "age"])
t1253393.html#section_ynp_3xv_m26 のデータ変換タスクで、時間範囲を選択し、[データのプレビュー]をクリックして結果を表示します。
ログを照会する場合は、エラーの原因となる特定のステートメントをコメントアウトし、結果を再度プレビューします。
- シャードの数が予想どおりかどうかを確認します。
データ変換が遅すぎる場合は、ソースLogstoreとターゲットLogstoreがパフォーマンスの期待値を満たしているかどうかを確認します。 ソースまたはターゲットLogstoreのシャード数を調整することを推奨します。
エラーログを表示する
internal-etl-log
Logstore でログを表示します。データ変換タスクによって生成されたログは、internal-etl-log
Logstore に保存されます。 このLogstoreは、Log Serviceがデータ変換タスクを実行すると自動的に生成されます。internal-etl-log
Logstoreは、無料で提供される専用のLogstoreです。その設定を変更したり、データを書き込んだりすることはできません。internal-etl-log
Logstore 内の各ログイベントの__topic__
フィールドは、データ変換タスクのステータスを示します。 このフィールドに基づいて、データ変換タスクでエラーが発生したかどうかを確認できます。- 各ログイベントの
message
とreason
のフィールドを確認すると、詳細なエラー情報を見ることができます。次の図にフィールドを示します。
- ダッシュボードでエラーログを表示します。
Click a data transformation task and check the dashboard in the Status section on the Data Transformation Overview page.
エラー情報は、例外の詳細セクションの理由
列に表示されます。 - コンソールでエラーログを表示します。
プレビューフェーズのエラーログは、Log Serviceコンソールに表示されます。 プレビューフェーズでは、Log Serviceは変換ルールで指定された操作をシミュレートし、データが期待どおりに変換されているかどうかを確認します。 ソースまたはターゲットLogstoreに変更はありません。 したがって、プレビューフェーズで発生したエラーは、ソースログイベントに影響を与えません。
プレビュー制限
- RAMユーザーが無効なAccessKeyペアを使用してソースLogstoreにアクセスしても、エラーは発生しません。
プレビューフェーズでは、データを取得するためのコンシューマグループは作成されません。 したがって、Log Serviceはコンシューマーグループの権限をチェックしません。
- 変換ルールで保存先Logstoreの名前エラーが発生しても、エラーは発生しません。
プレビューフェーズでは、デスティネーションLogstoreにデータを書き込まない。 したがって、変換ルールでターゲットLogstoreが正しく設定されているかどうかは確認されません。
- ターゲットLogstoreの設定エラーが存在してもエラーは発生しません。
- 設定エラーには、無効な宛先プロジェクト、宛先ログストア、およびAccessKeyペアの設定が含まれます。
- プレビューフェーズでは、データは宛先Logstoreに書き込まれません。 したがって、システムは移行先Logstoreの設定が正しいかどうかを確認しません。
- プレビューフェーズでは、一部のデータのみが取得されます。
- デフォルトでは、プレビュー中のデータ変換用にソース Logstore から 1,000 件のデータレコードのみが取得されます。
- 最初の1,000データレコードが変換された後に変換結果が生成されない場合、Log Serviceは変換結果が生成されるまで5分間データをプルし続けます。