Observabilityの概念とツールの発展過程
(insight.infograb.net)-
Observabilityの概念:
- システムの外部出力の結果(知識)から、システム内部の状態をどれだけ適切に推論できるかを示す尺度
- 出力値の測定からシステム状態を推定できるように設計された動的システム
- クラウド環境が一般化し、Docker化されたアプリやマイクロサービスアーキテクチャが普及するにつれて、Observabilityが必要になった
-
Observabilityとモニタリングの違い:
- モニタリング: ユーザーが行うもの。何が間違っているかを示す
- Observability: モニタリングを含む上位概念。内部動作の背景情報を豊富に提供し、より深いシステム問題を解決する。何が、そして「なぜ」間違っているのかまで示す
-
組織でObservabilityが必要になる状況:
- 本番環境で問題が発生したとき、「問題の原因を把握するためのデータは何で、それはどこにあり、そのデータをどう見ればよいのか?」という疑問が生じるとき
- 1分前まで正常だったサービスに問題が起き、「根本原因をどこから探すべきか?」という課題に直面するとき
- 組織で「開発チームが顧客やサポート/運用チームより先にサービス異常の兆候を知るにはどうすればよいか」を考えるとき
- マイクロサービスのサービス障害や性能上の問題を効果的に追跡する方法や、「ログまたはアプリケーション性能監視(APM)の形でそれを確認できるか」が気になるとき
-
Observabilityツールの発展過程:
- 2010年代以降、IT業界ではさまざまなObservabilityツールが登場した
- 2010年、Googleが大規模分散システム向けトレーシング基盤「Dapper」を発表した
- その後、UberとTwitterがそれぞれ分散トレーシングシステム「Jaeger」(Uber)と「Zipkin」(Twitter)を作った
- 分散システムの動作を継続的にモデル化し、説明するための標準APIセットである「Open Tracing」が登場した
- 「Open Census」が公開された。アプリケーションメトリクスと分散トレーシングを収集し、その後バックエンドへデータをリアルタイム送信する、各種言語向けライブラリ群
- 続いて「Prometheus」が登場した
- 2019年には、Open TracingとOpen Censusを統合した「Open Telemetry(OTel)」というツール、API、SDKの集合が公開された
-
Open Telemetry:
- ベンダーニュートラルなオープンソースのObservabilityフレームワーク
- ソフトウェアの性能と動作を分析するのに役立つテレメトリデータには、ログ、メトリクス、トレースがあり、Open Telemetryはこれらを計装・生成・収集・エクスポートするために使われる
- ログ: タイムスタンプ付きメタデータ。問題の根本原因を判断するのに使われる
- メトリクス: サービスで測定したキー/バリュータグを持つ統計または集計データ。実行時に取得したサービスの測定値
- トレース: ユーザーとアプリケーションで発生したイベントの記録。個々のリクエストが伝播する経路を記録する
- 利用方法: Observabilityツールからアラート送信->アラート内容を確認し、ダッシュボードへ移動して問題箇所を確認->その問題箇所で特定部分を詳細にクエリ->ログを探して確認->そのログに関連するトレースデータを見つけてパターン化->ここで問題を確認して修正し、Observabilityを実現
- 最近作られるObservabilityツールの大半はOpen Telemetryを標準サポートしている
-
Open Telemetryが登場した理由:
- 以前は、各Observabilityバックエンドがツールへデータを送るための独自の計装ライブラリやエージェントを持っており、コードを計装する方法もさまざまだった
- Observabilityバックエンドへデータを送る標準化されたデータ形式がなかった
- その後、単一の標準を作るためにOpen TracingとOpen Censusが統合され、Open Telemetryが登場した
-
SigNoz: オープンソースのAPMツール
- アプリケーションを監視し、問題解決を支援する
- 分散トレーシング技術を使ってユーザーソフトウェアスタックを把握する
- latency、requests per second、error rates のようなアプリケーションメトリクスを監視
- CPU使用率やメモリ使用量のようなインフラメトリクスも観測
- サービス全体にわたってユーザーリクエストを追跡
- メトリクスにアラートを設定
- 問題を引き起こしている正確なトレースに移動して、問題の根本原因を見つけられる
- 個別リクエスト追跡の詳細なフレームグラフも見られる
8件のコメント
良い記事をありがとうございます!
コメントありがとうございます! :)
良い記事をありがとうございます〜
コメントありがとうございます! :)
モニタリングがうまく動作していることは、どうやってモニタリングするんだろう?
『ウォッチメン』という漫画に出てくる悩みに近いことを考えていたんですが、オブザーバビリティという言葉があったんですね。ありがとうございます
ありがとうございます! 最近はAIでObservabilityを簡素化するツールを開発しているところも目立ってきましたね。もっと知りたい分野です! :)
良い記事をありがとうございます :)
ありがとうございます! :D