ワークショップ概要

OBI ワークショップの目標、前提条件、アーキテクチャについて説明します。

5 minutes

学習内容

このワークショップを完了すると、以下のことができるようになります

前提条件

ワークショップインスタンスには必要なものがすべて事前設定されています

要件ワークショップインスタンスでの状態
Linux host提供済み (Ubuntu)
Python 3.9+インストール済み
Docker & Docker Composeインストール済み
K3s (Kubernetes)インストール済み
kubectlインストール済み
Helm 3インストール済み
ワークショップアセット~/workshop/obi/ にデプロイ済み

以下も必要です

要件取得方法
Splunk Observability Cloud アカウントインストラクターから提供されます
Splunk Access Token (Ingest)インスタンスで env と入力し ACCESS_TOKEN を確認してください
Splunk Realm (例: us0, us1, eu0)インスタンスで env と入力し REALM を確認してください
ユニークな名前 (例: shw-2c74)envINSTANCE を確認してください。host.name として使用されます

アーキテクチャ

このワークショップでは、リクエストチェーンを形成する3つのシンプルなマイクロサービスを使用します

text
Frontend (Node.js :3000)  →  Order-Processor (Go :8080)  →  Payment-Service (Go :8081)

これらのサービスにはオブザーバビリティコードが一切ありません — OpenTelemetry SDK も、トレーシングヘッダーも、いかなる種類の計装もありません。OBI は eBPF プローブを使用してカーネルからこれらを計装し、OpenTelemetry 互換のトレースを生成して、Splunk OTel Collector に送信します。Splunk OTel Collector はそれを Splunk Observability Cloud に転送します。

OBI とは?

OBI (OpenTelemetry eBPF Instrumentation) は、Linux カーネルの eBPF プローブを使用してアプリケーションを流れる HTTP/gRPC トラフィックを観測するスタンドアロンエージェントです。カーネルからプロセスにアタッチするため、SDK もコード変更も再コンパイルも不要です。リクエストを検出し、OpenTelemetry 互換のトレーススパンを生成して、コレクターに送信します。

これは SDK で計装できない、またはしたくない組織にとって価値があります

価値提案

多くの組織には、OpenTelemetry SDK で計装できない、またはしたくないアプリケーションがあります

OBI はコード変更なしで完全な分散トレーシングを提供します

OBI と従来のゼロコード計装の比較

OBI と既存の従来型言語固有ゼロコード計装(Java、JS、.NET、Python、Go、PHP)は、オブザーバビリティ戦略において補完的な役割を果たします。違いを理解することで、各アプローチをいつ使用すべきかを判断できます。

1. 計装モデル

項目OBI従来のゼロコード計装
実行モデルプロセス外プロセス内
計装レイヤーLinux カーネル / ネットワークアプリケーションランタイム
コード変更の必要性なしなし、または最小限
アプリケーション再起動の必要性なしあり
セキュリティプロファイル分離アプリケーションと同じ権限プロファイル

2. 可視性のレベル

機能OBI従来のゼロコード計装
分散トレーシングプロトコルレベルフルフィデリティ
RED メトリクスありあり
アプリケーションログ収集なしあり
アプリケーションログとトレースの相関ありあり
アプリケーション内部(フレームワーク、関数)なし(部分的、主に Go)あり
カスタムスパン / ビジネス属性なしあり
ランタイムメトリクス(JVM、メモリ、スレッド)現時点ではなしあり

3. カバレッジと互換性

シナリオOBI従来のゼロコード計装
マルチ言語環境強い(プロトコルベース)言語固有
サードパーティアプリケーションサポート限定的、contrib リポジトリ
レガシーシステムサポート限定的
コンパイル言語 (C/C++/Rust)サポート(非同期に一部制限あり)限定的
非同期 / 複雑なフレームワーク一部のケースで限定的強い

4. 運用特性

項目OBI従来のゼロコード計装
デプロイの手間低い(ドロップイン)中程度(エージェントアタッチ)
最初の可視化までの時間数分「もう少し」かかる
アプリケーションライフサイクルへの変更なしあり
パフォーマンスオーバーヘッド最小限で分離されている言語/ランタイムにより異なる

5. Splunk ディストリビューション機能

機能OBI従来のゼロコード計装
Always-on Profilingなし(将来 eBPF プロファイラーとバンドルされる可能性あり)ほとんどで CPU、一部で Memory
コールグラフなしほとんどで CPU、一部で Memory
ファイルベース設定対応予定Java、Node.js、.NET、Python(対応予定)
No-code instrumentationN/Aあり