6章システムの観測

ある日、目が覚めて、ズボンのベルトの最後の穴が合わないことに気付いたとします。体重計に乗ってみると、一晩でかなりの量の体重が増えています。慌ててダイエットとフィットネスに励みます。数週間後、体重を測ってみると、なぜかさらに体重が増えています。何が起きているのでしょうか。

必要なのは、自分の体で何が起きているのかを知ることです。もし、私たちの体に可観測性observability:オブザーバビリティ)が備わっていたら、ホルモン値のような体の指標がダッシュボード(dashboard)にグラフ化されるでしょう。ホルモン値が急激に変化した場合、すべての条件が同じであれば、ホルモンバランスの乱れが根本原因であると推測できます。しかし、何が変わったのかが分からないと、問題を解決するためにさまざまな変更を行っても、それぞれの影響が出てしまいます。

私たちは、システムを観測可能にすることで、システムの状態を理解するための仮説を立てたり、予期せぬ問題をデバッグしたりします。キーワードは、「予期せぬ」です。システムを観測可能にすることは、今までに起きたことがない問題を解決できるということです。この章では、サービス内で何が起きているのかを理解するために、サービスを観測可能にします。

6.1 3種類のテレメトリデータ

可観測性とは、システムの外部出力から、システムの内部(動作や状態)をどれだけ理解できるかを示す尺度です。システムを観測可能にするための出力として、メトリクス、構造化ログ、トレースを使います。テレメトリ(telemetry:遠隔測定)データには、独自のユースケースを持つ3種類がありますが、多くの場合、同じイベントから得ることができます。たとえば、ウェブサービスがリクエストを処理するたびに、「処理されたリクエスト数」というメトリクスの値を増加させたり、リクエストのログを出力したり、トレースを作成したりします。 ...

Get Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.