ClickHouse Cloud に Managed ClickStack をデプロイし、インジェストパイプラインを通じてテストイベントを送信して、そのイベントが ClickStack UI で利用できることを確認します。
ClickHouse Cloud は ClickHouse バックエンドを運用し、ユーザーはインジェストパイプラインとスキーマを完全に制御できます。Managed ClickStack では、次の機能を利用できます。
- ストレージから独立したコンピュートの自動スケーリング
- オブジェクトストレージをベースにした、低コストかつ実質無制限の保持期間
- ウェアハウスによる、読み取りワークロードと書き込みワークロードの個別の分離
- 統合認証
- 自動バックアップ
- セキュリティ機能とコンプライアンス機能
- シームレスなアップグレード
始める前に
サポート対象のインテグレーションと独自のスキーマを使用して、データをClickHouseに直接送信することもできます。
ClickHouse Cloud サービスを作成する
ClickHouse Cloud のクイックスタートにあるClickHouse サービスの作成を完了します。続行する前に、サービスが稼働中であることを確認してください。
インジェスト環境を準備する
- 新しいOpenTelemetry Collectorを起動するには、Dockerをインストールします。Kubernetes では、Helmを使用して collector をデプロイします。
- 既存の collector を使用するには、ゲートウェイロールとして実行し、そのディストリビューションに ClickHouse exporterが含まれていることを確認します。必要な設定は、このガイドで追加します。
Managed ClickStack をセットアップする
インジェストソースとcollectorの構成を選択する
ClickHouse Cloud サービスから ClickStack を起動します。ClickStack のはじめにページで、インジェストを開始を選択します。

インジェストソースを選択ページで、OpenTelemetry を選択します。

