可観測性とは、システムが生成するデータに基づいてシステムの現在の状態を測定および推測する能力です。 このデータは通常、ログ、メトリック、トレースの形式になります。 簡単な例として、メトリクスを調べることでマイクロサービスapplicationの健全性を観察できます。
可観測性により、開発者は複雑なシステムがどのように機能しているかを全体的に把握できるようになります。 データの収集、保存、分析を通じて、開発者はシステムの問題を特定し、トラブルシューティングできるようになります。
可観測性は、リアルタイムでデータを収集することから始まります。 収集されたデータは分析のために集中管理された場所に保存されます。 この分析は、機械学習アルゴリズム、視覚化、または統計手法の組み合わせを通じて実行できます。
この分析の結果により、applicationまたはシステム内の異常が開発者に警告されます。 アラートは、ビジネスまたはapplicationのニーズに基づいて、設定されたしきい値、重大度レベル、またはその他の基準によって自動化およびトリガーできます。 異常が特定され、その場所が特定されると、開発者はそのデータを使用して問題をデバッグし、解決できます。
前述のように、可観測性データの主な種類は、ログ、メトリック、トレースです。
監視とは、システムまたはapplication内で発生するプロセスの進行状況を観察および確認する機能です。 監視はメトリックに大きく依存します。 つまり、環境を視覚化し、既知の問題に対してテストできるようになります。 一方、可観測性は、問題が存在する可能性があることを推測できる新しいより詳細なデータを提供します。 その後、問題の原因を詳しく調べて、将来についての洞察を得ることができます。
監視と観測可能性は明確に区別されるものではありません。 むしろ、これらは、開発者がより迅速に洞察に到達できるようにするデータ分析オプションと視覚化手法です。
これらの定義が確立されたので、以下の表では、ソフトウェアapplicationsにおける監視と観測可能性の 4 つの微妙な違いを詳しく見ていきます。 これら 4 つの違いは、範囲、粒度、柔軟性、分析に分けられます。
監視 | 可観測性 | |
---|---|---|
範囲 | 指標(システム稼働時間、CPU使用率、エラー率など)を測定します | 出力に基づいてシステムの仕組みを理解する |
粒度 |
収集したデータを定期的に集計またはサンプリングします(事前定義されたメトリックに基づく) |
詳細なデータを収集して分析し、システムの動作に関するより深い洞察と理解を得る |
柔軟性 |
一度導入すると変更が難しい定義済みのダッシュボードやアラートしきい値を実装する |
変化する状況や要件に対応する、変更しやすいツールを使用した柔軟で適応性の高いアプローチを採用 |
分析 |
特定のイベントや異常を識別して対応する |
開発者に問題の原因を特定し、時間をかけて解決策を実装するために必要なツールを提供することで、プロアクティブな分析とトラブルシューティングを重視します。 |
ソフトウェアの可観測性におけるテレメトリとは、ソフトウェア システムのパフォーマンスと動作に関するデータをリアルタイムで収集して送信する手法を指します。 このデータ (応答時間、エラー率、リソース消費量など) は、システムの現在の状態を監視および理解するために使用され、開発者がパフォーマンスを改善する機会を特定するのに役立ちます。
テレメトリに関する会話では、 OpenTelemetry (OTel) が話題になることがよくあります。これは、開発者にとって観測可能性を容易にする簡素化されたアプローチを提供するためです。 OTel は、ソフトウェア システムからのテレメトリ データ (ログ、メトリック、トレース) の収集を標準化するオープン ソース ツールとライブラリのセットです。
OTel とそれがクラウド ネイティブ環境に与える影響の詳細については、 「OpenTelemetry がアプリのトレースと設計の方法をどのように変えているか」を参照してください。
可観測性により、開発者はapplicationsをより深く理解できるようになり、次のことが可能になります。
可観測性にはいくつかの欠点があり、最も一般的なものは次のとおりです。
NGINX は、可観測性と OTel の両方に関する追加の無料教育リソースを提供できることを誇りに思っています。