はじめに
現代のアプリケーション開発において、観測性(Observability)はシステムの信頼性とパフォーマンスを確保するための不可欠な要素です。OpenTelemetryはCNCFが推進するオープンソースプロジェクトであり、トレース(Trace)、メトリクス(Metrics)、ログ(Logs)を統合的に管理するためのフレームワークとして注目されています。本記事では、HAR(HTTP Archive)データをOpenTelemetryのトレース形式に変換し、観測アーキテクチャを再定義するプロセスについて解説します。このアプローチにより、ネットワーク監視ツールであるThousand Eyesのデータを活用し、より詳細な問題分析が可能になります。
技術的概要
HARとOpenTelemetryの基本概念
- HAR(HTTP Archive):ウェブページのインタラクションデータを記録するフォーマットで、HTTPリクエスト/レスポンス、リソースのダウンロード履歴を含みます。主にデバッグ目的で使用されますが、観測性に活用するためのデータ源としての価値があります。
- OpenTelemetry:CNCFがサポートするオープンソースプロジェクトで、トレース、メトリクス、ログの統合管理を可能にします。語義的約束(Semantic Conventions)を採用し、標準化されたデータ形式を提供します。
- Thousand Eyes:ネットワーク監視ツールで、ページロードテスト機能を備え、HARデータを生成します。
変換プロセスの特徴
HARデータの解析
- 各HTTPリクエストをOpenTelemetryのSpanに変換します。
- Span屬性には、メソッド+ターゲットを名前、クライアントタイプ、開始/終了時間、ステータスコード(エラーは
error
フラグを設定)、トレースID/スパンID、語義的約束屬性(HTTPメソッド、ホスト、ターゲット、ステータスコード、ポート)が含まれます。
- セキュリティ対策:ヘッダー(クッキー、認証情報など)は含めず、情報漏洩リスクを迴避します。
リソース屬性の記録
- テレメトリの生成元を記録します。
- Thousand Eyesアカウント、テスト名・タイプ・ID、エージェントID・名前・割當、Thousand Eyesの問題ビューへの永続リンクを含みます。
アーキテクチャ設計
データフロー
- Kafka:エージェントから受信したテレメトリデータ(HAR含む)を中継します。
- コレクター(第一段階)
- フィルタ:観測バックエンドに送信するテストデータのみを処理します。
- プロセッサ:エージェントの位置やテスト名などの情報を追加します。
- インテグレーションコレクターへ導出。
- インテグレーションコレクター
- プロセッサ:トレースを複製し、インテグレーションID屬性を追加します。
- ルーティング:インテグレーションIDに基づき、JaegerやGrafanaなどの観測バックエンドにデータを配信します。
- 観測バックエンド:トレースデータを受信し、可視化します。
雙コレクター設計の理由
- トレースコレクター:大量のトレースデータを処理し、Kafkaのデータ量に応じてスケーラビリティを確保します。
- インテグレーションコレクター:インテグレーション數に応じてスケーラビリティを実現し、データ冗長性と多様なバックエンドサポートを提供します。
実裝デモ
- テストケース:Thousand Eyesでcisco.comのページロードテストを実施。
- データフロー
- テスト結果(HARデータ含む)をOpenTelemetryインテグレーションに導出。
- Kafka経由でコレクターに送信し、トレースに変換。
- Jaegerでトレースを確認し、各リクエストをSpanとして可視化。
- 重要な観察點
- ページロードの問題(特定リソースの読み込み失敗)をトレースで分析。
- トレースの所要時間(例:7秒 vs 5秒)を比較し、リクエスト數や時間差を識別。
技術的考慮とベストプラクティス
- 語義的約束:Span屬性を標準化し、可視化や分析の容易さを向上。
- パフォーマンス最適化:並列処理で遅延を削減し、バックエンドごとのルーティング戦略を調整。
- スケーラビリティ:コレクターの分離設計で大規模なデータフローに対応し、JaegerやGrafanaなどの多様なバックエンドをサポート。
結論
本記事では、HARデータをOpenTelemetryトレースに変換し、観測アーキテクチャを再定義するプロセスを解説しました。このアプローチにより、ネットワーク監視ツールのデータを活用し、アプリケーションの信頼性とパフォーマンスを向上させることが可能です。OpenTelemetryの語義的約束やCNCFのエコシステムを活用し、柔軟な観測アーキテクチャを構築してください。