コンテンツに移動
データベース

Sqlcommenter により、OpenTelemetry のビジョンをデータベースまで拡張

2021年9月24日
https://storage.googleapis.com/gweb-cloudblog-publish/images/databases_qSufZtU.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2021 年 9 月 10 日に、Google Cloud blog に投稿されたものの抄訳です。

データベースのオブザーバビリティは、すべての DevOps チームにとって重要です。実行速度が遅いアプリケーションのトラブルシューティングを行う際、開発者、DBA、データ エンジニア、または SRE は、アプリケーション パフォーマンス モニタリング(APM)用のさまざまなツールを使用しますが、こうしたツールにはデータベース アクティビティへのアクセスが必要です。そのため、エンドツーエンドのオブザーバビリティを確保するには、データベース テレメトリーをアクセスしやすいものにし、選択したツールにシームレスに統合することが不可欠です。そこで本日、オープンソースのオブジェクト リレーショナル マッピング(ORM)の自動インストルメンテーション ライブラリである Sqlcommenterを、オープンソースのオブザーバビリティ フレームワークである OpenTelemetryに統合することを発表いたします。この統合により、アプリケーションを中心とした、オープン標準によるデータベースのオブザーバビリティを実現できます。

アプリケーションとデータベース テレメトリーを簡単に関連付けられるようにするため、Google は今年の前半に Sqlcommenter をオープンソース化しました。それ以来、Sqlcommenter はデベロッパー コミュニティで広く採用されています。Sqlcommenter を使用すると、オブジェクト リレーショナル マッピング(ORM)がクエリを実行する前に、実行の原因となったアプリケーション コードに関する情報を含むコメントを SQL ステートメントに追加できます。これにより、スロークエリとソースコードの関連付けプロセスが簡素化され、バックエンド データベースのパフォーマンスをより深く理解できるようになります。また、Sqlcommenter により、OpenTelemetry のトレース コンテキスト情報がデータベースに伝播されるため、アプリケーション トレースとデータベースのクエリプランの関連付けが可能になります。

次のクエリログの例は、Sequelize ORM が生成した SQL に対して、Sqlcommenter が追加したコメントを示したものです。

読み込んでいます...

アプリケーション開発者は、Sqlcommenter から得られるオブザーバビリティ情報を使用してスロークエリ ログを分析できるだけでなく、このオブザーバビリティ情報を Cloud SQL Insights や、APM ツール(Datadog、Dynatrace、Splunk から提供)といった他のプロダクトに統合して、アプリケーション中心のモニタリングを行うこともできます。

OpenTelemetry のビジョンをデータベースまで拡張

Kubernetes に次いで現在 2 番目に活発な Cloud Native Computing Foundation(CNCF)オープンソース プロジェクトである OpenTelemetry を使用すると、サービスやソフトウェアからテレメトリー データを簡単に作成、収集し、さまざまなアプリケーション パフォーマンス モニタリング ツールに転送できます。これまで OpenTelemetry には、アプリケーションのタグやトレースをデータベースに送信し、アプリケーション スタックと関連付けるための共通の標準が存在しませんでした。OpenTelemetry のビジョンをデータベースに拡張するため、Google は Sqlcommenter と OpenTelemetry を統合し、開発者がデータベースのオブザーバビリティを実現するためのさまざまなツールを選択できるようにしました。OpenCensus および OpenTelemetry の共同創設者であり、Splunk のシニア プリンシパル ソフトウェア エンジニアでもある Bogdan Drutu 氏は、次のように見解を語っています。

「Google Cloud の Sqlcommenter が OpenTelemetry に統合されることで、ベンダーに依存しないオープン標準とライブラリにより、アプリケーション パフォーマンス モニタリング ツールの充実したエコシステムを、簡単にデータベースと統合できるようになります。そのため、開発者はデータベースのオブザーバビリティを実現するためのさまざまなツールを選択できます。」

OpenTelemetry、Google Cloud、Google のパートナー

Google は、エンドツーエンドのアプリケーション スタックの可視化には健全なオブザーバビリティ エコシステムが必要であると信じており、これは Google のオープンソース イニシアチブへの継続的な取り組みに反映されています。この信念は、Datadog、Dynatrace、Splunk など、このエコシステムに関わっている他の主要企業によって共有されています。

Datadog 

「データベース パフォーマンスの可視性と、それがもたらすアプリケーションへの影響は、エンジニアリングにとって非常に重要です。クエリのパフォーマンスが低下すると、スタックの他のすべてのレイヤが影響を受けるため、トラブルシューティングが困難になります。Sqlcommenter によりアプリケーション リクエストとデータベース クエリのギャップが解消され、APM ユーザーはフロントエンドからデータティアに至るまで、すべてのレベルでリクエストをトラブルシューティングできるようになります。OpenTelemetry に早くから貢献してきた私たちは、今回の Google Cloud による貢献によって、オープン標準ベースのオブザーバビリティというビジョンに近づけることを非常に嬉しく思います。」- Datadog プロダクト担当シニア バイス プレジデント Ilan Rabinovitch 氏

