はじめに
現代の分散システムにおいて、可観測性(Observability)はシステムの信頼性とパフォーマンスを確保するための不可欠な要素です。トレーシング(Tracing)は、サービス間の依存関係を可視化し、異常の原因を迅速に特定するための中心的な技術です。本記事では、トレーシングの進化史から、サンプリングの課題、そして大規模なトレースデータを効率的に処理するための技術的解決策まで、トレーシングの実踐的な知識を解説します。
可観測性の進化とトレーシングの役割
1. ネットワーク監視段階
- SNMP(Simple Network Management Protocol) を用いてハードウェアの狀態(CPU使用率、メモリなど)を監視
- 管理者は閾値警報を設定し、ネットワークの狀態を輪替(polling)
2. サービス監視段階
- 主機チェックとサービスチェックを導入
- 紅緑燈のダッシュボードでサービスの狀態を可視化
3. 監視段階
- 高度なダッシュボードと深度洞察を提供
- 指標(Metrics)を用いてサービスの健康狀態を監視
4. 可観測性段階
- ログ(Logs)、指標(Metrics)、トレース(Traces)を統合
- 三支柱モデル:
- Logs:何が起きたかを記録
- Metrics:いつ起きたかを示す
- Traces:どこで起きたかを追跡
5. 六支柱モデルへの拡張
- パフォーマンスプロファイリング(Profiling)、リアルユーザー監視(Real User Monitoring)、合成テスト(Synthetic Testing)を追加
- 端到端の可視性とアクティブな監視能力を向上
6. AI駆動の可観測性
- AIが人間が見逃す異常を検出
- OpenTelemetry がトレースデータの標準化を推進
トレーシングの価値とデバッグプロセス
典型的なデバッグステップ
- 異常警報の受信:ユーザーからのクレームや監視通知
- ダッシュボードでの異常サービスの特定:ピーク/下降/パターン変化を検出
- 特定サービスのトレースデータの分析:リクエストパスと根本原因を特定
トレーシングの核心的価値
- 完全なリクエストパスの可視化
- 時間系列グラフ(Duration over Time)で異常を迅速に特定
- 紅點(エラー)と紫色點(正常)の視覚化
- 高時長トレース(大點)と低時長トレース(小點)の直感的比較
サンプリングの課題とその影響
サンプリング率の矛盾
- 一般的な1%サンプリング率(100個のトレースから1個を保存)
- 結果:重要なエラートレースが失われる可能性
- 例:10億筆の取引/日 → 10億トレース → 100萬サンプリングトレース(エラーなし)
サンプリングの根本的な問題
- データ量の爆発:
- 毎日100億筆の取引 → 3萬億のスパン(Spans)
- 各スパン約2KB → 累計6PBのデータ
- ストレージ要件:毎日60臺のSSDサーバー
- 処理オーバーヘッド:
- クラウド間の協調、データ構造管理
- アプリケーションパフォーマンスへの影響
尾部サンプリング(Tail Sampling)の制限
- エラー/遅延トレースを保持する必要がある
- 現在の多くのベンダーがサポートしていないか、費用が高額
- 技術的課題:
- リクエスト終了までスパンを完全に収集する必要がある
- クラウド間の協調とデータ構造管理
解決策と技術的最適化
1. 列式ストレージ(Columnar Storage)
- 同じデータの圧縮(タイムスタンプ、文字列、數値)
- 圧縮率を10〜20倍に向上
- 例:
- タイムスタンプはDelta符號化
- 文字列は辭書符號化
- 數値はビットパッキング
2. 確率フィルター(Probabilistic Filters)
- Bloom Filter でトレースIDの存在性を高速に確認
- 空間を節約し、軽量インデックスとして機能
3. パーティショニング戦略(Partitioning)
- タイムスタンプによるパーティション:最近のデータの迅速なアクセス
- トレースIDによるパーティション:同一トレースIDのスパンを集中保存
- クエリ効率と並列処理能力の向上
4. 特殊ストレージ構造(Special Sharding)
- エラーと遅延スパンを専用ストレージに分離
- クエリ複雑度の削減:
- トレースIDテーブル → スパンテーブル → エラースパンの直接クエリ
- クエリ効率を50〜100倍に向上
5. レイヤードストレージアーキテクチャ(Tiered Storage)
- ホットストレージ(0〜7日):高性能SSD
- ウォームストレージ(8〜30日):コスト効率のHDD
- クールストレージ(>30日):オブジェクトストレージ(S3/GCS)
- 自動データ移行:
- データの年齢に基づく分類
- エラーや遅延スパンを専用ストレージに抽出
6. コスト最適化戦略
- 1%のエラーデータに特化したストレージ
- 専用ストレージ構造によるストレージとクエリコストの削減
- 根本原因診斷効率とMTTR(平均修復時間)の向上
結論
トレーシングの価値
- 最高の保真度で根本原因診斷を提供
- 系統全體の狀態を可視化
サンプリングのリスク
- 過度なサンプリングによる盲點とデバッグの困難
- データ體積と診斷精度のバランスを取る必要性
技術的解決策
- 列式ストレージ + 智能的シャーディング + 効率的なインデックス
- ストレージコストとクエリ遅延の削減
- 系統の可観測性とアクティブな監視能力の向上