問題タブ [google-cloud-trace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
615 参照

google-cloud-run - OpenTelemetry を使用した Google Cloud Run でのトレースの伝播

Python gRPC サービスと通信する Flask アプリがあり、どちらも Google Cloud Run にデプロイされています。アプリをインストルメント化した後、Google Trace でトレースを確認できますが、それらはすべて異なるトレース ID を持っているように見えます。これは、トレースが 2 つのサービス間でリンクされていないことを意味します。これは、両側に grpc/Flask インストルメンターがセットアップされている両方のサービスでトレースするための私のセットアップ コードです。

ConsoleSpanExporter を使用して、両方のサービスのトレース ID が一致していることをローカルで確認できますが、Google Cloud Run では、明らかに Google Trace で個別のトレースが生成されないため、ネットワークがサービス間のヘッダーを削除するか、他の何かが削除されるかどうか疑問に思っています。発生しているということは、Trace ID が伝播されていないことを意味しますか?

追加のメモとして、Cloud Run の Trace/Span ID の前にあるロード バランサーが CloudTraceSpanFormatPropagator() を使用して伝播されていないことにも気付きました。これにより、ログがリクエストに対してネストされていないため、ログが乱雑になります。

0 投票する
2 に答える
346 参照

google-cloud-platform - X-Cloud-Trace-Context ヘッダー値を手動で指定し、別の Cloud Run リクエストでログを関連付けてトレースするにはどうすればよいですか?

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 によって自動生成されたログ) を関連付けるための推奨される解決策は何ですか?

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