このトピックでは、データ変換の結果をターゲット Logstore に書き込む際に発生するエラーの一般的な原因と、そのトラブルシューティング方法について説明します。
仕組み
ログイベントは変換された後、事前に構成されたターゲット Logstore に送信されます。Log Service のドメイン固有言語 (DSL) エンジンは、一度に 1 エントリから 1 万近くのエントリまでの範囲で、ソースログのバッチを読み取ります。エンジンは、変換後すぐに各ログを出力するのではなく、まず処理されたデータをキャッシュに保存します。ソースバッチ全体が処理された後にのみ、エンジンは変換されたすべてのデータを一度に出力します。
この段階でのエラーは、通常、ターゲット Logstore への異常なアクセスが原因で発生します。考えられる原因は次のとおりです:
-
ターゲット Logstore の構成が正しくありません。
-
ターゲット Logstore の情報が変更されました。
-
ネットワークエラーが発生しました。
エラーの影響:
-
ターゲット Logstore への書き込み中にエラーが発生した場合、データ変換ジョブは成功するか、手動でジョブを停止するまで、操作のリトライを継続します。リトライが成功した場合、ジョブはデータ損失やデータ重複なしで通常どおり実行を継続します。
-
一部のデータが書き込まれた後にエラーが発生した場合、ジョブはブレークポイントを保存し、操作のリトライを継続します。例えば、2 つの出力先が構成されていて、一方のターゲットへの書き込み操作は成功し、もう一方のターゲットへの書き込み操作が失敗した場合に、この状況が発生する可能性があります。リトライ操作が成功した場合、データ損失やデータ重複は発生しません。この時点でジョブを停止して再起動すると、保存されたブレークポイントから再開されます。これによりデータ損失は防げますが、データ重複が発生する可能性があります。
一般的なエラーのトラブルシューティング
ターゲット Logstore が無効な AccessKey を使用している
無効な AccessKey は、無効な AccessKey ID または無効な AccessKey Secret が原因である可能性があります。
-
エラーログ:
# Invalid AccessKeyId { "errorCode": "Unauthorized", "errorMessage": "AccessKeyId not found: LTAI****************" } # Invalid AccessKeySecret { "errorCode": "SignatureNotMatch", "errorMessage": "signature uJfAJbc0ji04gb+cXhh0qWt****= not match" } -
トラブルシューティング方法:
ジョブの構成を確認し、ターゲット Logstore の AccessKey ID と AccessKey Secret が有効かつ正しいことを確認してください。
ターゲットプロジェクトが存在しない
-
エラーログ:
{ "errorCode": "ProjectNotExist", "errorMessage": "The Project does not exist : your_project_name" } -
原因:
エラーログに表示される
Project does not existというエラーには、考えられる原因が3つあります:-
ジョブの構成に含まれるターゲットプロジェクト名が正しくありません。
-
ターゲットプロジェクト名は正しいですが、データ変換ジョブの実行中にプロジェクトが削除されました。
-
-
トラブルシューティング方法:
-
ジョブの構成でターゲットプロジェクト名が正しいかどうかを確認してください。
-
対象のプロジェクトが削除されているかどうかを確認します。
-
-
出力先が存在しない。
変換ルールの例:
e_coutput("target1")-
エラーログ:
{ "errorMessage": "transform_data: output target target1 is not found in configurations" } -
原因:
上記の DSL ルールはログイベントを
target1に出力しますが、エラーログはtarget1 is not found in configurations(target1 が構成に見つからない) ことを示しています。これは、変換ルールの構成に、target1に関連付けられたターゲットプロジェクトと Logstore が定義されていないことを意味します。 -
トラブルシューティング方法:
DSL ルールの構成を確認し、ルールで参照されているすべてのストレージターゲットが構成で定義されていることを確認してください。
-
ターゲット Logstore の情報が変更された
-
原因:
ターゲット Logstore の情報を正しく構成し、ジョブがすでに一部のデータを処理している可能性があります。しかし、データ変換中にターゲット Logstore の情報が変更されたため、元の構成では Logstore にアクセスできなくなっています。
-
エラーログ:
ターゲット Logstore の情報の変更は、通常、次の 2 つのシナリオで発生します:
-
ターゲット Logstore が削除された。
{ "errorMessage": "Logstore [logstore_name] does not exist." } -
ターゲット Logstore の AccessKey が変更された。
# Invalid AccessKeyId { "errorCode": "Unauthorized", "errorMessage": "AccessKeyId not found: LTAI****************" } # Invalid AccessKeySecret { "errorCode": "SignatureNotMatch", "errorMessage": "signature uJfAJbc0ji04gb+cXhh0qWt****= not match" }
-
-
トラブルシューティング方法:
-
ターゲット Logstore が削除されていないか確認してください。
-
ターゲット Logstore の AccessKey が変更されていないか確認してください。
-
-
ネットワークエラー。
-
エラーログ:
{ "errorCode": "LogRequestError", "errorMessage": "HTTPConnectionPool(host='your_host', port=80): Max retries exceeded with url: your_url (Caused by NewConnectionError: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'" } -
トラブルシューティング方法:
ネットワーク接続が安定しているか確認してください。
-