Dynatrace

「数千社のデータセットを観察してきた経験から、弊社ではアプリケーションのパフォーマンス低下の主な理由が、データベースのアクセス パターンとパフォーマンスにあると考えています。Dynatrace は OpenTelemetry への主要な貢献企業として、問題分析、変更検出、リアルタイムの最適化分析の際に Sqlcommenter によって生成されるテレメトリー データをネイティブにサポートしています。Sqlcommenter と OpenTelemetry が統合されることで、開発者がデータベース クエリの影響を理解し、アプリケーション パフォーマンスの最適化に向けて協力しやすくなることを期待しています。」- Dynatrace バイス プレジデント兼最高技術ストラテジスト Alois Reitbauer 氏

Splunk

「Splunk と Google は、OpenTelemetry を当初からサポートしてきました。Sqlcommenter と OpenTelemetry の統合は、Splunk Observability Cloud のお客様が、アプリケーション中心のデータベース モニタリングを強化し、データベースに対する DevOps の取り組みを加速できることを意味します。」- OpenCensus および OpenTelemetry 共同創設者、Splunk プロダクト管理担当ディレクター Morgan McClean 氏

Cloud SQL Insights の例: Sqlcommenter を使用して、開発者向けにデータベースのオブザーバビリティを簡素化

最新のアプリケーション アーキテクチャでは、データベースのトラブルシューティングが困難

今日のマイクロサービスベースのアーキテクチャでは、次の図に示すように、アプリケーション(その多くがサードパーティ製やオープンソース)は相互接続されたサービスのメッシュとして再定義されています。そのため、システム パフォーマンスの問題の原因を把握するのは困難になりがちです。特にデータベースが関係している場合、アプリケーション コードをデータベース パフォーマンスに関連付けることがさらに難しくなります。Cloud SQL Insights では Sqlcommenter を利用して、分散アーキテクチャにおけるデータベースのトラブルシューティングを簡素化しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/ui.max-1700x1700.jpg

アプリケーション中心のデータベース モニタリング 

データベースの問題を示すアラートが発生した場合、オンコール エンジニアにとって、データベースに影響を与えているマイクロサービスを特定することは困難になりがちです。既存のデータベース モニタリング ツールにはクエリ中心のビューしか用意されていないため、アプリケーションとクエリの関係を確認できません。開発者がアプリケーションの観点からデータベースをモニタリングできるように、Cloud SQL Insights は Sqlcommenter から送信された情報を使用して、アプリケーションから送信された主なアプリケーション タグ(モデル、ビュー、コントローラ、ルート、ホストなど)を特定します。次の Insights ダッシュボードの例に示すように、ユーザーはクエリではなくビジネス機能によって分類されたパフォーマンスの全体像を把握できます。これにより、データベースの遅延を引き起こしているサービスを特定しやすくなります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Application-centric_database_monitoring.max-800x800.jpg

エンドツーエンドのトレース

問題を引き起こしているマイクロサービスやクエリだけでなく、アプリケーション コードのどの部分が問題の原因になっているかについても、即座に特定する必要があります。Sqlcommenter により OpenTelemetry のトレース コンテキスト情報がデータベースに伝播されるため、エンドツーエンドのアプリケーション トレースを取得できます。Cloud SQL Insights を使用すると、SQL コメントの traceparent コンテキスト情報とともにクエリプランがトレースとして生成されます。トレース ID はアプリケーションによって作成され、親スパン ID とトレース ID は SQL コメントとしてデータベースに送られるため、アプリケーションからデータベースへのエンドツーエンドのトレースが可能になります。次の例は、NodeJS Express Sqlcommenter ライブラリのクエリプランのトレーススパン、および OpenTelemetry のアプリケーションのトレーススパンを示したものです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/End-to-end_tracing.max-1400x1400.jpg

Sqlcommenter への貢献

Sqlcommenter は現在、Python、Java、Node.js、Ruby の各言語で使用でき、Django、Sqlalchemy、Hibernate、Knex、Sequelize、Rails の ORM をサポートしています。これらすべての Sqlcommenter ライブラリは、CNCF プロジェクトの一部として利用できるようになります。OpenTelemetry コミュニティのサポートの元、より多くの言語と ORM に拡張できる可能性があります。OpenTelemetry の Slack チャンネルには こちらからご参加いただけます。または、こちらから Special Interest Group(SIG)をご確認ください。

-プロダクト マネージャー Nimesh Bhagat

投稿先