通常、データは OpenTelemetry (OTel) collector を介して ClickStack に送信されます。送信元は言語 SDKs から直接の場合もあれば、エージェントとして動作する中間の OpenTelemetry collector (たとえばインフラストラクチャのメトリクスやログを収集するもの) を経由する場合もあります。
言語 SDKs は、アプリケーション内部からテレメトリー、特に トレース と ログ を収集し、このデータを OTLP エンドポイント経由で OpenTelemetry collector にエクスポートする役割を担います。OpenTelemetry collector は、そこから ClickHouse へのインジェストを処理します。
ブラウザベースの環境では、SDKs が セッションデータ (UI イベント、クリック、ナビゲーションなど) の収集も担い、ユーザーセッションのリプレイを可能にすることもあります。
動作の仕組み
- アプリケーションは ClickStack SDK (例: Node.js、Python、Go) を使用します。これらの SDK は OpenTelemetry SDKs をベースにしており、追加機能と使いやすさの改善が加えられています。
- SDK は OTLP (HTTP または gRPC) 経由でトレースとログを収集し、エクスポートします。
- OpenTelemetry collector はテレメトリーを受信し、設定されたエクスポーターを通じて ClickHouse に書き込みます。
対応言語
| 言語 | 説明 | リンク |
|---|---|---|
| AWS Lambda | AWS Lambda 関数をインストルメントする | ドキュメント |
| Browser | ブラウザベースのアプリケーション向け JavaScript SDK | ドキュメント |
| Elixir | Elixir アプリケーション | ドキュメント |
| Go | Go アプリケーションとマイクロサービス | ドキュメント |
| Java | Java アプリケーション | ドキュメント |
| NestJS | NestJS アプリケーション | ドキュメント |
| Next.js | Next.js アプリケーション | ドキュメント |
| Node.js | サーバーサイドアプリケーション向け JavaScript ランタイム | ドキュメント |
| Deno | Deno アプリケーション | ドキュメント |
| Python | Python アプリケーションと Web サービス | ドキュメント |
| React Native | React Native モバイルアプリケーション | ドキュメント |
| Ruby | Ruby on Rails アプリケーションと Web サービス | ドキュメント |
API key による保護
OTel collector 経由で ClickStack にデータを送信するには、SDK でインジェスト API key を指定する必要があります。これは、SDK の init 関数または OTEL_EXPORTER_OTLP_HEADERS 環境変数で設定できます。
OTEL_EXPORTER_OTLP_HEADERS='authorization=<YOUR_INGESTION_API_KEY>'このAPI keyは ClickStack UI (HyperDX) アプリケーションによって生成され、アプリの Team Settings → API Keys から確認できます。
OpenTelemetry をサポートするほとんどの 言語 SDKs やテレメトリーライブラリでは、アプリケーションで OTEL_EXPORTER_OTLP_ENDPOINT 環境変数を設定するか、SDK の初期化時に指定するだけで済みます。
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318Kubernetes インテグレーション
すべての SDK は、Kubernetes 環境で実行されている場合、Kubernetes のメタデータ (ポッド名、ネームスペース など) との自動相関をサポートしています。これにより、次のことが可能になります。
- サービスに関連付けられたポッドやノードの Kubernetes メトリクスを表示する
- アプリケーションのログやトレースをインフラストラクチャのメトリクスと相関付ける
- Kubernetes クラスター全体にわたってリソース使用量とパフォーマンスを追跡する
この機能を有効にするには、resource タグをポッドに転送するよう OpenTelemetry Collector を設定します。詳しい設定手順については、Kubernetes インテグレーションガイド を参照してください。