ClickStack は、default 管理者の認証情報を使用した collector コマンドを生成します。インジェスト用のアクセス権を管理用のアクセス権から分離し、管理者パスワードへの依存を避けるため、専用のインジェスト認証情報を使用することを推奨します。
専用のインジェスト認証情報を作成する(推奨)
ClickHouse Cloud でサービスの SQL コンソールを開き、次を実行します。
CREATE USER `clickstack-ingest` IDENTIFIED WITH sha256_password BY '<password>';
GRANT SELECT, INSERT, CREATE DATABASE, CREATE TABLE, CREATE VIEW ON default.* TO `clickstack-ingest`;生成されたコマンドで、CLICKHOUSE_USER="default" を CLICKHOUSE_USER="clickstack-ingest" に置き換え、CLICKHOUSE_PASSWORD に専用ユーザーのパスワードを設定します。
default 管理者認証情報を使用して続行するには、Collector を開始タブからコマンドをコピーします。ClickStack によりサービスエンドポイントが事前入力されます。パスワードのプレースホルダーをサービスのパスワードに置き換えます。パスワードが手元にない場合は、接続詳細を確認またはリセットしてください。
コマンドは次の形式です。
docker run -e CLICKHOUSE_ENDPOINT="https://<host>:8443" \
-e CLICKHOUSE_USER="default" \
-e CLICKHOUSE_PASSWORD="<your_password_here>" \
-p 4317:4317 -p 4318:4318 \
clickhouse/clickstack-otel-collector:latest<host> と <your_password_here> を ClickHouse Cloud サービスの値に置き換えてから、コマンドを実行します。
collector はフォアグラウンドで実行されます。この端末は開いたままにし、このガイドの残りのコマンドは別の端末で実行します。
既存の collector を設定を選択し、collector の設定を調整します。
アプリケーションと ClickHouse Cloud の間のゲートウェイとして collector を実行します。以下の設定により、必要な ClickHouse exporter とシグナルパイプラインが追加されます。
この例では、ClickStack によって生成された default 認証情報を使用します。専用のインジェスト認証情報を使用するには、新しい collector を開始タブにある任意の設定手順に従ってください。両方の ClickHouse exporter ブロックで、username: default を username: clickstack-ingest に置き換え、password に専用ユーザーのパスワードを設定します。
関係のない receiver、プロセッサ、エクスポーター、拡張機能を置き換えるのではなく、以下のコンポーネントを既存の設定にマージしてください。
この例では、OTLP receiver、バッチ処理とメモリ制限、セッションリプレイのルーティング、ClickHouse exporter を追加します。
endpoint と password のプレースホルダーを、ClickStack で生成された認証情報に置き換えます:
receivers:
otlp/hyperdx:
protocols:
grpc:
include_metadata: true
endpoint: "0.0.0.0:4317"
http:
cors:
allowed_origins: ["*"]
allowed_headers: ["*"]
include_metadata: true
endpoint: "0.0.0.0:4318"
processors:
batch:
memory_limiter:
# 80% of maximum memory up to 2G, adjust for low memory environments
limit_mib: 1500
# 25% of limit up to 2G, adjust for low memory environments
spike_limit_mib: 512
check_interval: 5s
connectors:
routing/logs:
default_pipelines: [logs/out-default]
error_mode: ignore
table:
- context: log
statement: route() where IsMatch(attributes["rr-web.event"], ".*")
pipelines: [logs/out-rrweb]
exporters:
clickhouse/rrweb:
database: default
endpoint: <clickhouse_cloud_endpoint>
password: <your_password_here>
username: default
ttl: 720h
logs_table_name: hyperdx_sessions
timeout: 5s
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 30s
max_elapsed_time: 300s
clickhouse:
database: default
endpoint: <clickhouse_cloud_endpoint>
password: <your_password_here>
username: default
ttl: 720h
timeout: 5s
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 30s
max_elapsed_time: 300s
service:
pipelines:
traces:
receivers: [otlp/hyperdx]
processors: [memory_limiter, batch]
exporters: [clickhouse]
metrics:
receivers: [otlp/hyperdx]
processors: [memory_limiter, batch]
exporters: [clickhouse]
logs/in:
receivers: [otlp/hyperdx]
exporters: [routing/logs]
logs/out-default:
receivers: [routing/logs]
processors: [memory_limiter, batch]
exporters: [clickhouse]
logs/out-rrweb:
receivers: [routing/logs]
processors: [memory_limiter, batch]
exporters: [clickhouse/rrweb]既存の OTLP receiver を再利用し、その認証および TLS 設定は維持してください。設定ですでに例と同じコンポーネント ID またはパイプライン ID を使用している場合は、重複した ID を作成するのではなく、マージするか名前を変更してください。ポート 4317 と 4318 で 2 つの receiver を実行すると、ポート競合が発生します。
設定をマージした後、既存のデプロイメントプロセスに従って collector を再読み込みまたは再起動します。
OpenTelemetry collector の設定に関する詳細は、OpenTelemetry を使用したインジェストを参照してください。
テストデータを送信する
現在のタイムスタンプを含むテストログを送信します。
NOW_NANO="$(date +%s)000000000"
curl -i "http://localhost:4318/v1/logs" \
-H "Content-Type: application/json" \
--data-binary @- <<EOF
{
"resourceLogs": [{
"resource": {
"attributes": [{
"key": "service.name",
"value": {"stringValue": "clickstack-docs-test"}
}]
},
"scopeLogs": [{
"scope": {"name": "clickstack-docs-test"},
"logRecords": [{
"timeUnixNano": "${NOW_NANO}",
"severityText": "INFO",
"body": {"stringValue": "ClickStack ingestion test"}
}]
}]
}]
}
EOF既存のcollectorを使用する場合は、http://localhost:4318をそのOTLP HTTPエンドポイントに置き換えてください。receiverで認証が必要な場合は、必要なheaderをcurlコマンドに追加してください。
リクエストが成功すると、HTTP/1.1 200 OKが返されます。
データの探索を開始し、インジェストを確認する
ClickStack が OpenTelemetry のデータソースを検出したら、Start exploring を選択して Search ビューを開きます。ClickStack ingestion test を検索します。
検索結果には、サービス名が clickstack-docs-test のテストイベントが表示されます。

