オブザーバビリティとは、システムが生成するデータに基づいて、その現在の状態を測定し、推測する能力です。このデータは通常、ログ、メトリクス、トレース、イベントの形式で生成されます。簡単な例として、マイクロサービスアプリケーションのメトリクスを調べることで、その健全性を把握できます。

オブザーバビリティの仕組み

オブザーバビリティにより、組織は複雑なシステムの稼働状況を包括的に把握できます。データの収集、保存、分析を通じて、開発者はアプリケーションの問題を特定し、トラブルシューティングできるようになります。

オブザーバビリティは、リアルタイムでのデータ収集から始まります。収集したデータは一元化された場所に保存され、分析に使用されます。この分析には、機械学習アルゴリズム、可視化、または複数の統計的手法の組み合わせを使用できます。

この分析結果により、アプリケーションやシステム内の異常が、開発者のほか、運用、セキュリティ、その他の関連チームに通知されます。アラートは自動化でき、ビジネスやアプリケーションのニーズに基づいて設定されたしきい値、重大度レベル、その他の基準に応じてトリガーできます。異常を特定して発生箇所を突き止めた後、開発者はデータを使用してデバッグし、問題を解決できます。

オブザーバビリティデータの例

オブザーバビリティデータの主な種類には、ログ、メトリクス、トレース、イベントがあります。

  • ログ: メタデータを含む、タイムスタンプ付きのテキスト記録です。通常、これらの記録やメッセージはアプリケーションまたはシステムによって生成されます。ログ記録は、ソフトウェア開発でオブザーバビリティを実現する最も一般的な方法の1つです。
  • メトリクス: 実行時に取得される、サービスに関する測定値です。これらの数値には、CPU使用率、メモリ使用量、エラー率などが含まれます。いずれも、アプリケーションやシステムのパフォーマンスと健全性を追跡するために使用されます。
  • トレース:分散システムのノード間を移動するリクエストの経路やアクションを記録したものです。トレースには、リクエストがどのように処理され、完了までにどの程度の時間がかかったかが記録されます。このデータは、ボトルネックやその他のレイテンシーの問題を特定するのに役立ちます。
  • イベント:特定の時点で発生した重要な変更や事象の記録です。イベントデータには、環境内の状態変更、ユーザー操作、セキュリティアラート、重要なデプロイなどが含まれる場合があります。この記録は、変更が発生した理由をチームが把握するのに役立つコンテキスト情報を提供します。

監視とオブザーバビリティは異なるものですか?

モニタリングとは、システムやアプリケーション内で実行されているプロセスの進捗を観察し、確認する機能です。モニタリングはメトリクスに大きく依存します。つまり、環境を可視化し、既知の問題に対するテストを可能にします。一方、オブザーバビリティは、問題が存在する可能性を推測できる、新たな、より詳細なデータを提供します。その後、問題の原因を掘り下げることで、今後に役立つ知見を得られます。

モニタリングとオブザーバビリティは、完全に別個のものではありません。むしろ、開発者がより迅速にインサイトを得るためのデータ分析手法と可視化技術です。

これらの定義を踏まえ、以下の表では、ソフトウェアアプリケーションにおけるモニタリングとオブザーバビリティの4つの微妙な違いを詳しく見ていきます。この4つの違いは、範囲、粒度、柔軟性、分析に分類されます。

監視オブザーバビリティ

範囲

メトリクス(システム稼働時間、CPU使用率、エラー率など)を測定

システムの出力に基づいて、その背後で機能するメカニズムを理解する

粒度

収集したデータを一定の間隔で集約またはサンプリング(事前定義されたメトリクスに基づく)

詳細なデータを収集・分析し、システムの動作に関する理解と洞察を深めます

柔軟性

ベンダーによっては、導入後の変更が困難な定義済みダッシュボードやアラートしきい値が実装されます

変化する状況や要件に対応できる、変更が容易なツールを用いた柔軟で適応性の高いアプローチを採用

分析

特定のイベントや異常を特定し、対応

問題の原因を特定し、継続的に解決策を実装するために必要なツールを開発者に提供することで、プロアクティブな分析とトラブルシューティングを重視

オブザーバビリティにおいてテレメトリはどのような役割を果たすのか

ソフトウェアのオブザーバビリティにおけるテレメトリとは、ソフトウェアシステムのパフォーマンスや動作に関するデータをリアルタイムで収集し、送信することです。このデータ(応答時間、エラー率、リソース消費量など)は、システムの現在の状態を監視して把握するために使用され、開発者がパフォーマンスを改善できる箇所を特定するのに役立ちます。

テレメトリについて議論する際、OpenTelemetry (OTel)は、開発者がオブザーバビリティを容易に実現できるよう、簡素化されたアプローチを提供することから、しばしば話題に上ります。OTelは、ソフトウェアシステムからのテレメトリデータ(ログ、メトリクス、トレース)の収集を標準化する、オープンソースのツールとライブラリのセットです。

OTelの詳細と、クラウドネイティブ環境に与える影響については、「OpenTelemetryがアプリケーションのトレースと設計を変える仕組み」をご覧ください。

