0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AoToAdvent Calendar 2024

Day 17

Cloud Run services トレース監視「だいたいぜんぶ」

Last updated at Posted at 2024-12-25

はじめに

こんにちは、Datadog Japan で Sales Engineer をしている AoTo です。
Google Cloud で好きなサービスは、圧倒的に Cloud Run です!

この投稿は AoTo Advent Calendar 2024 16日目の記事です。

皆さんは Cloud Run の監視、きちんと行えているでしょうか?

Cloud RunGoogle Cloud のマネージドサービスであり、デフォルトで Cloud Logging, Cloud Monitoring, Cloud Trace と統合されています。

Monitoring_CloudRun.png

Cloud Run servivces を利用すると、自動的に Cloud Trace へトレースが記録されることはご存知でしょうか?
本ブログでは Cloud Run services におけるトレースの仕組みと利用方法に触れながら、Cloud Run service にデプロイされるアプリケーションのトレースについて解説します🐶

メトリクス・ログ監視は以下のブログをご参照ください!

Cloud Trace とのネイティブ統合

Cloud Run services はサービスへの受信リクエストを自動的にトレースしスパンデータを Cloud Trace に連携します。この時、標準の W3C Trace Context に準拠した traceparent ヘッダーを Cloud Run services へのリクエストに自動的に入力します。traceparent ヘッダーには以下の形式で version, trace-id, parent-id, trace-flag が入力されます。

traceparent: {version:00}-{trace-id:^[0-9a-f]{32}$}-{parent-id:^[0-9a-f]{16}$}-{trace-flag:01}

W3C Trace Context の詳細な解説は『分散トレースを理解する! Trace Context 解体新書』をご参照ください。

トレースを Cloud Trace で可視化するためには、32bit で表記される一意の trace-id を利用します。この traceparent ヘッダーを適切に伝搬することで、後述するアプリケーションのトレースと接続して表示できます。

Datadog をはじめとする 3rd Party のオブザーバビリティプラットフォームへこの自動トレースを送信することはできません。3rd Party プラットフォームで Cloud Run services の分散トレースを行う場合、この自動生成されるルートスパンは利用できません。

ただし、traceparent ヘッダーを伝搬できる計装ライブラリを利用している場合は、同一の trace-id を利用してアプリケーションをトレースできるため、Cloud Trace と 3rd Party プラットフォーム間で相互に検索可能です。

アプリケーションのトレース

追加で Cloud Run serices アプリケーションを計装し、サービスへのリクエスト時に自動的に生成されるルートスパンと接続できます。この時、アプリケーションの計測方法を利用して、各言語のアプリケーションからスパンを作成し Cloud Trace に送信できます。

CloudRun_Traces.png

Google Cloud が推奨するアプリケーションの計測方法は、OpenTelemetry による W3C 準拠の計装です。その他にも Zipkin, Spring Boot による計装が紹介されていますが、Cloud Run の自動生成スパンが伝搬する traceparent ヘッダーを受け取ることができないため、個人的には OpenTelemetry の利用を推奨します。

OpenTelemetry で計装する際、生成されたスパンデータは OpenTelemetry Collector により Cloud Trace に転送します。OpenTelemetry Collector は Cloud Run のマルチコンテナ(サイドカー)機能を利用してコンテナとしてデプロイします。

具体的な方法は以下のブログをご参照ください。

OpenTelemetry Collector をデプロイするオプションとして、Google Cloud 公式は observIQBindPlane を紹介しています。

これらの利用方法は以下のブログをご参照ください。BindPlane AgentOpenTelemetry Collector のディストリビューションのため、同様にサイドカーとしてデプロイできます。

どちらにも共通して Cloud Trace にトレース(スパン)データを転送するために、Google Cloud Exporeter を構成します。Google Cloud Exporeter はトレースデータの他にも、メトリクスデータを Cloud Monitoring に、ログデータを Cloud Logging に転送できるため、Cloud Run にデプロイする統合監視エージェントとしても利用できます。

おわりに

Cloud Run service で利用できるトレース監視の方式を、Cloud Trace を中心に図解を交えながら解説しました。Cloud Trace を利用することでのみ、トレースのルートスパンとなるリクエストスパンと共にアプリケーションの追加スパンを確認できる点も注意が必要です。

トレース監視まで行うことができれば、より詳細なアプリケーションのパフォーマンスを継続的に監視できます。是非 Cloud Run を利用する際はトレース監視の設計まで検討し、サービスの信頼性向上にお役立てください🐶

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?