前提条件
- 利用可能でアクセス可能な OTel collector があり、Managed ClickStack サービスにインジェストしていること。OTLP endpoint とインジェスト用トークンが必要です。
- Node 18+ と npm。
アプリケーションをクローンして実行する
リポジトリをクローンし、依存関係をインストールして、.env ファイルを作成します。接続情報を取得する
アプリケーションがcollectorに到達するには、2 つの値が必要です。OTEL_EXPORTER_OTLP_ENDPOINT: collector が公開する OTLP endpoint (通常、HTTP 経由の OTLP ではポート4318) 。OTEL_EXPORTER_OTLP_HEADERS: インジェスト用トークンを含む認可ヘッダー。形式はauthorization=<token>です。
.env を開いて、これらを設定します。OTEL_EXPORTER_OTLP_HEADERS を使用します。collector がローカルで実行されており、認証を必須としていない場合は、値を空のままにできます (OTEL_EXPORTER_OTLP_HEADERS=authorization=) 。ただし、この変数自体は必ず指定されている必要があります。未設定、または完全に空の場合、SDK は初期化自体を完全にスキップします。アプリケーションをインストルメントする
インストルメンテーションは3つの要素で構成されます。SDKsのインストール、起動コマンドの切り替え、ブラウザ SDK の有効化です。いずれもアプリケーションのビジネスロジックを変更するものではありません。SDKsをインストールする
バックエンド用とブラウザ用の両方のOpenTelemetry SDKsをインストールします。opentelemetry-instrument CLI を使用する
アプリケーションはrun.sh から起動されます。このファイルの末尾には exec 行が 2 つあり、1 つは有効、もう 1 つはコメントアウトされています。Node が opentelemetry-instrument でラップされるように、有効にする行を切り替えてください:opentelemetry-instrument によって読み込まれます。ブラウザ SDK を有効にする
分散トレース (ブラウザからバックエンドまで) とセッションリプレイを取得するには、src/web/telemetry.ts でブラウザ SDK を有効にします。import と HyperDX.init({...}) ブロックのコメントアウトを外してください。.env 編集は不要です。__OTLP_ENDPOINT__ と __OTLP_AUTH_TOKEN__ は、vite.config.ts によって注入されるコンパイル時定数です。エンドポイントは OTEL_EXPORTER_OTLP_ENDPOINT、トークンは OTEL_EXPORTER_OTLP_HEADERS から解析して取り出されるもので、どちらもバックエンドが使用する値と同じです。トラフィックを発生させてテレメトリーを確認する
新しい起動コマンドと新たにビルドしたブラウザバンドルを反映するため、アプリケーションを再起動します。- Search に移動し、過去 5 分で絞り込みます。
hn-analyzer-apiのログが次々に表示されます。
- リクエストをクリックし、トレースを親方向にたどります。Express のハンドラースパン、ClickHouse クラスターを指す子 HTTP スパン (実際のネットワーク所要時間付き) 、および同じトレース上で相関付けられた
console.logレコードが表示されます。
- Session Replay を開くと、トレースのタイムラインに同期した、シーク可能なブラウザセッションのビデオを再生できます。
詳しくはこちら
- Session Replay: 機能の概要、SDK オプション、プライバシー制御。
- Session Replay Demo: ローカルの ClickStack インスタンスで試せる自己完結型デモ。
- ClickStack 入門: ClickStack をデプロイし、最初のデータを取り込むためのガイド。
- サンプルデータセット一覧: そのほかのサンプルデータセットとガイド。