狠狠撸

狠狠撸Share a Scribd company logo
オブザーバビリティ、
OpenTelemetryについて
はじめに
ITサービスでwebページ遷移が遅い、ログインできない、注文できないといった
障害が発生してしまった場合にはできるだけ早く原因を突き止めて修正すること
が重要です。
しかしながら、ITサービスのシステムの複雑化?分散化に伴い、従来の監視手法
ではサービス障害の調査が困難になってきています。
そのため、今回は最近話題になってきているオブザーバビリティという手法をご
説明します。また、オブザーバビリティの事実上の標準となりつつある
OpenTelemetry についても少しご紹介します。
システムの複雑化に伴う不具合調査の困難化 (1)
従来のWeb三層アーキテクチャ
監視システムの通知から障害のあったサーバーのログ
をみれば障害の原因がすぐに分かる。
→ 障害調査にさほど時間はかからない。
【従来】
AP
サーバ-
DB
web
サーバー
システムの複雑化に伴う不具合調査の困難化 (2)
Web三層アーキテクチャに当てはまらない複雑なシステムの一部
システムの分散化により調査対象の数、種類が多くなった。
【現在】
web
サーバー
AP
サーバー1
AP
サーバー2
DB1 DB2
Queue
サーバー
worker
サーバー
AP
サーバー3
DB3
決済
サーバー
バッチ
サーバー
? 前頁のような分散システムにおいては、従来の監視システムを使って
障害の原因を突き止めることは非常に難しくなってきています。
例.
サービスのレスポンスの遅延
どのサーバーのCPU使用率、I/Oも高くない
関係するサーバーすべてのログの確認が必要
原因を突き止めるのが大変
システムの複雑化に伴う不具合調査の困難化 (3)
オブザーバビリティとは
? オブザーバビリティとは、「どんなアーキテクチャで構成されるITシステム/
サービスにおいてもいつでも状態を把握することができるための仕組み」の
ことを指します。
? オブザーバビリティを導入することによって複雑なシステム上のサービスの
不具合を素早く調査、解決できるようになります 。
オブザーバビリティの三本柱
? メトリクス (Metrics) : リソース、サービスの状況
? トレース (Trace):アプリケーション処理で発生するリクエストや処理時間を
可視化したもの
? ログ (Log):アプリケーションのログ
(※ 最近は上記3つだけでは足りないということで、上記の3つに加えて イベン
ト(Event), プロファイル (Profile), 例外 (Exception) の3つを加えた ‘TEMPLE’ とい
う6本柱を収集しようとする考え方も出てきています
https://medium.com/@YuriShkuro/temple-six-pillars-of-observability-
4ac3e3deb402 )
メトリクス
? リソースの状況 (CPU使用率、メモリ使用率など)
? サービスの状況 (レスポンスの遅延、トランザクション量、エラー発生率など)
各サーバーの状況をモニタリングし、しきい値を超えた or 下回った場合に
アラートを発生させて通知します。
メトリクスの例.
サーバーがHTTPリクエストを受けて
応答完了するまでの平均時間
時刻
処理時間
トレース
? トレースは、アプリケーション処理で発生するリクエスト構造や、呼び出される各コン
ポーネントでの処理時間などを可視化したものです。メトリクスの通知から、関係のあり
そうなトレースの確認に移ります。
? トレースの下にはルートスパンがあり、その下に複数のスパンが処理順に数珠つなぎに
なっているという階層構造になります。
? トレース、各スパンごとにユニークなIDを発行します。
? 下図の例だと、処理3が通常よりも長い時間かかっている場合には、
APサーバー2とDB1の間に問題がありそうだということがわかります。
AP
サーバー1
DB1
AP
サーバー2
処理1
処理2
処理3
システムの一部の構成 左のサービスの一部のトレース
処理1
処理2
処理3
trace-id:1, span-id:1
trace-id:1, span-id:2
trace-id:1, span-id:3
ログ
? トレースからログの特定に移ります。
? 各ログにはトレースのトレースID, スパンIDを付与してあります。
? 問題のあったトレース - スパンのトレースID, スパンIDで検索すると、
調査に必要なログを多数のサーバーから一度に抽出することができます。
トレースID + スパンID
調査に必要なログ
素早い調査
OpenTelemetryについて (1)
? オブザーバビリティのメトリクス、トレース、ログの収集を行うには、テレ
メトリーデータを取得するためのアプリケーションでの計装(インスツルメ
ンテーション)が必要です。
システム
入力 出力
計装 (インスツルメンテーション)
(ログ、処理時間、メモリ使用量…)
テレメトリー
OpenTelemetryについて (2)
? OpenTelemetryはオープンソースのオブザーバビリティフレームワークです。
? OpenTelemetryはアプリケーションとインフラのパフォーマンスや健全性を
示すテレメトリーデータを収集するための、ベンダーに依存しないAPI、
ソフトウェア開発キット(SDK)、その他のツールを提供します。
? ソリューションやベンダーを変更しても計装を変更する必要はありません。
? オブザーバビリティを実現する方法として事実上の標準になってきています。
まとめ
? システムの複雑化に伴い、従来の監視システムでは
サービスの不具合や遅延の調査が困難になってきています。
? オブザーバビリティを導入することによって複雑なシステム上の不具合を
素早く調査できるようになります。
? オブザーバビリティの三本柱: メトリクス、トレース、ログ
? OpenTelemetryはテレメトリーデータを収集してバックエンドに送信するため
の共通の方法を提供します。
? OpenTelemetryはオブザーバビリティを実現する方法として事実上の標準に
なってきています。
?https://www.hitachi.co.jp/Prod/comp/soft1/jp1/feature/observability/index.html
?”オブザーバビリティ?エンジニアリング”, Charity Majors, Liz Fong-Jones, George
Miranda 著, 大谷 和紀、山口 能迪 訳, オライリー?ジャパン, 2023
?“Practical OpenTelemetry: Adopting Open Observability Standards Across Your
Organization”, DanielGomez Blanco, Apress, 2023
?”Cloud-Native Observability with OpenTelemetry: Learn to gain visibility into systems
by combining tracing, metrics, and logging with OpenTelemetry”, Alex Boten, Packt
Publishing, 2022
?” Pythonアプリケーションのオブザーバビリティ強化”, 山口能迪, PyCon APAC 2023
Day2, #pyconapac_3
参考資料

More Related Content

オブザーバビリティ、翱辫别苍罢别濒别尘别迟谤测について.辫辫迟虫