高度なオブザーバビリティ技術

従来のソリューションに加え、データ収集を効率化し、より動的なリアルタイムのオブザーバビリティを実現するために、高度なテクノロジーを検討する組織が増えています。

eBPF (extended Berkeley Packet Filter)は、Linuxカーネルからテレメトリデータを収集します。Linuxカーネルに直接組み込まれたこのサンドボックス型実行エンジンにより、開発者はカーネルのソースコードを変更したり、負荷の高いエージェントを実行したりすることなく、カスタムの軽量なカーネルレベルのトレースを実行できます。たとえば、チームはマイクロサービスのトポロジーをマッピングし、コンテナ間のトラフィックを追跡することで、パフォーマンス上の問題やボトルネックを迅速に特定できます。

AIOps (AI for IT operations)プラットフォームは、ほぼリアルタイムのインサイトと実行機能を提供します。これらのプラットフォームは、AIと機械学習を活用して異常を迅速に検出し、パターンを分析するとともに、ユーザーによるインサイトの可視化とアクションの自動化を可能にします。また、ユーザーパフォーマンスの向上、コストを考慮したトラフィックの最適化、セキュリティ脆弱性の修復につながる機能を自動的に実行できます。

オブザーバビリティのメリット

オブザーバビリティにより、開発者はアプリケーションへの理解を深め、次のことが可能になります。

  • 迅速なデバッグ:詳細な分析済みデータにより、開発者はシステムの問題をより迅速に診断し、デバッグできます。
  • パフォーマンスの向上:主要な指標を監視して阻害要因を特定することで、開発者はデータに基づいて意思決定を行い、アプリケーションのパフォーマンスを向上できます。
  • 信頼性の向上:オブザーバビリティデータを活用することで、開発者はユーザー体験を損なう可能性のあるシステム障害に先回りして対処できます。
  • コラボレーションの向上:長期にわたって蓄積された標準化データにより、チームは共通の指標に基づいて容易に連携し、問題を解決できます。

オブザーバビリティのデメリット

オブザーバビリティにはいくつかのデメリットがあり、主なものは次のとおりです。

  • オーバーヘッドの増加:オブザーバビリティを実装すると、アプリケーションやシステムのメトリクスを追跡する専用ツールの費用に加え、追加のデータストレージが必要となり、コストが増加する可能性があります。
  • 複雑性の増大:追加の計測と監視が必要となり、こうしたツールを追加すると、アプリケーションがさらに複雑になる可能性があります。
  • 情報過多:オブザーバビリティによって大量のデータが生成されると、チームでの管理がすぐに煩雑になる可能性があります。また、データが多すぎると、早急な解決が必要な問題の優先順位付けが難しくなることがあります。

よくあるご質問

アプリケーションオブザーバビリティと従来のモニタリングの主な違いは何ですか?

従来の監視では、メトリクスを使用してプロセスを追跡し、環境の現在の状態を可視化します。一方、オブザーバビリティでは、詳細なデータを収集・分析して深い洞察を得ることで、潜在的な問題をプロアクティブに発見します。

オブザーバビリティデータの主な4つの種類とは?

オブザーバビリティプラットフォームは通常、ログ、メトリクス、トレース、イベントという4種類のデータを収集して分析します。ログは、システムによって生成されるタイムスタンプ付きの記録です。メトリクスは、実行時のアプリやサービスに関する測定値です。トレースは、リクエストがどのように処理され、処理にどの程度の時間がかかったかを記録します。イベントは、ある時点で環境に生じた重要な変化の記録です。

OpenTelemetry(OTel)とは何か、なぜ重要なのか

OpenTelemetry (OTel)は、ソフトウェアシステムからのテレメトリデータ収集を標準化する、オープンソースのツールとライブラリのセットです。OTelは、アプリケーションの計装をバックエンドツールから分離することで、オブザーバビリティプラットフォームにおけるベンダーロックインの回避を可能にします。また、主要なすべてのプログラミング言語で一貫した規約とAPIを提供します。

クラウドネイティブなKubernetesツールとサーバーレスプラットフォームにオブザーバビリティを実装するには

従来、Kubernetesツールとサーバーレスプラットフォームでは、パフォーマンスデータの形式、命名、送信方法に互換性がなかったため、両方にオブザーバビリティを実装することは困難でした。オープンソースのOpenTelemetry(OTel)ツールとライブラリは、単一の汎用プロトコルであるOpenTelemetry Protocol(OTLP)と統一されたフィールド定義を提供することで、チームによるKubernetesとサーバーレスへのオブザーバビリティの実装を可能にします。

eBPFはアプリケーションのオブザーバビリティをどのように向上させるのか

拡張Berkeley Packet Filter(eBPF)は、Linuxカーネルに直接組み込まれたサンドボックス型の実行エンジンです。ソースコードを変更したり、負荷の高いエージェントを実行したりすることなく、開発者が独自のトレースを実行できるようにします。これにより、リソース使用量を最小限に抑えながら、アクティビティの全体像を把握し、パフォーマンス上の問題を特定できます。