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
How to Think Like a Performance Engineer
csswizardry
27
2k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Speed Design
sergeychernyshev
32
1.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Docker and Python
trallard
46
3.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Why Our Code Smells
bkeepers
PRO
340
57k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Producing Creativity
orderedlist
PRO
347
40k
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クライアントを計装する場合は実行環境に注意 まとめ