Todos los productos
Search
Centro de documentos

ApsaraDB for ClickHouse:ClickStack

Última actualización: Sep 05, 2026

El servicio ClickStack de ApsaraDB for ClickHouse es una solución de observability de alto rendimiento basada en ClickHouse y OpenTelemetry. Integra de forma nativa Logs, Traces y Metrics para ofrecer una experiencia unificada de observability, lo que permite a desarrolladores e ingenieros de operaciones rastrear y resolver problemas de extremo a extremo sin cambiar entre distintas herramientas. Además, el servicio ClickStack incluye un asistente inteligente de IA integrado para el análisis de datos de observability. Este asistente puede consultar automáticamente datos OTel (Traces/Logs/Metrics) y, mediante consultas SQL y procesos estructurados de RCA, completar de forma automática la resolución de problemas y el análisis de causa raíz. Este tema describe cómo utilizar el servicio ClickStack.

Requisitos previos

Una ApsaraDB for ClickHouse cluster has been created.

  • ApsaraDB for ClickHouse admite la activación de ClickStack con un solo clic.

  • ClickStack para ApsaraDB for ClickHouse Community-compatible Edition se encuentra actualmente en fase de vista previa por invitación. Para habilitar esta función, envíe un ticket para ponerse en contacto con el soporte técnico.

Habilitar el servicio

  1. Inicie sesión en la consola de ApsaraDB for ClickHouse. En la esquina superior izquierda, seleccione la región donde reside el clúster.

  2. En la página Clusters, seleccione la lista de instancias de la versión correspondiente y haga clic en el ID del clúster objetivo.

  3. En el panel de navegación izquierdo, haga clic en ClickStack.

  4. En el cuadro de diálogo, se recomienda seleccionar Automatically Create Table y Import Sample Data. Decida si desea habilitar el acceso a Internet para LLM según sus necesidades y, a continuación, haga clic en OK. La habilitación del servicio tarda aproximadamente entre 5 y 10 minutos.

    Importante
    • Seleccionar la opción de acceso a Internet para LLM genera costos adicionales. Habilítela según sus necesidades.

    • Puede habilitar el acceso a Internet para LLM por separado después de activar el servicio.

    Parámetro

    Descripción

    Creación automática de tablas

    • Crea la base de datos clickobserve_service y genera en ella las siguientes tablas: 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.

      Haga clic para ver las estructuras de las tablas

      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;

      Vista materializada 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;
          

    Importar datos de ejemplo

    Importa datos de ejemplo compatibles con el protocolo OpenTelemetry a las tablas de logs, traces y métricas. El volumen de datos es inferior a 200 MB antes de la compresión.

    Acceso a Internet para LLM

    Los servicios LLM solo son accesibles a través de Internet. Por lo tanto, para utilizar el asistente inteligente de IA para datos de observability, debe habilitar el acceso a Internet en los nodos del servicio ClickStack. Al seleccionar esta opción, el sistema crea automáticamente una puerta de enlace NAT de Internet, una dirección IP elástica (EIP) y una regla SNAT en la cuenta actual, utilizando la VPC a la que pertenece la instancia. Esta puerta de enlace permite que los nodos de ClickStack accedan a los servicios LLM a través de Internet.

    • Las puertas de enlace NAT de Internet y las EIP se facturan de forma independiente. Para consultar las reglas de facturación de puertas de enlace NAT, véase NAT Gateway billing. Para las reglas de facturación de EIP, véase Billing. Tanto las instancias de puerta de enlace NAT como las de EIP utilizan el modelo pay-as-you-go (pospago). El ancho de banda predeterminado de la EIP es de 5 Mbps.

    • Si ya existe una instancia de puerta de enlace NAT en la VPC actual, el sistema no crea una nueva. En su lugar, solo genera una nueva instancia de EIP y configura una regla SNAT.

  5. Una vez habilitado el servicio, si su dirección IP local no figura en la lista blanca de la instancia, el sistema le solicitará agregarla automáticamente.

Habilitar el acceso a Internet para LLM

Si no seleccionó el acceso a Internet para LLM al habilitar el servicio ClickStack, el asistente inteligente de IA para datos de observability no funcionará correctamente. Puede habilitar esta capacidad después de activar el servicio mediante cualquiera de los siguientes métodos.

