Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Managed ClickStack の利用を開始する

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 を選択します。

インジェストソースとして 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 はフォアグラウンドで実行されます。この端末は開いたままにし、このガイドの残りのコマンドは別の端末で実行します。

テストデータを送信する

現在のタイムスタンプを含むテストログを送信します。

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 のテストイベントが表示されます。

ClickStack ingestion testイベントを表示したClickStackのログビュー

インジェスト環境を準備する

ClickHouse にデータを送信できる既存の Vector パイプラインを起点とします。

Managed ClickStack をセットアップする

Vector を選択し、インジェストを設定する

ClickHouse Cloud サービスから ClickStack を起動します。ClickStack の Getting Started ページで Start ingestion を選択します。

インジェストを開始する

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

インジェストソースとして 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 の defaultclickstack-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 ビューを開きます。テーブルのログソースを選択し、送信したイベントが含まれていることを確認します。

ClickStack UI のログ

これで、Managed ClickStack サービス、機能するインジェストパス、および ClickStack で確認できるテストイベントが用意されました。

次のステップ

別のガイドで ClickHouse Cloud エンドポイントまたはパスワードが必要な場合は、続行する前に接続情報を確認またはリセットしてください

アプリケーションとインフラストラクチャのデータを送信する

ClickStack に送信するデータに応じて、ガイドを選択してください。

サンプルデータを探索する

サンプルデータセットを使用して、より充実したテレメトリーとともに ClickStack を探索します。

合成データを生成する

既存のアプリケーションやデータセットがない場合は、ジェネレーターを使用してインジェストをテストできます。

ClickStack のすべてのサンプルデータとデモを参照してください。

本番環境に向けた準備

ClickStack を継続的なワークロードで使用する前に、本番運用とサイジングに関するガイダンスを確認してください。

デプロイメントのタスクについては、Managed ClickStack デプロイメントガイドを参照してください。

Navigation