Open1

NRU Practitioner - オブザーバビリティ入門

Kota ShimozuruKota Shimozuru

NRU Practitioner - オブザーバビリティ入門

  • オブザーバビリティってつまりどういうこと?
  • なぜ必要?既存の監視じゃだめなの?
    この疑問に答えられるようにするには、次の動画を見ましょう。

https://newrelic.com/jp/resources/presentations/nru-practitioner2022

オブザーバビリティで何ができるの?

1. システムの構成要素が多い

  • 構成要素全ての情報を収集、関連性を自動で可視化

2 . システムの変化が当たり前

  • 変化前後のデータを収集し、いつもと異なる振る舞いを検知

3 . ユーザ体験が重要

  • ユーザ体験のデータを取得し、影響を与えている箇所を特定

監視とオブザーバビリティの違い

システムの複雑化やビジネスインパクトが高まるなか、これまでの「監視」ではまかないきれなくなっている。

監視(Monitoring)

事前に設定した**指標(メトリクス)**を基にシステムの状態をチェックし、異常があればアラートを発する。過去のデータを基に、特定の問題を探知するための仕組みです。

例:CPU使用率が80%を超えたらアラートを出す。
主な使い方:障害の検出、パフォーマンス監視、定常運用。

オブザーバビリティ(Observability)

システムの内部状態を把握する能力のことです。何が起こっても、その原因や影響範囲を素早く理解できるよう、メトリクスだけでなく、ログ、トレースなどを包括的に活用します。事前に予測できなかった問題にも対応しやすくなります。

例:なぜAPIレスポンスが遅くなったのか、サービス間のどこで遅延が発生しているかを分析。
主な使い方:未知の問題のトラブルシューティング、根本原因分析、システムの理解向上。

オブザーバビリティで収集するデータ

M:メトリック

  • 集計可能なデータの粒。例:キュー深度、HTTPリクエスト数等

E:イベント

  • 特定のアクションの記録。例:トランザクションイベント、ユーザ操作イベント等

L:ログ

  • あらゆる処理の記録。例:デバッグログ、エラーログ等

T:トレース

  • 単一トランザクションを構成するあらゆる要素。例:外部APIへのリクエスト、DBへのクエリ等

システムモデル分類

ペットモデル

  • 少数の個別サーバを管理する
  • 大事なペットを守るような運用
  • システムはステートフル
  • モノリシックな実装

キャトルモデル(家畜)

  • 同じ機能を持った複数のサーバーをクラスタとして運用
  • 家畜のように群れとして運用
  • AutoScalingやAutoHealingを設定してシステムの堅牢性を確保
  • アプリサーバーやDBサーバは分離されているが実装自体はモノリシックに近い

オルガノモデル(臓器)

  • コンテナによるオーケストレーション
  • コンテナの数やスペックはマニュフェストにより定義され、問題があれば自動的に再配置される
  • 臓器のようにここのコンテナ(さいぼう)が複製やアポトーシスを行う
  • ここのコンテナの死活ではなくシステム自体が機能を提供している事が重要