Habilitación con un clic en la consola de ClickHouse

  1. Inicie sesión en la consola de ApsaraDB for ClickHouse. En la esquina superior izquierda, seleccione la región donde reside el clúster.

  2. En la página Clusters, seleccione la lista de instancias de la versión correspondiente y haga clic en el ID del clúster objetivo.

  3. En el panel de navegación izquierdo, haga clic en ClickStack.

  4. En la barra de aviso de acceso a Internet, haga clic en Enable Internet Access to LLM.

    El servicio ClickStack entrará en estado de habilitación de acceso a Internet. Este proceso tarda aproximadamente entre 1 y 2 minutos. Durante este tiempo, el servicio ClickStack no estará accesible y se reanudará una vez finalizado el proceso.

Al finalizar el proceso, podrá consultar en la página de ClickStack el ID de la instancia NAT de Internet creada automáticamente, el ID de la instancia EIP y la dirección IP pública de la EIP.

Configuración manual

Si requiere configuraciones de red más flexibles, puede crear manualmente una EIP y una puerta de enlace NAT.

Paso 1: Crear una dirección IP elástica (EIP)

  1. Inicie sesión en la consola de Elastic IP Addresses.

  2. Seleccione la misma región que el clúster de ClickHouse y cree una instancia de Elastic IP address.

Paso 2: Crear una puerta de enlace NAT de Internet y vincular la EIP

  1. Vaya a la página de compra de NAT Gateway - Internet NAT Gateway.

  2. Si no existe ninguna instancia de puerta de enlace NAT de Internet en la VPC a la que pertenece el clúster de ClickHouse, haga clic en Create Internet NAT Gateway. Seleccione la misma región y VPC que el clúster de ClickHouse, y elija la instancia de EIP creada en el Paso 1 para vincularla.

  3. Si ya existe una instancia de puerta de enlace NAT de Internet en la VPC del clúster de ClickHouse, en la página de lista de instancias de la consola de Internet NAT Gateway, haga clic en More > Bind Elastic IP Address. Seleccione la EIP creada en el Paso 1 para vincularla.

Paso 3: Crear una entrada SNAT

  1. Vaya a la página de Internet NAT Gateway y acceda a la página de detalles de la instancia de puerta de enlace NAT objetivo.

  2. Haga clic en la pestaña SNAT Management y, a continuación, en Create SNAT Entry.

  3. Para la granularidad de la entrada SNAT, seleccione ECS/ENI Granularity.

  4. En la opción ECS/ENI, seleccione la ENI secundaria denominada rds-eni-<ClickHouse instance ID>-webui.

  5. Seleccione la EIP creada en el Paso 1 como dirección IP elástica.

  6. Haga clic en OK y espere a que se cree la entrada SNAT.

Liberación de recursos de acceso a red pública

Importante

Por motivos de seguridad empresarial, cuando se libera una instancia de ClickHouse, las instancias de puerta de enlace NAT y EIP creadas para el acceso a red pública no se eliminan automáticamente. Después de liberar la instancia, debe eliminar manualmente estos recursos en sus respectivas consolas.

Liberación de recursos:

  • Para recursos de red pública habilitados con un clic

    Los recursos de puerta de enlace NAT y EIP creados automáticamente por el servicio ClickStack pueden filtrarse y eliminarse mediante la etiqueta createdby:<instance ID>.

  • Para recursos de red pública creados manualmente

    Debe determinar si desea eliminarlos según el uso que haga de ellos en su entorno empresarial.

Uso

Página principal

  1. En el panel de navegación izquierdo de la página de detalles de la instancia, haga clic en ClickStack. Siga las instrucciones en la parte superior de la página para ir a la página principal del servicio.

  2. Introduzca el nombre de usuario y la contraseña para iniciar sesión en la página principal. Para crear una cuenta de base de datos, consulte Manage database accounts for Enterprise Edition o Manage database accounts for Community-compatible Edition.

  3. Después de iniciar sesión, se le redirigirá a la página principal (página de búsqueda). En la parte superior de la página, puede seleccionar el origen de datos, establecer el rango de tiempo y especificar condiciones de filtro para consultar datos.

    image

    • En el área Filters, tras seleccionar las condiciones de filtro, se filtran automáticamente los registros que cumplen dichos criterios.

    • Haga clic en image para consultar la información del registro correspondiente en la página actual.

    • Haga clic en la fila donde se encuentra un registro para ver su información detallada, incluidos los atributos completos, la duración del trace asociado y el contexto del registro.

