Hugo に OpenTelemetry を追加してみる
この記事は OpenTelemetry Advent Calendar 2025 11日目の記事です。
背景
このサイトはHugo を利用しており、OpenTelemetry を利用して計装してみたかったので、追加してみました。 トレースは Hoenycomb に送信します。 ただし、フロントエンドに Honeycomb の API Key を設定するわけには行かないため、Cloudflare Workers をバックエンドとして利用してトレースを転送します。
構成
- フロントエンド(Hugo)に OpenTelemetry のスクリプトを追加する
- バックエンド(Cloudflare Workers)にトレースを送信して Honeycomb に転送する
- Honeycomb でトレースを確認する
手順
1. フロントエンド(Hugo)に OpenTelemetry のスクリプトを追加する。
HugoのJS.Buildという機能を利用して、OpenTelemetryの計装スクリプトをフロントエンドに追加します。 バンドラはesbuildが兼ね備えているので、TypeScriptをそのまま記述してもビルドができます。 TypescriptとOpenTelemetryの依存関係を追加します。
npm i -D -E typescript
npm i -E @opentelemetry/api \
@opentelemetry/context-zone \
@opentelemetry/exporter-trace-otlp-http \
@opentelemetry/instrumentation-document-load
@opentelemetry/instrumentation-user-interaction \
@opentelemetry/instrumentation-xml-http-request \
@opentelemetry/resources \
@opentelemetry/sdk-trace-web \
@opentelemetry/semantic-conventions
TypeScriptの設定ファイルを作成します。
npx tsc --init
Otel計装用のスクリプト document-load.ts を作成します。
mkdir -p assets/js
touch assets/js/document-load.ts
document-load.ts は以下のようになります。
