ワークショップの概要

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 vs 従来のゼロコード計装

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 Distro の機能

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