Asistente inteligente de IA para datos de observability

El asistente inteligente de IA para datos de observability facilita el análisis de las tablas de datos OTEL. Identifica automáticamente la información de bases de datos y tablas relacionada con los datos de observability OTEL en la instancia, construye consultas basadas en requisitos empresariales para recuperar dichos datos y, posteriormente, analiza y devuelve resultados de diagnóstico de forma automática. Los principales escenarios de aplicación incluyen análisis de tendencias empresariales, análisis de volumen de datos y diagnóstico de causa raíz (RCA).

Requisitos previos

Se ha habilitado el acceso a Internet para LLM.

Uso

  1. En la página principal de ClickStack, haga clic en el botón AI NoteBook del panel de navegación izquierdo.

  2. En la ventana de chat del asistente de IA, introduzca la pregunta que desea analizar. El asistente consultará automáticamente los datos de observability y devolverá los resultados del análisis.

Escenarios comunes

(1) Identificar tasas de error en registros empresariales

Consultas de ejemplo:

  • Analizar si mi programa OpenClaw presentó anomalías en la última hora

  • Analizar qué componentes en mis datos de traces de gestión tuvieron mayores tasas de error en los últimos 10 minutos

Resultados del diagnóstico

Conclusion
Based on sampling analysis of the clickobserve_service.otel_traces table from 2026-05-06 19:50:00 to 2026-05-06 20:00:00:

Error Rate Statistics
- The overall error rate is approximately  0.32% (based on sampling data from 7 time windows of 0.5 seconds each, totaling 248,077 spans)
- Total error spans: 917
- Normal spans (OK + UNSET): 207,150

StatusCode Distribution
StatusCode    Count       Ratio     Remarks
UNSET         139,911     74.7%     -
OK            66,247      23.08%    -
ERROR         919         0.32%     -

Evidence
- View artifacts from /artifacts/sessions/c-b859bd2-3942-4d85-b636-51dae0d18ae/sql_results.json

Limitations
- Sampling bias: Due to the ClickHouse max_rows_to_read limit (200,000 rows), not all data within the 10-minute window can be covered, and the actual sample may be biased
- Time window representativeness: Sampling points are distributed between 19:50~20:00, and intervals with large data volumes may be missed
- Margin of error: The actual error rate may fluctuate between 0.2% and 0.5%

Next Steps (for more precise analysis)
- For precise error rates, you may need to adjust the sampling ratio and quantity
- If interested in anomalies, you can query the StatusMessage or Events fields for error details
- Drill down by SpanName or ServiceName to identify which services are contributing to the errors
(2) Diagnóstico de causa raíz

Consultas de ejemplo:

  • Analizar si los registros de mi componente de gestión tuvieron errores en la última hora y analizar las causas raíz

  • ¿Por qué falló una de mis solicitudes de puerta de enlace? requestId/traceId = ea7d2925-3422-4920-9ab1-b22dd3d85b2f. Analice la causa detallada.

Resultados del diagnóstico

Error Data Analysis Conclusion
Based on sampling analysis of the clickobserve_service.otel_traces table from 2026-05-06 19:50:00 to 20:00:00, the following are the error sampling data and error analysis results.

1. Error Type Distribution
HTTP Code    Error Count  Ratio    Type                 Description
404            81         -64%    Resource not found        -
500            19         -10%    Internal server error     -
503            3          -2%     Service unavailable         -
206            1          -2%     Partial content       Can be considered edge case in 10 million requests

2. Typical Error Case Analysis

Case 1: 404 Not Found — Resource file path does not exist
- TraceId:b1b97380c855083a23ec76ace14e53be
- SpanName: GET
- Request path: http://dbaas-meta-api-myb-bank-cloud.ipa.internal.myb.rds.alibyncs.com/api/v1.0/clusterInstances/34631706 etc.
- Error cause: Target resource ID 19 36317596 does not exist on the target server. All associated spans under this TraceId show 404, confirming service deployment and routing configuration issues
- Evidence link: /artifacts/sessions/c-b859bd2-3942-4d85-b636-51dae0d18ae/sql_results.json line 22

Case 2: 503 Service Unavailable — Service temporarily unavailable
- TraceId:b1b97380c855083a23ec76ace14e53be
- SpanName: GET / POST
- Request path: http://dbaas-meta-api-myb-minirds.ipa.internal.myb.rds.alibyncs.com/api/v1.0/replicatSets/3083517606/myfd
- Evidence link: /artifacts/sessions/c-b859bd2-3942-4d85-b636-51dae0d18ae/sql_results.json line 22