インジェスト環境を準備する
ClickHouse にデータを送信できる既存の Vector パイプラインを起点とします。
Managed ClickStack をセットアップする
Vector を選択し、インジェストを設定する
ClickHouse Cloud サービスから ClickStack を起動します。ClickStack の Getting Started ページで Start ingestion を選択します。

Choose an ingestion source ページで、Vector を選択します。

Vector は、高性能かつベンダーニュートラルなオブザーバビリティ向けデータパイプラインであり、柔軟性の高さとリソース消費の少なさから、特にログのインジェスト用途で広く利用されています。
Vector を ClickStack と組み合わせて使用する場合、スキーマはユーザー自身で定義します。OpenTelemetry の規約に従うことも、イベントに固有のフィールドを使用することもできます。
データベースとテーブルを作成する
Vector のシンクを設定する前に、データベースとテーブルを作成してください。
ClickHouse Cloud で、対象の service の SQL Console を開き、database を作成します。
たとえば、logs 用の database を次のように作成します。
CREATE DATABASE IF NOT EXISTS logs次に、ログデータの構造に合致するスキーマを持つテーブルを作成します。以下の例では、典型的な Nginx アクセスログのフォーマットを前提としています:
CREATE TABLE logs.nginx_logs
(
`time_local` DateTime,
`remote_addr` IPv4,
`remote_user` LowCardinality(String),
`request` String,
`status` UInt16,
`body_bytes_sent` UInt64,
`http_referer` String,
`http_user_agent` String,
`http_x_forwarded_for` LowCardinality(String),
`request_time` Float32,
`upstream_response_time` Float32,
`http_host` String
)
ENGINE = MergeTree
ORDER BY (toStartOfMinute(time_local), status, remote_addr);テーブルは、Vector が生成する出力スキーマと一致している必要があります。推奨されるスキーマのベストプラクティスに従い、扱うデータに合わせてスキーマを調整してください。
ClickHouse における主キーの仕組みを理解した上で、アクセスパターンに基づいてソートキーを選択することを強く推奨します。主キーの選び方については、ClickStack 固有のガイダンスを参照してください。
ClickHouse sink を設定する
テーブルを作成したら、Vectorの設定にClickHouseシンクを追加します。
sinks:
clickhouse:
type: clickhouse
inputs:
- your_input
endpoint: "https://<host>:8443"
database: logs
table: nginx_logs
format: json_each_row
skip_unknown_fields: true
auth:
strategy: basic
user: default
password: "<your_password_here>"your_input は、既存のパイプラインの入力に置き換えてください。<host> と <your_password_here> は、ご利用の ClickHouse Cloud サービスの値に置き換えてください。必要に応じて、移行先データベースまたはテーブルを変更してください。
専用のインジェスト認証情報を使用する(推奨)
本番環境では、専用のユーザーを作成し、Vectorターゲットテーブルへのアクセス権を付与します。ClickHouse CloudでサービスのSQLコンソールを開き、次を実行します。
CREATE USER `clickstack-ingest` IDENTIFIED WITH sha256_password BY '<password>';
GRANT SELECT, INSERT ON logs.nginx_logs TO `clickstack-ingest`;Vector sink の default を clickstack-ingest に置き換え、password には専用ユーザーのパスワードを設定します。
更新した設定を保存し、既存のデプロイメントプロセスに従って Vector をリロードまたは再起動します。
Vector を使用したデータ取り込みのその他の例については、Vector による取り込みを参照してください。高度なオプションについては、Vector ClickHouse sink ドキュメントを参照してください。
ClickStack のデータソースを作成する
Vector パイプラインでデータが投入されたテーブル用のログソースを作成します。ClickStack では、初回ログイン時にログソースの作成が求められます。
フォームには、デフォルトの OpenTelemetry スキーマ用の式があらかじめ入力されています。本ガイドで作成した Nginx テーブルの場合は、次の値でログソースを設定します。
| 設定 | 値 |
|---|---|
| 名前 | Nginx ログ |
| ログソースのデータ型 | ログ |
| サーバー接続 | デフォルト |
| データベース | logs |
| テーブル | nginx_logs |
| タイムスタンプカラム | time_local |
| デフォルトのSELECT文 | time_local, remote_addr, status, request |
| サービス名の式 | 'nginx' |
| ログレベルの式 | multiIf(status >= 500, 'ERROR', status >= 400, 'WARN', 'INFO') |
| ログ属性の式 | map('http.remote_addr', toString(remote_addr), 'http.status_code', toString(status), 'http.request', request) |
| リソース属性の式 | map('service.name', 'nginx') |
| 表示するタイムスタンプカラム | time_local |
| トレース ID の式 | '' |
| Span ID 式 | '' |
| 暗黙的カラム式 | リクエスト |
Nginx のテーブルには Body カラムが存在しません。Body Expression には次を設定します:
concat(
remote_addr, ' ',
remote_user, ' ',
'[', formatDateTime(time_local, '%d/%b/%Y:%H:%i:%S %z'), '] ',
'"', request, '" ',
toString(status), ' ',
toString(body_bytes_sent), ' ',
'"', http_referer, '" ',
'"', http_user_agent, '" ',
'"', http_x_forwarded_for, '" ',
toString(request_time), ' ',
toString(upstream_response_time), ' ',
'"', http_host, '"'
)その他のログソース設定については、ClickStack 設定リファレンスを参照してください。
テストデータを送信する
既存のVectorパイプラインの入力に、代表的なイベントを送信します。
Vectorのログソースと変換のその他の例については、Vectorを使用した取り込みを参照してください。
データを探索し、インジェストを確認する
ログソースを作成したら、探索を開始 を選択して Search ビューを開きます。テーブルのログソースを選択し、送信したイベントが含まれていることを確認します。

