- アプリケーションコードに手を加えることなく、既存のエージェントを使って同じテレメトリーを両方のプラットフォームに送信し、Datadog と併用しながら ClickStack を評価する。
- 現在の収集レイヤーを維持したまま ClickStack へ移行しつつ、OpenTelemetry インストルメンテーションを段階的に導入して、移行をスムーズに進める。
- 長期的に 両方のスタックを並列に運用し、それぞれのプラットフォームを得意分野に応じて使い分ける。
なぜ Datadog と併用して ClickStack を運用するのか
- より長い保持期間。 予算ではなく運用要件に合わせて保持期間を設定し、数週間後や数か月後に必要になる可能性のあるイベントも保持できます。
- フルフィデリティのデータ。 すべてのログとトレースをサンプリングなしで保存できるため、一部のデータではなく完全なデータに対して調査を実行できます。
- API レート制限なし。 テレメトリーを従量課金の API 経由ではなくデータベースとしてクエリでき、クエリ単位やエンドポイント単位のスロットリングもありません。
- 完全な SQL アクセス。 ログ、メトリクス、トレースを SQL で分析し、さらにそれらを ClickHouse にすでにあるビジネスデータやインフラストラクチャデータと join できます。
- エージェント型ワークロード。 ClickStack MCPサーバー を通じて AI agents にテレメトリーを公開し、無制限の分析クエリを ClickHouse に対して直接実行できます。
Datadog receiver の仕組み
receiverが処理する内容
- ログレコード。 Datadogのミリ秒タイムスタンプはナノ秒に変換され、OpenTelemetryのtimestamp、observed timestamp、body、severityの各フィールドの設定に使用されます。これにより、レコードがUnix epochとして表示されることはなくなります。
- リソース属性とseverity。
info、warn、errorなどのDatadogのstatusは、対応するOpenTelemetryのSeverityNumberとSeverityTextにマッピングされます。hostname、service name、environment、および既知のcontainer、クラウド、Kubernetesのタグは、標準のリソース属性に昇格されます。 - traceとログの相関付け。
dd.trace_idとdd.span_idのフィールドはOpenTelemetryのtrace識別子とspan識別子の設定に使われ、receiverはDatadogの分割表現から完全な128ビットのtrace IDを再構築します。これはデフォルトで有効になっており、Datadog由来のログやspanを、OpenTelemetryでインストルメントされたserviceと相関付けられるようにします。 - 構造化JSONログ。 デフォルトで有効な
decode_json_messageオプションは、通常Datadog backendで行われるJSON処理を実行し、body、timestamp、severity、trace識別子、resourceフィールド、および残りの属性を抽出します。 - 現在のエージェントとの互換性。 Datadog Agent 7.59以降では、HTTPペイロードはデフォルトでZstandard圧縮されます。receiverはgzipに加えてZstandardもサポートしているため、現在のエージェントはペイロードが拒否されることなく接続できます。
Datadog receiver を有効にする
8126 ポートで待ち受ける ClickStack 版の OpenTelemetry Collector に含まれています。デフォルトでは無効になっており、ENABLE_DATADOG_RECEIVER 環境変数で有効にできます。
有効にしたら、Datadog エージェント の送信先をこの receiver に設定し、ClickStack のインジェストキーで認証します。このキーの取得方法はデプロイ方法によって異なります。Managed ClickStack ではスタンドアロンの collector を実行し、起動時に自分でキーを設定します。一方、Open Source ClickStack ではキーが自動生成され、ClickStack のインターフェイス (HyperDX) からコピーします。以下からご利用のデプロイ方法を選択してください。
- マネージド ClickStack
- オープンソース版 ClickStack
Managed ClickStack では、ClickHouse Cloud サービスにインジェストするスタンドアロンの ClickStack collector をデプロイします。collector は起動時に、自分で選んだ認証トークンで保護し、その同じトークンを Datadog agent の API key として再利用します。standalone ClickStack collector を実行し、ClickHouse Cloud サービスを指定します。これで receiver は この設定により、次のようになります。
1
receiver を有効にして collector をデプロイする
ClickStack OpenTelemetry collector と標準の OpenTelemetry collector の違いDatadog receiver は、ClickStack 版の OpenTelemetry collector に組み込まれており、事前設定済みです。標準の OpenTelemetry Collector Contrib distribution を使用する場合は、receiver を自分で設定する必要があります。receiver に対する変更や改善はすべてアップストリームに反映されているため、そちらでも利用できます。設定オプションについては、Datadog receiver README を参照してください。
ENABLE_DATADOG_RECEIVER=true で Datadog receiver を有効にし、ポート 8126 を公開して、独自の OTLP_AUTH_TOKEN を設定することでインジェストを保護します。http://localhost:8126 で利用可能になり、OTLP_AUTH_TOKEN のトークンを Datadog agent に渡す key として使用します。Helm での同等の設定を含め、collector の保護について詳しくは、“collector を保護する” を参照してください。2
Datadog agent を設定する
/opt/datadog-agent/etc/datadog.yaml の agent 設定ファイルを更新し、logs、traces、メトリクス を receiver に送信します。OTLP_AUTH_TOKEN の値を API key として使用し、各宛先を receiver endpoint に向けます。- メトリクス、traces、logs は Datadog ではなく receiver に送信されます。
- ClickStack は Datadog v2 metrics endpoint をサポートしているため、v3 metrics intake は無効になります。
- Datadog backend に依存する remote updates と remote configuration は無効になります。
3
agent を再起動する
Datadog agent を再起動して、新しい設定を反映させます。macOS の場合:これで agent からのテレメトリーが ClickStack に送られ、HyperDX で確認できるようになります。
実践例
1
サンプルアプリをクローンして実行する
この例では、アプリの実行方法は、README の手順 を参照してください。
datadog-instrumentation ブランチで Datadog によりインストルメントされた Hacker News demo app を使用します。まず、そのブランチをクローンします。2
receiver を有効にして ClickStack を起動する
Datadog receiver を有効にして all-in-one イメージを起動します。ここでは、同じく receiver は
8126 を使用するローカルの Datadog エージェント と競合しないよう、receiver をホストのポート 18126 にマッピングします。http://127.0.0.1:18126 で利用できます。3
Datadog エージェント をインストールして設定する
Datadog エージェント をインストール します。macOS の場合は次を実行します。agent の完全な設定例とインジェストキーの確認場所については、Datadog receiver を有効にする を参照してください。
/opt/datadog-agent/etc/datadog.yaml を更新して、ポート 18126 の receiver を参照するよう設定し、API key として ClickStack のインジェストキーを使用します。その後、agent を再起動します。4
ClickStack でテレメトリーを確認する
http://localhost:8080 で HyperDX インターフェイスを開き、Datadog エージェント から収集されたトレース、ログ、メトリクスを確認します。