Case 3: STS Service Call Error
- SpanName: POST https://sts.cn-hangzhou.null/
- Error type: .null domain, indicating domain resolution error or DNS resolution failure
- STS service may be missing domain configuration
- Evidence link: /artifacts/sessions/c-b859bd2-3942-4d85-b636-51dae0d18ae/sql_results.json line 10

Case 4: Basic Error Type
...

Gestión de sesiones

El asistente de IA admite la creación y gestión de múltiples sesiones. Puede realizar las siguientes operaciones:

  • Crear una sesión: En la página del servicio, haga clic en el botón + en la parte superior e introduzca el nombre de la sesión para crear una nueva.

  • Eliminar una sesión: En la página del servicio, haga clic en el botón de eliminación en la parte superior para borrar la sesión actual.

  • Renombrar una sesión: En la página del servicio, haga clic en el botón de edición en la parte superior, introduzca un nuevo nombre y presione Enter para confirmar.

Cambiar el modo de salida

El asistente de IA admite dos modos de salida. Puede alternar entre ellos mediante el botón de cambio en la ventana de chat:

  • Salida streaming (predeterminado): Muestra los resultados del análisis de forma incremental y en tiempo real para una respuesta más rápida.

  • Salida estándar: Espera a que finalice el análisis antes de mostrar todos los resultados de una sola vez.

Panel personalizado

El servicio proporciona paneles predefinidos listos para usar. Puede hacer clic en PRESETS>Services en el panel de navegación izquierdo para consultarlos. También puede crear paneles personalizados para agregar métricas de interés y mostrarlas en un mismo informe.

  1. En el panel de navegación izquierdo, haga clic en Create Dashboard.

  2. Haga clic en Add New Tile.

  3. Configure el origen de datos y las métricas, y luego haga clic en Save.

    Establezca Data Source en otel_logs y defina el método de agregación como Count of Events.

Configuración del servicio

Si seleccionó Automatically Create Table al habilitar el servicio, la configuración correspondiente a las tablas se estableció automáticamente. También puede configurar otras tablas como orígenes de datos según sus necesidades.

  1. En el panel de navegación izquierdo, haga clic en Team Settings.

  2. En el área Sources, configure los orígenes de datos para definir de qué tablas provienen los registros, las métricas y los traces, así como la asignación de columnas. Consulte la siguiente configuración de datos:

    logs

    La configuración de origen de datos (Source Settings) de otel_logs es la siguiente:

    • Name: otel_logs

    • Source Data Type: Log

    • Server Connection: ID de la instancia de ClickHouse (por ejemplo, cc-bp1vxxx)

    • Database: clickobserve_service

    • Table: otel_logs

    • Timestamp Column: TimestampTime

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

    metrics

    Configure el origen de datos otel_metrics en HyperDX con los siguientes parámetros:

    • Name: otel_metrics

    • Source Data Type: OTEL Metrics

    • Server Connection: Seleccione la instancia de ClickHouse correspondiente

    • 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

    Después de configurar, haga clic en Save Source para guardar.

    traces

    En la página Source Settings, configure el origen de datos de trazas otel_traces con los siguientes campos:

    • Name: otel_traces

    • Source Data Type: Trace

    • Server Connection: ID de la instancia de ClickHouse correspondiente

    • Database: clickobserve_service

    • Table: otel_traces

    • Timestamp Column: Timestamp

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

    • Duration Expression: Duration, precisión establecida en Nanosecond

    • 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. En el área Connections, configure los parámetros de conexión entre el servicio de observability y la instancia de ApsaraDB for ClickHouse. Se crea una configuración de conexión predeterminada a la instancia actual. Host indica el endpoint de la instancia de ApsaraDB for ClickHouse. Solo se admiten direcciones VPC. Si modifica la dirección del endpoint en la consola de la instancia después de haberlo configurado, deberá volver a establecerlo.

  4. En el área ClickHouse Client Settings, configure los parámetros de consulta del servicio de observability en la instancia de ApsaraDB for ClickHouse.

Preferencias de usuario

En la parte inferior del panel de navegación izquierdo, haga clic en su nombre de usuario y luego seleccione User Preferences para establecer las preferencias de usuario.

Documentos relacionados