Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HonoとOpenTelemetryで実現するオブザーバービリティ構築
Search
sugar-cat
October 17, 2025
0
110
HonoとOpenTelemetryで実現するオブザーバービリティ構築
sugar-cat
October 17, 2025
Tweet
Share
More Decks by sugar-cat
See All by sugar-cat
ErrorTrackingとOrchestrion
sugarcat7
0
300
DiscordとCloudflare
sugarcat7
1
360
Cloudflare Workflowsを使いたい倒したい
sugarcat7
7
1.8k
tslogで実現するセキュアなメタデータ管理とロギング
sugarcat7
4
1.4k
最近個人開発が熱い ~モニタリング強化編v0.1.0~
sugarcat7
3
450
Honoで実現するバックエンド開発のイマ
sugarcat7
23
5.8k
GoとWASI~超入門~
sugarcat7
2
260
最近個人開発が熱い ~多言語対応編~
sugarcat7
2
360
ボイラープレート自動生成ツールを使わなくなった話.pdf
sugarcat7
4
690
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
353
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
980
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building Adaptive Systems
keathley
44
2.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Optimizing for Happiness
mojombo
379
70k
How STYLIGHT went responsive
nonsquared
100
5.8k
Building an army of robots
kneath
306
46k
Transcript
HonoとOpenTelemetryで実現 するオブザーバービリティ構築 2025/10/18 Hono Conference 2025 sugar cat
2 sugar cat(@sugar235711) SRE || SWE [Hono登壇] ・Hono Conference 2024(Using
Hono in B2B SaaS) ・Honoで実現するバックエンド開発のイマ [Honoブログ] ・Honoを使い倒したい2024 ・HonoとCasbinで認可制御を実装する ・HonoでService Workerを扱いやすくする ・Honoざっくりキャッチアップ(v4.6.0〜v4.10.0) 登壇者情報 @sugar235711 @sugar-cat7
3 Agenda 1. 速習OpenTelemetry 2. Honoと分散トレーシング 3. Honoの計装
4 システムの内部状態を外部から観測する能力のこと(=可観測性) オブザーバビリティ 1. 速習OpenTelemetry
5 システムの内部状態を外部から観測する能力のこと(=可観測性) オブザーバビリティ 1. 速習OpenTelemetry システムに対して計装を行いテレメトリデータが収集、 適切に可視化がされている状態(=可観測性が高い) ・ログ ・メトリクス ・トレース
6 計装し収集したテレメトリデータを任意のモニタリングツールで可視化を 行い障害モード(デバッグ)に役立てる オブザーバビリティ 1. 速習OpenTelemetry
7 テレメトリデータ(ログ、トレース、メトリクス...etc)を統一的なフォー マットで扱うための仕様を策定したCFCNのIncubatingプロジェクト ・仕様/プロトコルの標準化(OTLP) ・各種言語向けのSDKの提供 ・ベンダー非依存のCollectorの提供 OpenTelemetryとは 1. 速習OpenTelemetry
8 テレメトリデータ(ログ、トレース、メトリクス...etc)を統一的なフォー マットで扱うための仕様を策定したCFCNのIncubatingプロジェクト ・仕様/プロトコルの標準化(OTLP) ・各種言語向けのSDKの提供 ・ベンダー非依存のCollectorの提供 OpenTelemetryとは 1. 速習OpenTelemetry
9 複数のシステム・サービス間のトランザクションの流れを追跡し収集する 監視手法 例えばAPIのエンドポイントごとの流れや処理時間をTraceできる ・Span: 操作の単位 ・Attribute: メタデータ 分散トレーシング 2.
Honoと分散トレーシング
10 複数のサービスを経由する場合、HTTPヘッダーに格納された情報を コンテキストに乗せて伝搬することで関連づける(Context Propagation) 分散トレーシング 2. Honoと分散トレーシング
11 複数のサービスを経由する場合、HTTPヘッダーに格納された情報をコンテ キストに乗せて伝搬することで関連づける(Context Propagation) 分散トレーシング 2. Honoと分散トレーシング エンドポイントへのリクエストから HTTP Headerの情報を取り出す
12 複数のサービスを経由する場合、HTTPヘッダーに格納された情報をコンテ キストに乗せて伝搬することで関連づける(Context Propagation) 分散トレーシング 2. Honoと分散トレーシング HTTP Serverの場合は セマンティック規約に従い
Attributeを付与してSpanを開始 https://opentelemetry.io/docs/specs/semconv/http/http-spans/#http-server-span
13 複数のサービスを経由する場合、HTTPヘッダーに格納された情報をコンテキストに乗せて伝搬する ことで関連づける(Context Propagation) 分散トレーシング 2. Honoと分散トレーシング 通信を行う場合はHTTP Client(fetch)に対してHeaderを注入
14 再見 分散トレーシング 2. Honoと分散トレーシング
15 HTTP Server/Clientにおいて手動でSpanやPropagation等の実装をして も良いが、仕様(セマンティック規約等)への追従が大変なので、基本は用 意されたライブラリを使うのが良い Honoにおける計装 2. Honoと分散トレーシング
16 Honoにおける計装対象はHono HTTP ServerのHandlerとRPC の”hc”(Fetch Client)がある Hono Client/ServerへのOpenTelemetry統合 3. Honoの計装
Server ・honojs/middlewareのotelをミドルウェア に仕込むだけでOK Client ・opentrlemetry-jsのパッケージを 使い分ける必要あり
17 Honoにおける計装対象はHono HTTP ServerのHandlerとRPC の”hc”(Fetch Client)がある Hono Client/ServerへのOpenTelemetry統合 3. Honoの計装
Server ・honojs/middlewareのotelをミドルウェア に仕込むだけでOK Client ・opentrlemetry-jsのパッケージを 使い分ける必要あり
18 “hc”内部ではfetchが使われており、下記パッケージを使うと既存コード に修正を入れずにfetchに透過的に計装が行える ブラウザ: @opentelemetry/instrumentation-fetch Node.js: @opentelemetry/instrumentation-undici Hono Clientへの計装 3.
Honoの計装
19 ブラウザとNode.js(v18以降)はbuiltinのfetchの内部実装が異なる Hono Clientへの計装 3. Honoの計装
20 環境ごとにfetchの計装方法が異なる、undiciに関してはNode.jsの API(AsyncLocalStorageやDiagnostics Channel)が使用されている Hono Clientへの計装 3. Honoの計装 グローバルに fetchが置き換え
られ、リクエスト開始時に Span を構成 Diagnostics Channel API経 由でリクエストの内容を SubscribeしSpanを構成
21 ・Hono MiddlewareにはOpenTelemetryの計装パッケージを使おう ・fetchクライアントを計装する場合は実行環境に注意 まとめ