すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for ClickHouse:ClickStack

最終更新日:Aug 08, 2026

ApsaraDB for ClickHouse の ClickStack サービスは、ClickHouse および OpenTelemetry 上に構築されたパフォーマンス専有型の可観測性ソリューションです。ログ、トレース、メトリックをシームレスに統合し、統一された可観測性エクスペリエンスを提供します。これにより、開発者および運用エンジニアは異なるツール間を切り替えることなく、エンドツーエンドで問題を追跡・解決できます。さらに、ClickStack サービスには可観測性データ分析用の組み込み型インテリジェント AI アシスタントが含まれています。このアシスタントは OTel 可観測性データ(トレース/ログ/メトリック)を自動的にクエリし、SQL 検索および構造化された RCA プロセスを通じて、可観測性に関するトラブルシューティングおよび根本原因分析を自動的に完了します。本トピックでは、ClickStack サービスの使用方法について説明します。

前提条件

ApsaraDB for ClickHouse クラスターが作成済みです。

  • ApsaraDB for ClickHouse では、ClickStack をワンクリック有効化できます。

  • ApsaraDB for ClickHouse Community-compatible Edition の ClickStack は現在、招待制プレビュー段階です。この機能を有効にするには、チケットを送信してテクニカルサポートまでご連絡ください。

