5

Cloud Run と Cloud Tasks を使用して、Webhook の非同期処理を行っています。Cloud Run サービスへのリクエストを受け取ると、タスクを Cloud Tasks キューに入れ、サービスからすぐにレスポンスを返します。その後、Cloud Tasks はサービスを再度トリガーし (別のエンドポイント)、何らかの処理を行います。同じトレース ID を使用してこれらのステップのすべてのログを関連付けたいのですが、うまくいきません。

Cloud Tasks でタスクを作成するときに、X-Cloud-Trace-Contextヘッダーを送信するようにリクエストし、元のリクエストのX-Cloud-Trace-Contextヘッダー値を入力します。理論的には、リクエストが Cloud Tasks から Cloud Run サービスに送信されると、このヘッダー値が含まれている必要があり、すべてのログが正しく関連付けられます。ただし、この 2 番目のリクエストが来ると、Cloud Run が新しいトレース ID でヘッダーをオーバーライドしているように見えます。

これを防ぐ方法はありますか?そうでない場合、上記の手順ですべてのログ (サービス コードによって生成されたログと、GCP によって自動生成されたログ) を関連付けるための推奨される解決策は何ですか?

助けてくれてありがとう!

4

2 に答える 2

0

Cloud Tasks によって設定された HTTP ヘッダーをオーバーライドすることはできないと思いますが、traceStack Driver に送信されるログ レコードのメンバーをオーバーライドすることはできます。

そのため、元のトレース ID をタスク ペイロードに含めてからtrace、実際の作業を実行する Cloud Run エンドポイントによって生成されたログで上書きすることができます。

于 2021-05-28T15:02:13.990 に答える