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

ClickStack UI のログ

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

次のステップ

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

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

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

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

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

合成データを生成する

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

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

本番環境に向けた準備

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

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

Navigation