Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)
はじめに
「Oracle Cloud Hangout Cafe」(通称「おちゃかふぇ」/以降、OCHaCafe)は、日本オラクルが主催するコミュニティの1つです。定期的に、開発者・エンジニアに向けたクラウドネイティブな時代に身につけておくべきテクノロジーを深堀する勉強会を開催しています。
連載第5回の今回は、クラウドネイティブの分野におけるオブザーバビリティについて、一般的に「3本柱」と言われる「メトリクス」「ログ」「トレース」を軸に理解を深めていきます。
アジェンダ
今回は、以下のアジェンダの流れに従って、順に解説します。
- Observability
- そもそも監視って?
- 監視の背景
- What's Observability ?
- Observabilityを支える三本柱
- Metrics/Logs/Traces & Tool
- Metrics
- Logs
- Traces
- Observability Practice
- Prometheus
- Grafana Loki
- Istio & Grafana
- Istio + Bookinfo + Kiali + Jaeger
発表資料と動画については、下記のリンクを参照してください。
【資料リンク】
【動画リンク】
Observability
クラウドネイティブにおけるオブザーバビリティという用語について、これまでの監視や背景を踏まえた視点から意味を探っていきます。
そもそも監視って?
「Monitoring」とは「監視、観察して記録する」という意味です。では、何のために監視や記録が必要なのでしょうか。システムの場合、サービスやアプリケーションの健全性確認、障害原因の調査、キャパシティ分析などが考えられます。マーケティングの場合は、サービス利用者の行動分析も重要です。ここでは、特にシステムの分野を考えます。エンドユーザのユーザ体験を損なわないため、安定した稼働状態を維持するために監視、観察して記録を行います。そして、以下の3つの状態の維持します。
- システムの稼働状況を正確に把握できる状態
- システム運用に必要な情報を迅速に取得できる状態
- 障害やトラブルに素早く対応できる状態
この状態を維持することは、これまでもこれからも変わらない監視の本質的な部分です。
監視の背景
従来のWeb3層モデルのようなシンプルな構成で規模も小さいシステムであれば、比較的容易に障害を調査できました。
それが、クラウドネイティブにおける分散システムのような小さなサービスが疎結合するマイクロサービスのシステムでは、構成が複雑となり障害発生個所の特定や原因追及がこれまでのアプローチでは難しくなります。
Kubernetesを基盤とするシステムで考えてみると、ノードやクラスタ上で稼働する複数のコンテナアプリケーション、ネットワーク、連携先の状況などを把握するには、これまでとは違う方法の検討が必要だと想像できます。
What’s Observability?
これまでのアプローチでは難しいという観点から、クラウドネイティブにおけるオブザーバビリティとの関係性を見ていきます。
オブザーバビリティを日本語にすると「可観測性」です。発表時点ではオブザーバビリティとしての明確な意味が定義されておらず、『Distributed Systems Observability』という書籍では、「Observability might mean different things to different people.可観測性は、人によって意味が異なる場合があります。」と述べられていました。
それから2年が経ち『オブザーバビリティ・エンジニアリング』という書籍では、「オブザーバビリティとは、システムがどのような状態になったとしても、どんなに斬新で奇妙な状態であっても、どれだけ理解し説明できるかを示す尺度です。」と述べられています。
この観点からオブザーバビリティの目的を見据えると、アプローチの仕方は変える必要があるにせよ、先に挙げた監視の本質にもつながるところが見えてきます。
クラウドネイティブは、自動化を中心に迅速で正確なサービス提供を目指します。オブザーバビリティは、その提供されたサービスに対してユーザ体験を損なわず、障害が発生した場合にも迅速かつ正確に対応して、サービスの安定性と信頼性を守り、支える役割を担います。
Observabilityを支える3本柱
クラウドネイティブにおけるオブザーバビリティとの関係性を見てきたところで、一般的に「オブザーバビリティの3本柱」と言われている「メトリクス」「ログ」「トレース」について概要を掴みます。
メトリクスは、CPU使用率やメモリ使用量などを特定の時間間隔で測定し統計した数値データです。ログは、正常および異常な状態をタイムスタンプと共に出力されるテキストデータです。トレースは、個々のアプリケーションを伝送する特定のリクエストの追跡データです。各データを取得して分析しながら、安定したシステムを運用します。
昨今では、メトリクス、ログ、トレースだけでは不十分なところもあり、下表に挙げたデータを取得して分析する動向もあります。発表時にはなかった情報として補足しておきます。
データ | 概要 |
---|---|
プロファイル | スタックトレースおよびスタックトレースに関連するCPU使用率やメモリ使用率のデータ |
例外 | エラーおよびエラーを引き起こした入力値データ |
イベント | サービスに対するアクションのデータ(例:商品サイトで商品購入、チケットサイトで席予約など) |
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Observability Conference 2022から、サイボウズのオブザーバービリティ事例を紹介
- Kubernetesアプリケーションのモニタリングことはじめ
- 「Odigos」でノーコードの分散トレーシングを実現する
- Kubernetesアプリケーションのトレーシング
- Promscaleのデモから見えるタイムシリーズデータを使った現代的なオブザーバビリティ
- Observability Conference 2022開催、Kubernetesにおける観測の基本を解説
- 3/11「Observability Conference 2022」開催せまる! 実行委員オススメのみどころを紹介
- Observability Conference 2022、Splunkのエンジニアが説明するOpenTelemetryの入門編
- Obervability Conference 2022、OpenTelemetryの概要をGoogleのアドボケイトが解説
- Observability Conference 2022、日本ユニシスのエンジニアが解説するデベロッパーにとってのオブザーバビリティ