可観測性とは、システムが生成するデータに基づいてシステムの現在の状態を測定および推測する能力です。 このデータは通常、ログ、メトリック、トレースの形式になります。 簡単な例として、メトリクスを調べることでマイクロサービスapplicationの健全性を観察できます。

可観測性はどのように機能しますか?

可観測性により、開発者は複雑なシステムがどのように機能しているかを全体的に把握できるようになります。 データの収集、保存、分析を通じて、開発者はシステムの問題を特定し、トラブルシューティングできるようになります。

可観測性は、リアルタイムでデータを収集することから始まります。 収集されたデータは分析のために集中管理された場所に保存されます。 この分析は、機械学習アルゴリズム、視覚化、または統計手法の組み合わせを通じて実行できます。

この分析の結果により、applicationまたはシステム内の異常が開発者に警告されます。 アラートは、ビジネスまたはapplicationのニーズに基づいて、設定されたしきい値、重大度レベル、またはその他の基準によって自動化およびトリガーできます。 異常が特定され、その場所が特定されると、開発者はそのデータを使用して問題をデバッグし、解決できます。

可観測性データの例

前述のように、可観測性データの主な種類は、ログ、メトリック、トレースです。

  • ログ – メタデータを含むタイムスタンプ付きのテキスト レコード。 これらの録音やメッセージは通常、applicationまたはシステムによって生成されます。 ログ記録は、ソフトウェア開発において可観測性を実装する最も一般的な方法の 1 つです。
  • メトリクス – 実行時にキャプチャされたサービスに関する測定値。 これらの数値測定には、CPU 使用率、メモリ使用量、エラー率が含まれます。 これらすべての測定値は、applicationまたはシステムのパフォーマンスと健全性を追跡します。
  • トレース – 分散システムのノード間を移動するリクエストの経路またはアクションの記録。 トレースは、リクエストがどのように処理され、完了するまでにどのくらいの時間がかかるかを記録します。 このデータは、ボトルネックやその他のレイテンシの問題を特定するのに役立ちます。
監視と可観測性は異なりますか?

監視とは、システムまたはapplication内で発生するプロセスの進行状況を観察および確認する機能です。 監視はメトリックに大きく依存します。 つまり、環境を視覚化し、既知の問題に対してテストできるようになります。 一方、可観測性は、問題が存在する可能性があることを推測できる新しいより詳細なデータを提供します。 その後、問題の原因を詳しく調べて、将来についての洞察を得ることができます。

監視と観測可能性は明確に区別されるものではありません。 むしろ、これらは、開発者がより迅速に洞察に到達できるようにするデータ分析オプションと視覚化手法です。

これらの定義が確立されたので、以下の表では、ソフトウェアapplicationsにおける監視と観測可能性の 4 つの微妙な違いを詳しく見ていきます。 これら 4 つの違いは、範囲、粒度、柔軟性、分析に分けられます。

 

  監視 可観測性
範囲 指標(システム稼働時間、CPU使用率、エラー率など)を測定します 出力に基づいてシステムの仕組みを理解する

粒度

収集したデータを定期的に集計またはサンプリングします(事前定義されたメトリックに基づく)

詳細なデータを収集して分析し、システムの動作に関するより深い洞察と理解を得る

柔軟性

一度導入すると変更が難しい定義済みのダッシュボードやアラートしきい値を実装する

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

分析

特定のイベントや異常を識別して対応する

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

テレメトリは可観測性においてどのような役割を果たしますか?

ソフトウェアの可観測性におけるテレメトリとは、ソフトウェア システムのパフォーマンスと動作に関するデータをリアルタイムで収集して送信する手法を指します。 このデータ (応答時間、エラー率、リソース消費量など) は、システムの現在の状態を監視および理解するために使用され、開発者がパフォーマンスを改善する機会を特定するのに役立ちます。

テレメトリに関する会話では、 OpenTelemetry (OTel) が話題になることがよくあります。これは、開発者にとって観測可能性を容易にする簡素化されたアプローチを提供するためです。 OTel は、ソフトウェア システムからのテレメトリ データ (ログ、メトリック、トレース) の収集を標準化するオープン ソース ツールとライブラリのセットです。

OTel とそれがクラウド ネイティブ環境に与える影響の詳細については、 「OpenTelemetry がアプリのトレースと設計の方法をどのように変えているか」を参照してください。

可観測性の利点

可観測性により、開発者はapplicationsをより深く理解できるようになり、次のことが可能になります。

  • デバッグの高速化 – 詳細に分析されたデータにより、開発者はシステムの問題を診断およびデバッグする能力が向上します。
  • パフォーマンスの向上 - 主要な指標を監視し、阻害要因を特定することで、開発者はデータに基づいた意思決定を行い、applicationのパフォーマンスを向上させることができます。
  • 信頼性の向上 – 可観測性データにより、開発者はユーザーエクスペリエンスを妨げる可能性のあるシステム障害を積極的に解決できます。
  • より優れたコラボレーション – 長期にわたる標準データセットにより、チームは共通の指標セットに基づいて容易に協力し、問題を解決できるようになります。
可観測性の欠点

可観測性にはいくつかの欠点があり、最も一般的なものは次のとおりです。

  • オーバーヘッドの増加 – 可観測性を実装すると、applicationまたはシステムのメトリックを追跡するために使用される特殊なツールのコストが追加され、追加のデータ ストレージを提供する必要が生じる可能性があります。
  • 複雑さの増大 – 追加の計測と監視が必要となり、これらの追加ツールを導入するとapplicationが複雑になる可能性があります。
  • 情報過多 – 可観測性により大量のデータが生成され、チームの管理がすぐに煩雑になる可能性があります。また、データが多すぎると、すぐに解決する必要がある問題の優先順位付けが難しくなる可能性があります。
追加リソース

NGINX は、可観測性と OTel の両方に関する追加の無料教育リソースを提供できることを誇りに思っています。

ブログ