私はGoogle Cloud RunのStackdriver Trace統合について詳しく説明しています。エージェントと連携させることはできますが、いくつか質問があります。
とすれば
- Stackdriverエージェントは、トレースを小さなバッファに集約し、定期的に送信します。
- Cloud Runサービスがリクエストを処理していない場合、CPUアクセスは制限されます。
- Cloud Runサービスにはシャットダウンフックはありません。シャットダウンする前にバッファをクリアすることはできません。コンテナはSIGKILLを取得するだけです。これは、アプリケーションから取得できない信号です。
- リクエストとレスポンスのサイクル外で情報を送信するバックグラウンドプロセスを実行すると、Knative Containerランタイムコントラクトに違反しているようです
- ロギングデータのコレクションは文書化されており、エージェントを実行する必要はありませんが、テレメトリに対するそのようなソリューションはありません。
- エージェントベースのアプローチを使用してCloud Runでトレースが失われたという報告が1つ見つかりました
Googleの仕組み
Cloud Endpoints ESP(Cloud Run統合はベータ版)のソースコードを調べて、別の方法で解決するかどうかを確認しましたが、同じパターンが使用されています。トレース(1s)と定期的にクリアされます。
質問
トレース統合がテストセットアップで機能しているように見えますが、これを運用環境で実行すると、トレースが不完全で欠落していることが心配です。
これは架空の問題ですか、それとも本当の問題ですか?
これに取り組む正しい方法は、エージェントプロセスを使用する代わりに、テレメトリーをログに書き込むことです。Stackdriver Traceでサポートされていますか?