サービスの有効化

  1. ApsaraDB for ClickHouse コンソールにログインします。左上隅で、クラスターが存在するリージョンを選択します。

  2. クラスターリストページで、対応するバージョンのインスタンスリストを選択し、対象のクラスター ID をクリックします。

  3. 左側のナビゲーションウィンドウで、ClickStack をクリックします。

  4. ダイアログボックスで、テーブルを自動作成するおよびサンプルデータをインポートするを選択することを推奨します。必要に応じて LLM へのインターネットアクセスを有効化し、を決定 をクリックします。サービスの有効化には約 5~10 分かかります。

    重要
    • LLM へのインターネットアクセスオプションを選択すると、追加料金が発生します。必要に応じて有効化してください。

    • サービスの有効化後、LLM へのインターネットアクセスを個別に有効化できます。

    パラメーター

    説明

    テーブルを自動作成

    • データベース clickobserve_service を作成し、このデータベース内に以下のテーブルを作成します:otel_logs、otel_traces、otel_metrics_gauge、otel_metrics_histogram、otel_metrics_sum、otel_metrics_summary、otel_traces_trace_id_ts、otel_traces_trace_id_ts_mv、otel_metrics_exponential_histogram。

      テーブル構造を表示

      otel_logs

      CREATE TABLE IF NOT EXISTS "clickobserve_service"."otel_logs" (
          Timestamp DateTime64(9) CODEC(Delta(8), ZSTD(1)),
          TimestampTime DateTime DEFAULT toDateTime(Timestamp),
          TraceId String CODEC(ZSTD(1)),
          SpanId String CODEC(ZSTD(1)),
          TraceFlags UInt8,
          SeverityText LowCardinality(String) CODEC(ZSTD(1)),
          SeverityNumber UInt8,
          ServiceName LowCardinality(String) CODEC(ZSTD(1)),
          Body String CODEC(ZSTD(1)),
          ResourceSchemaUrl LowCardinality(String) CODEC(ZSTD(1)),
          ResourceAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ScopeSchemaUrl LowCardinality(String) CODEC(ZSTD(1)),
          ScopeName String CODEC(ZSTD(1)),
          ScopeVersion LowCardinality(String) CODEC(ZSTD(1)),
          ScopeAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          LogAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
      
          INDEX idx_trace_id TraceId TYPE bloom_filter(0.001) GRANULARITY 1,
          INDEX idx_res_attr_key mapKeys(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_res_attr_value mapValues(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_key mapKeys(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_value mapValues(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_log_attr_key mapKeys(LogAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_log_attr_value mapValues(LogAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_body Body TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 8
          ) ENGINE = SharedMergeTree()
          PARTITION BY toDate(TimestampTime)
          PRIMARY KEY (ServiceName, TimestampTime)
          ORDER BY (ServiceName, TimestampTime, Timestamp)
          TTL TimestampTime + toIntervalDay(180)
          SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1;
      

      otel_traces

      CREATE TABLE IF NOT EXISTS "clickobserve_service"."otel_traces" (
          Timestamp DateTime64(9) CODEC(Delta, ZSTD(1)),
          TraceId String CODEC(ZSTD(1)),
          SpanId String CODEC(ZSTD(1)),
          ParentSpanId String CODEC(ZSTD(1)),
          TraceState String CODEC(ZSTD(1)),
          SpanName LowCardinality(String) CODEC(ZSTD(1)),
          SpanKind LowCardinality(String) CODEC(ZSTD(1)),
          ServiceName LowCardinality(String) CODEC(ZSTD(1)),
          ResourceAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ScopeName String CODEC(ZSTD(1)),
          ScopeVersion String CODEC(ZSTD(1)),
          SpanAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          Duration UInt64 CODEC(ZSTD(1)),
          StatusCode LowCardinality(String) CODEC(ZSTD(1)),
          StatusMessage String CODEC(ZSTD(1)),
          Events Nested (
              Timestamp DateTime64(9),
              Name LowCardinality(String),
              Attributes Map(LowCardinality(String), String)
          ) CODEC(ZSTD(1)),
          Links Nested (
              TraceId String,
              SpanId String,
              TraceState String,
              Attributes Map(LowCardinality(String), String)
          ) CODEC(ZSTD(1)),
          INDEX idx_trace_id TraceId TYPE bloom_filter(0.001) GRANULARITY 1,
          INDEX idx_res_attr_key mapKeys(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_res_attr_value mapValues(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_span_attr_key mapKeys(SpanAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_span_attr_value mapValues(SpanAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_duration Duration TYPE minmax GRANULARITY 1
          ) ENGINE = SharedMergeTree()
          PARTITION BY toDate(Timestamp)
          ORDER BY (ServiceName, SpanName, toDateTime(Timestamp))
          TTL toDateTime(Timestamp) + toIntervalDay(180)
          SETTINGS index_granularity=8192, ttl_only_drop_parts = 1;

      otel_metrics_gauge

      CREATE TABLE IF NOT EXISTS "clickobserve_service"."otel_metrics_gauge" (
          ResourceAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ResourceSchemaUrl String CODEC(ZSTD(1)),
          ScopeName String CODEC(ZSTD(1)),
          ScopeVersion String CODEC(ZSTD(1)),
          ScopeAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ScopeDroppedAttrCount UInt32 CODEC(ZSTD(1)),
          ScopeSchemaUrl String CODEC(ZSTD(1)),
          ServiceName LowCardinality(String) CODEC(ZSTD(1)),
          MetricName String CODEC(ZSTD(1)),
          MetricDescription String CODEC(ZSTD(1)),
          MetricUnit String CODEC(ZSTD(1)),
          Attributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          StartTimeUnix DateTime64(9) CODEC(Delta, ZSTD(1)),
          TimeUnix DateTime64(9) CODEC(Delta, ZSTD(1)),
          Value Float64 CODEC(ZSTD(1)),
          Flags UInt32 CODEC(ZSTD(1)),
          Exemplars Nested (
              FilteredAttributes Map(LowCardinality(String), String),
              TimeUnix DateTime64(9),
              Value Float64,
              SpanId String,
              TraceId String
          ) CODEC(ZSTD(1)),
          INDEX idx_res_attr_key mapKeys(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_res_attr_value mapValues(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_key mapKeys(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_value mapValues(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_key mapKeys(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_value mapValues(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1
          ) ENGINE = SharedMergeTree()
          TTL toDateTime(TimeUnix) + toIntervalDay(180)
          PARTITION BY toDate(TimeUnix)
          ORDER BY (ServiceName, MetricName, Attributes, toUnixTimestamp64Nano(TimeUnix))
          SETTINGS index_granularity=8192, ttl_only_drop_parts = 1;

      otel_metrics_histogram

      CREATE TABLE IF NOT EXISTS "clickobserve_service"."otel_metrics_histogram" (
          ResourceAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ResourceSchemaUrl String CODEC(ZSTD(1)),
          ScopeName String CODEC(ZSTD(1)),
          ScopeVersion String CODEC(ZSTD(1)),
          ScopeAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ScopeDroppedAttrCount UInt32 CODEC(ZSTD(1)),
          ScopeSchemaUrl String CODEC(ZSTD(1)),
          ServiceName LowCardinality(String) CODEC(ZSTD(1)),
          MetricName String CODEC(ZSTD(1)),
          MetricDescription String CODEC(ZSTD(1)),
          MetricUnit String CODEC(ZSTD(1)),
          Attributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          StartTimeUnix DateTime64(9) CODEC(Delta, ZSTD(1)),
          TimeUnix DateTime64(9) CODEC(Delta, ZSTD(1)),
          Count UInt64 CODEC(Delta, ZSTD(1)),
          Sum Float64 CODEC(ZSTD(1)),
          BucketCounts Array(UInt64) CODEC(ZSTD(1)),
          ExplicitBounds Array(Float64) CODEC(ZSTD(1)),
          Exemplars Nested (
              FilteredAttributes Map(LowCardinality(String), String),
              TimeUnix DateTime64(9),
              Value Float64,
              SpanId String,
              TraceId String
          ) CODEC(ZSTD(1)),
          Flags UInt32 CODEC(ZSTD(1)),
          Min Float64 CODEC(ZSTD(1)),
          Max Float64 CODEC(ZSTD(1)),
          AggregationTemporality Int32 CODEC(ZSTD(1)),
          INDEX idx_res_attr_key mapKeys(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_res_attr_value mapValues(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_key mapKeys(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_value mapValues(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_key mapKeys(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_value mapValues(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1
          ) ENGINE = SharedMergeTree()
          TTL toDateTime(TimeUnix) + toIntervalDay(180)
          PARTITION BY toDate(TimeUnix)
          ORDER BY (ServiceName, MetricName, Attributes, toUnixTimestamp64Nano(TimeUnix))
          SETTINGS index_granularity=8192, ttl_only_drop_parts = 1;
      

      otel_metrics_sum

      CREATE TABLE IF NOT EXISTS "clickobserve_service"."otel_metrics_sum" (
          ResourceAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ResourceSchemaUrl String CODEC(ZSTD(1)),
          ScopeName String CODEC(ZSTD(1)),
          ScopeVersion String CODEC(ZSTD(1)),
          ScopeAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ScopeDroppedAttrCount UInt32 CODEC(ZSTD(1)),
          ScopeSchemaUrl String CODEC(ZSTD(1)),
          ServiceName LowCardinality(String) CODEC(ZSTD(1)),
          MetricName String CODEC(ZSTD(1)),
          MetricDescription String CODEC(ZSTD(1)),
          MetricUnit String CODEC(ZSTD(1)),
          Attributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          StartTimeUnix DateTime64(9) CODEC(Delta, ZSTD(1)),
          TimeUnix DateTime64(9) CODEC(Delta, ZSTD(1)),
          Value Float64 CODEC(ZSTD(1)),
          Flags UInt32  CODEC(ZSTD(1)),
          Exemplars Nested (
              FilteredAttributes Map(LowCardinality(String), String),
              TimeUnix DateTime64(9),
              Value Float64,
              SpanId String,
              TraceId String
          ) CODEC(ZSTD(1)),
          AggregationTemporality Int32 CODEC(ZSTD(1)),
          IsMonotonic Boolean CODEC(Delta, ZSTD(1)),
          INDEX idx_res_attr_key mapKeys(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_res_attr_value mapValues(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_key mapKeys(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_value mapValues(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_key mapKeys(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_value mapValues(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1
          ) ENGINE = SharedMergeTree()
          TTL toDateTime(TimeUnix) + toIntervalDay(180)
          PARTITION BY toDate(TimeUnix)
          ORDER BY (ServiceName, MetricName, Attributes, toUnixTimestamp64Nano(TimeUnix))
          SETTINGS index_granularity=8192, ttl_only_drop_parts = 1;

      otel_metrics_summary

      CREATE TABLE IF NOT EXISTS "clickobserve_service"."otel_metrics_summary" (
          ResourceAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ResourceSchemaUrl String CODEC(ZSTD(1)),
          ScopeName String CODEC(ZSTD(1)),
          ScopeVersion String CODEC(ZSTD(1)),
          ScopeAttributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          ScopeDroppedAttrCount UInt32 CODEC(ZSTD(1)),
          ScopeSchemaUrl String CODEC(ZSTD(1)),
          ServiceName LowCardinality(String) CODEC(ZSTD(1)),
          MetricName String CODEC(ZSTD(1)),
          MetricDescription String CODEC(ZSTD(1)),
          MetricUnit String CODEC(ZSTD(1)),
          Attributes Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          StartTimeUnix DateTime64(9) CODEC(Delta, ZSTD(1)),
          TimeUnix DateTime64(9) CODEC(Delta, ZSTD(1)),
          Count UInt64 CODEC(Delta, ZSTD(1)),
          Sum Float64 CODEC(ZSTD(1)),
          ValueAtQuantiles Nested(
             Quantile Float64,
             Value Float64
          ) CODEC(ZSTD(1)),
          Flags UInt32  CODEC(ZSTD(1)),
          INDEX idx_res_attr_key mapKeys(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_res_attr_value mapValues(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_key mapKeys(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_value mapValues(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_key mapKeys(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_value mapValues(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1
          ) ENGINE = SharedMergeTree()
          TTL toDateTime(TimeUnix) + toIntervalDay(180)
          PARTITION BY toDate(TimeUnix)
          ORDER BY (ServiceName, MetricName, Attributes, toUnixTimestamp64Nano(TimeUnix))
          SETTINGS index_granularity=8192, ttl_only_drop_parts = 1;

      otel_traces_trace_id_ts

      CREATE TABLE IF NOT EXISTS "clickobserve_service"."otel_traces_trace_id_ts" (
          TraceId String CODEC(ZSTD(1)),
          Start DateTime CODEC(Delta, ZSTD(1)),
          End DateTime CODEC(Delta, ZSTD(1)),
          INDEX idx_trace_id TraceId TYPE bloom_filter(0.01) GRANULARITY 1
          ) ENGINE = SharedMergeTree()
          PARTITION BY toDate(Start)
          ORDER BY (TraceId, Start)
          TTL toDateTime(Start) + toIntervalDay(180)
          SETTINGS index_granularity=8192, ttl_only_drop_parts = 1;

      マテリアライズドビュー otel_traces_trace_id_ts_mv

      CREATE MATERIALIZED VIEW IF NOT EXISTS "clickobserve_service"."otel_traces_trace_id_ts_mv"
      TO "clickobserve_service"."otel_traces_trace_id_ts"
      AS SELECT
            TraceId,
            min(Timestamp) as Start,
            max(Timestamp) as End
         FROM "clickobserve_service"."otel_traces"
         WHERE TraceId != ''
         GROUP BY TraceId;
      

      otel_metrics_exponential_histogram

      CREATE TABLE clickobserve_service.otel_metrics_exponential_histogram (
          `ResourceAttributes` Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          `ResourceSchemaUrl` String CODEC(ZSTD(1)),
          `ScopeName` String CODEC(ZSTD(1)),
          `ScopeVersion` String CODEC(ZSTD(1)),
          `ScopeAttributes` Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          `ScopeDroppedAttrCount` UInt32 CODEC(ZSTD(1)),
          `ScopeSchemaUrl` String CODEC(ZSTD(1)),
          `ServiceName` LowCardinality(String) CODEC(ZSTD(1)),
          `MetricName` String CODEC(ZSTD(1)),
          `MetricDescription` String CODEC(ZSTD(1)),
          `MetricUnit` String CODEC(ZSTD(1)),
          `Attributes` Map(LowCardinality(String), String) CODEC(ZSTD(1)),
          `StartTimeUnix` DateTime64(9) CODEC(Delta(8), ZSTD(1)),
          `TimeUnix` DateTime64(9) CODEC(Delta(8), ZSTD(1)),
          `Count` UInt64 CODEC(Delta(8), ZSTD(1)),
          `Sum` Float64 CODEC(ZSTD(1)),
          `Scale` Int32 CODEC(ZSTD(1)),
          `ZeroCount` UInt64 CODEC(ZSTD(1)),
          `PositiveOffset` Int32 CODEC(ZSTD(1)),
          `PositiveBucketCounts` Array(UInt64) CODEC(ZSTD(1)),
          `NegativeOffset` Int32 CODEC(ZSTD(1)),
          `NegativeBucketCounts` Array(UInt64) CODEC(ZSTD(1)),
          `Exemplars.FilteredAttributes` Array(Map(LowCardinality(String), String)) CODEC(ZSTD(1)),
          `Exemplars.TimeUnix` Array(DateTime64(9)) CODEC(ZSTD(1)),
          `Exemplars.Value` Array(Float64) CODEC(ZSTD(1)),
          `Exemplars.SpanId` Array(String) CODEC(ZSTD(1)),
          `Exemplars.TraceId` Array(String) CODEC(ZSTD(1)),
          `Flags` UInt32 CODEC(ZSTD(1)),
          `Min` Float64 CODEC(ZSTD(1)),
          `Max` Float64 CODEC(ZSTD(1)),
          `AggregationTemporality` Int32 CODEC(ZSTD(1)),
          INDEX idx_res_attr_key mapKeys(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_res_attr_value mapValues(ResourceAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_key mapKeys(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_scope_attr_value mapValues(ScopeAttributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_key mapKeys(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1,
          INDEX idx_attr_value mapValues(Attributes) TYPE bloom_filter(0.01) GRANULARITY 1
      ) ENGINE = SharedMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}')
      PARTITION BY toDate(TimeUnix)
      ORDER BY (ServiceName, MetricName, Attributes, toUnixTimestamp64Nano(TimeUnix))
      TTL toDateTime(TimeUnix) + toIntervalDay(180)
      SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1;
      

    サンプルデータをインポート

    OpenTelemetry プロトコルに準拠したサンプルデータを、ログ、トレース、メトリックの各テーブルにインポートします。圧縮前のデータサイズは 200 MB 未満です。

    LLM へのインターネットアクセス

    LLM サービスはインターネット経由でのみアクセス可能です。そのため、可観測性データ用のインテリジェント AI アシスタントを使用するには、ClickStack サービスノードに対してインターネットアクセスを有効化する必要があります。このオプションを選択すると、システムはご利用のアカウント下で、現在のインスタンスが属する VPC を使用して、インターネット NAT ゲートウェイ、EIP、および SNAT ルールを自動的に作成します。このゲートウェイにより、ClickStack ノードがインターネット経由で LLM サービスにアクセスできるようになります。

    • インターネット NAT ゲートウェイおよび EIP は個別に課金されます。NAT ゲートウェイの課金ルールについては、「NAT Gateway 課金」をご参照ください。EIP の課金ルールについては、「課金」をご参照ください。NAT ゲートウェイおよび EIP のインスタンスはいずれも従量課金(ポストペイド)です。デフォルトの EIP 帯域幅は 5 Mbps です。

    • 現在の VPC 内に既に NAT ゲートウェイインスタンスが存在する場合、システムは新しい NAT ゲートウェイを作成しません。代わりに、新しい EIP インスタンスを作成し、SNAT ルールを設定します。

  5. サービスの有効化後、ご利用のローカル IP アドレスがインスタンスのホワイトリストに含まれていない場合、システムが自動的に追加を促します。

LLM へのインターネットアクセスの有効化

ClickStack サービスの有効化時に LLM へのインターネットアクセスを選択しなかった場合、可観測性データ用のインテリジェント AI アシスタントは正常に動作しません。サービスの有効化後、以下のいずれかの方法でこの機能を有効化できます。

ClickHouse コンソールでのワンクリック有効化

  1. ApsaraDB for ClickHouse コンソールにログインします。左上隅で、クラスターが存在するリージョンを選択します。

  2. クラスターリストページで、対応するバージョンのインスタンスリストを選択し、対象のクラスター ID をクリックします。

  3. 左側のナビゲーションウィンドウで、ClickStack をクリックします。

  4. インターネットアクセスのプロンプトバーで、LLM へのインターネットアクセスを有効化 をクリックします。

    ClickStack サービスはインターネットアクセス有効化ステータスに入ります。この処理には約 1~2 分かかります。この処理中は ClickStack サービスにアクセスできません。処理が完了するとサービスが再開されます。

処理が完了すると、ClickStack ページで自動作成されたインターネット NAT インスタンス ID、EIP インスタンス ID、および EIP パブリック IP アドレスを確認できます。

手動設定

より柔軟なネットワーク構成が必要な場合は、EIP および NAT ゲートウェイを手動で作成できます。

ステップ 1:Elastic IP Address (EIP) の作成

  1. EIP コンソールにログインします。

  2. ClickHouse クラスターと同じリージョンを選択し、EIP インスタンスを作成します。

ステップ 2:インターネット NAT ゲートウェイの作成と EIP のバインド

  1. NAT ゲートウェイ - インターネット NAT ゲートウェイ購入ページに移動します。

  2. ClickHouse クラスターが属する VPC 内にインターネット NAT ゲートウェイインスタンスが存在しない場合、インターネット NAT ゲートウェイを作成 をクリックします。ClickHouse クラスターと同じリージョンおよび VPC を選択し、ステップ 1 で作成した EIP インスタンスを選択して EIP をバインドします。

  3. ClickHouse クラスターが属する VPC 内に既にインターネット NAT ゲートウェイインスタンスが存在する場合、インターネット NAT ゲートウェイコンソールのインスタンスリストページで、その他 > Elastic IP Address をバインド をクリックします。ステップ 1 で作成した EIP を選択してバインドします。

ステップ 3:SNAT エントリの作成

  1. インターネット NAT ゲートウェイページに移動し、対象の NAT ゲートウェイインスタンスの詳細ページを開きます。

  2. SNAT 管理 タブをクリックし、SNAT エントリを作成 をクリックします。

  3. SNAT エントリの粒度として、ECS/ENI 粒度 を選択します。

  4. ECS/ENI オプションで、rds-eni-<ClickHouse インスタンス ID>-webui という名前のセカンダリ ENI を選択します。

  5. ステップ 1 で作成した EIP を Elastic IP Address として選択します。

  6. OK をクリックし、SNAT エントリの作成が完了するまで待ちます。

パブリックネットワークアクセスリソースのリリース

重要

ビジネスセキュリティ上の理由から、ClickHouse インスタンスをリリースしても、パブリックネットワークアクセス用に作成された NAT ゲートウェイおよび EIP インスタンスは自動的に削除されません。インスタンスのリリース後は、それぞれのコンソールでこれらのリソースを手動でリリースする必要があります。

リソースのリリース:

  • ワンクリックで有効化されたパブリックネットワークリソースの場合

    ClickStack サービスによって自動作成された NAT ゲートウェイおよび EIP リソースは、タグ createdby:<インスタンス ID> を使用してフィルタリングおよび削除できます。

  • 手動で作成されたパブリックネットワークリソースの場合

    ビジネス用途に基づいて、削除するかどうかを判断する必要があります。

使用方法

メインページ

  1. インスタンス詳細ページの左側ナビゲーションウィンドウで、ClickStack をクリックします。ページ上部のプロンプトに従って、サービスのメインページに移動します。

  2. ユーザー名とパスワードを入力してメインページにログインします。データベースアカウントを作成するには、「Enterprise Edition のデータベースアカウント管理」または「Community-compatible Edition のデータベースアカウント管理」をご参照ください。

  3. ログイン後、メインページ(検索ページ)に移動します。ページ上部でデータソースを選択し、時間範囲を設定してフィルター条件を指定することで、データをクエリできます。

    image

    • フィルターエリアでフィルター条件を選択すると、条件に一致するログが自動的に絞り込まれます。

    • image をクリックして、現在のページで対応するログの情報を表示します。

    • ログが表示されている行をクリックすると、完全な属性、関連するトレースの持続時間情報、およびログのコンテキスト情報を含む詳細情報が表示されます。

可観測性データ用インテリジェント AI アシスタント

可観測性データ用インテリジェント AI アシスタントは、OTEL 可観測性データテーブルのデータ分析を支援します。インスタンス内の OTEL 可観測性データに関連するデータベースおよびテーブル情報を自動的に識別し、ビジネス要件に基づいて自動的にクエリ文を構築して可観測性データを取得し、その後自動的に分析して診断結果を返します。主な利用シーンには、ビジネストレンド分析、データ量分析、RCA 根本原因診断が含まれます。

前提条件

LLM へのインターネットアクセスが有効になっています。

使用方法

  1. ClickStack メインページで、左側ナビゲーションウィンドウの AI NoteBook ボタンをクリックします。

  2. AI アシスタントのチャットウィンドウで、分析したい質問を入力します。AI アシスタントが自動的に可観測性データをクエリし、分析結果を返します。

一般的な利用シーン

(1) ビジネスログのエラーレートの特定

例となるクエリ:

  • 過去 1 時間に、私の OpenClaw プログラムに異常があったかどうかを分析してください。

  • 過去 10 分間の管理トレースデータで、どのコンポーネントのエラーレートが高かったか分析してください

診断結果

結論
2026-05-06 19:50:00 から 2026-05-06 20:00:00 までの clickobserve_service.otel_traces テーブルのサンプリング分析に基づく:

エラーレート統計
- 全体のエラーレートは約 0.32%(0.5 秒間隔の 7 つのタイムウィンドウからのサンプリングデータに基づき、合計 248,077 スパン)
- エラー発生スパン数:917
- 正常スパン数(OK + UNSET):207,150

StatusCode 分布
StatusCode    件数       比率     備考
UNSET         139,911     74.7%     -
OK            66,247      23.08%    -
ERROR         919         0.32%     -

根拠
- /artifacts/sessions/c-b859bd2-3942-4d85-b636-51dae0d18ae/sql_results.json からアーティファクトを参照

制限事項
- サンプリングバイアス:ClickHouse の max_rows_to_read 制限(200,000 行)により、10 分間の全データをカバーできず、実際のサンプルに偏りが生じる可能性あり
- タイムウィンドウの代表性:サンプリングポイントは 19:50~20:00 間に分布しており、データ量が多い区間が見逃される可能性あり
- 誤差範囲:実際のエラーレートは 0.2%~0.5% の間で変動する可能性あり

次のステップ(より正確な分析のため)
- 正確なエラーレートを得るには、サンプリング比率および数量を調整する必要があります
- 異常の詳細を知りたい場合は、StatusMessage または Events フィールドをクエリしてエラーの詳細を取得できます
- SpanName または ServiceName でドリルダウンし、どのサービスがエラーに寄与しているかを特定できます
(2) 根本原因診断

例となるクエリ:

  • 過去 1 時間に私の管理コンポーネントのログにエラーが発生していたか分析し、根本原因を分析してください

  • 私のゲートウェイリクエストの 1 つが失敗しました。requestId/traceId = ea7d2925-3422-4920-9ab1-b22dd3d85b2f です。詳細な原因を分析してください。

診断結果

エラーデータ分析の結論
2026-05-06 19:50:00 から 20:00:00 までの clickobserve_service.otel_traces テーブルのサンプリング分析に基づき、以下のエラーのサンプリングデータおよびエラー分析結果を示します。

1. エラー種別分布
HTTP コード    エラー件数  比率    種別                 説明
404            81         -64%    リソースが見つかりません        -
500            19         -10%    サーバーエラー     -
503            3          -2%     サービス利用不可         -
206            1          -2%     部分コンテンツ       1,000 万リクエスト中のエッジケースとみなせます

2. 典型的なエラー事例分析

事例 1:404 Not Found — リソースファイルパスが存在しない
- TraceId:b1b97380c855083a23ec76ace14e53be
- SpanName: GET
- リクエストパス: http://dbaas-meta-api-myb-bank-cloud.ipa.internal.myb.rds.alibyncs.com/api/v1.0/clusterInstances/34631706 など
- エラー原因: ターゲットサーバー上にターゲットリソース ID 19 36317596 が存在しません。この TraceId 下のすべての関連スパンが 404 を示しており、サービスデプロイおよびルーティング構成の問題を確認できます
- 根拠リンク: /artifacts/sessions/c-b859bd2-3942-4d85-b636-51dae0d18ae/sql_results.json 22 行目

事例 2:503 サービス利用不可 — サービスが一時的に利用不可
- TraceId:b1b97380c855083a23ec76ace14e53be
- SpanName: GET / POST
- リクエストパス: http://dbaas-meta-api-myb-minirds.ipa.internal.myb.rds.alibyncs.com/api/v1.0/replicatSets/3083517606/myfd
- 根拠リンク: /artifacts/sessions/c-b859bd2-3942-4d85-b636-51dae0d18ae/sql_results.json 22 行目

事例 3:STS サービス呼び出しエラー
- SpanName: POST https://sts.cn-hangzhou.null/
- エラー種別: .null ドメイン、ドメイン解決エラーまたは DNS 解決失敗を示唆
- STS サービスのドメイン構成が不足している可能性あり
- 根拠リンク: /artifacts/sessions/c-b859bd2-3942-4d85-b636-51dae0d18ae/sql_results.json 10 行目

事例 4:基本的なエラー種別
...

会話管理

AI アシスタントは複数の会話を作成・管理できます。以下の操作が可能です。

  • 会話の作成:サービスページで上部の + ボタンをクリックし、会話名を入力して新しい会話を作成します。

  • 会話の削除:サービスページで上部の削除ボタンをクリックして、現在の会話を削除します。

  • 会話の名前変更:サービスページで上部の編集ボタンをクリックし、新しい名前を入力して Enter キーを押して確定します。

出力モードの切り替え

AI アシスタントは 2 種類の出力モードをサポートしています。チャットウィンドウのトグルボタンを使用して切り替えられます。

  • ストリーミング出力(デフォルト):リアルタイムで分析結果を逐次表示し、より迅速な応答を実現します。

  • 標準出力:分析が完了してから一度に完全な結果を表示します。

カスタムダッシュボード

このサービスでは、すぐに使用できるプリセットダッシュボードを提供しています。左側ナビゲーションウィンドウで PRESETS>Services をクリックして確認できます。また、関心のあるメトリックを集約して同じレポート内に表示するカスタムダッシュボードを作成することもできます。

  1. 左側ナビゲーションウィンドウで、Create Dashboard をクリックします。

  2. Add New Tile をクリックします。

  3. データソースとメトリックを設定してから、[保存] をクリックします。

    [データソース] を otel_logs に設定し、集計方法を [イベント数] に設定します。

サービス構成

サービスの有効化時に テーブルを自動作成する を選択した場合、対応するテーブルのサービス構成は自動的に設定されています。必要に応じて、他のテーブルをデータソースとして構成することもできます。

  1. 左側ナビゲーションウィンドウで、Team Settings をクリックします。

  2. Sources エリアでデータソースを構成します。データソースでは、ログ、メトリック、トレースデータのソースとなるテーブルおよびカラムマッピングを定義します。以下のデータ構成を参照してください。

    logs

    otel_logs データソースのソース設定は以下のとおりです。

    • Name: otel_logs

    • Source Data Type: Log

    • Server Connection: ClickHouse インスタンス ID(例:cc-bp1vxxx)

    • Database: clickobserve_service

    • Table: otel_logs

    • Timestamp Column: TimestampTime

    • Default Select: Timestamp, ServiceName as service, SeverityText as level, Body

    metrics

    otel_metrics データソースを HyperDX で以下の設定で構成します。

    • Name: otel_metrics

    • Source Data Type: OTEL Metrics

    • Server Connection: 対応する ClickHouse インスタンスを選択

    • Database: clickobserve_service

    • Gauge Table: otel_metrics_gauge

    • Histogram Table: otel_metrics_histogram

    • Sum Table: otel_metrics_sum

    • Summary Table: otel_metrics_summary

    • Exponential Histogram Table: otel_metrics_exponential_histogram

    • Correlated Log Source: otel_logs

    構成後、Save Source をクリックして保存します。

    traces

    ソース設定ページで、otel_traces トレーシングデータソースを以下のフィールドで構成します。

    • Name: otel_traces

    • Source Data Type: Trace

    • Server Connection: 対応する ClickHouse インスタンス ID

    • Database: clickobserve_service

    • Table: otel_traces

    • Timestamp Column: Timestamp

    • Default Select: Timestamp, ServiceName as service, StatusCode as level, round(Duration / 1e6...)

    • Duration Expression: Duration、精度はナノ秒に設定

    • Trace Id Expression: TraceId

    • Span Id Expression: SpanId

    • Parent Span Id Expression: ParentSpanId

    • Span Name Expression: SpanName

    • Span Kind Expression: SpanKind

    • Correlated Log Source: otel_logs

    • Correlated Metric Source: otel_metrics

    • Status Code Expression: StatusCode

    • Status Message Expression: StatusMessage

    • Service Name Expression: ServiceName

    • Resource Attributes Expression: ResourceAttributes

    • Event Attributes Expression: SpanAttributes

    • Span Events Expression: Events

    • Implicit Column Expression: SpanName

  3. Connections エリアで接続設定を構成します。これは、可観測性サービスと ApsaraDB for ClickHouse インスタンス間の接続を設定するものです。現在のインスタンスへのデフォルトの接続構成が作成されます。Host は ApsaraDB for ClickHouse インスタンスのエンドポイントを示します。VPC アドレスのみがサポートされます。インスタンスエンドポイントのエンドポイントアドレスをインスタンスコンソールで変更した場合は、再度構成し直す必要があります。

  4. ClickHouse Client Settings エリアで、可観測性サービスが ApsaraDB for ClickHouse インスタンス上で使用するクエリパラメーターを設定します。

ユーザー設定

左側ナビゲーションウィンドウの下部でユーザー名をクリックし、ユーザー設定 を選択してユーザー設定を行います。

関連ドキュメント