これで、Managed ClickStack サービス、機能するインジェストパス、および ClickStack で確認できるテストイベントが用意されました。
次のステップ
別のガイドで ClickHouse Cloud エンドポイントまたはパスワードが必要な場合は、続行する前に接続情報を確認またはリセットしてください。
アプリケーションとインフラストラクチャのデータを送信する
ClickStack に送信するデータに応じて、ガイドを選択してください。
アプリケーションをインストルメントする
サポート対象の OpenTelemetry SDK を使用して、アプリケーションのトレースとログを送信します。
ホストログを収集する
エージェントの役割で実行されている OpenTelemetry Collector からホストログを転送します。
Kubernetes を監視する
Kubernetes クラスターからログ、メトリクス、トレースを収集します。
その他のインテグレーションを確認する
その他のアプリケーションやテレメトリーソースのガイドを確認します。
サンプルデータを探索する
サンプルデータセットを使用して、より充実したテレメトリーとともに ClickStack を探索します。
サンプルのログ、トレース、メトリクス

公開デモからデータを読み込み、問題を診断します。このガイドでは、新しいローカルの OpenTelemetry Collector を起動していることを前提としています。既存の collector を設定している場合は、デプロイメントに合わせて エンドポイント と認証設定を調整してください。
ローカルログとメトリクス

macOS または Linux 上でローカルファイルとシステムメトリクスを収集します。
合成データを生成する
既存のアプリケーションやデータセットがない場合は、ジェネレーターを使用してインジェストをテストできます。
otelgen でデータを生成する
合成 OTLP ログ、トレース、メトリクスを短時間にまとめて送信します。
telemetrygen でデータを生成する
複数のサービスにわたって、設定可能な OpenTelemetry シグナルを生成します。
ClickStack のすべてのサンプルデータとデモを参照してください。
本番環境に向けた準備
ClickStack を継続的なワークロードで使用する前に、本番運用とサイジングに関するガイダンスを確認してください。
デプロイメントのタスクについては、Managed ClickStack デプロイメントガイドを参照してください。