Todos os produtos
Search
Central de documentação

ApsaraDB for ClickHouse:Unified Observability

Última atualização: Jul 29, 2026

O service de Unified Observability do ApsaraDB for ClickHouse é uma solução de observabilidade de alto desempenho desenvolvida sobre o ClickHouse e o OpenTelemetry. Ele integra Logs, Traces e Metrics para oferecer uma experiência unificada de observabilidade, permitindo que desenvolvedores e engenheiros de operações rastreiem e resolvam problemas de ponta a ponta sem alternar entre diferentes ferramentas. Além disso, o service de Unified Observability inclui um assistente inteligente de IA integrado para análise de dados de observabilidade. Esse recurso consulta automaticamente dados OTel (Traces/Logs/Metrics) e, por meio de consultas SQL e processos estruturados de RCA, conclui automaticamente a solução de problemas e a análise de causa raiz. Este tópico descreve como utilizar o service de Unified Observability.

Pré-requisitos

Um cluster do ApsaraDB for ClickHouse foi criado.

  • O ApsaraDB for ClickHouse oferece suporte à ativação do Unified Observability com um clique em.

  • O Unified Observability da edição compatível com a comunidade do ApsaraDB for ClickHouse está atualmente em fase de preview mediante convite. Para ative esse recurso, envie um ticket para entrar em contato com o suporte técnico.

Ative o service

  1. Faça logon no console do ApsaraDB for ClickHouse. No canto superior esquerdo, selecione a região onde o cluster está localizado.

  2. Na página Clusters, selecione a lista de instâncias da versão correspondente e clique em no ID do cluster desejado.

  3. No painel de navegação à esquerda, clique em All-in-one Observe Suite.

  4. Na caixa de diálogo, recomendamos selecione Automatically Create Table e Import Sample Data. Decida se deseja ative o acesso à internet para LLM conforme sua necessidade e, em seguida, clique em OK. A ativação do service leva aproximadamente de 5 a 10 minutos.

    Importante
    • A seleção da opção de acesso à internet para LLM gera custos adicionais. Ative-a conforme sua necessidade.

    • É possível ative o acesso à internet para LLM separadamente após a ativação do service.

    Parâmetro

    Descrição

    Criação automática de tabelas

    • Crie o banco de dados clickobserve_service e as seguintes tabelas dentro dele: 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.

      Clique em para visualize as estruturas das tabelas

      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;

      Materialized view 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 dados de amostra

    Importa dados de amostra compatíveis com o protocolo OpenTelemetry para as tabelas de logs, traces e métricas. O volume de dados é inferior a 200 MB antes da compressão.

    Acesso à internet para LLM

    Os services de LLM só podem ser acessados pela internet. Portanto, para usar o assistente inteligente de IA para dados de observabilidade, é necessário ative o acesso à internet nos nós do service de Unified Observability. Ao selecione esta opção, o sistema crie automaticamente um gateway NAT de internet, um Elastic IP Address (EIP) e uma regra SNAT na conta atual, utilizando a VPC à qual a instância pertence. O gateway permite que os nós do Unified Observability acesse os services de LLM pela internet.

    • Gateways NAT de internet e EIPs são faturados independentemente. Para regras de faturamento de gateway NAT, consulte NAT Gateway billing. Para regras de faturamento de EIP, consulte Billing. Tanto as instâncias de gateway NAT quanto as de EIP utilizam o modelo de pagamento conforme o uso (pós-pago). A largura de banda padrão do EIP é de 5 Mbps.

    • Caso já exista uma instância de gateway NAT na VPC atual, o sistema não crie um novo gateway NAT. Em vez disso, apenas uma nova instância de EIP será criada e uma regra SNAT configurada.

  5. Após a ativação do service, caso seu endereço IP local não esteja na lista de permissões da instância, o sistema solicitará que você o adicione automaticamente.

Ative acesso à internet para LLM

Se você não selecione o acesso à internet para LLM ao ative o service de Unified Observability, o assistente inteligente de IA para dados de observabilidade não funcionará corretamente. É possível ative essa capacidade após a ativação do service utilizando um dos métodos abaixo.

Ativação com um clique em no console do ClickHouse

  1. Faça logon no console do ApsaraDB for ClickHouse. No canto superior esquerdo, selecione a região onde o cluster está localizado.

  2. Na página Clusters, selecione a lista de instâncias da versão correspondente e clique em no ID do cluster desejado.

  3. No painel de navegação à esquerda, clique em All-in-one Observe Suite.

  4. Na barra de aviso de acesso à internet, clique em Enable Internet Access to LLM.

    O service de Unified Observability entrará em status de ativação de acesso à internet. Esse processo leva aproximadamente de 1 a 2 minutos. Durante esse período, o service de Unified Observability ficará inacessível. O service será retomado após a conclusão do processo.

Após a conclusão do processo, você poderá visualize o ID da instância NAT de internet criada automaticamente, o ID da instância EIP e o endereço IP público do EIP na página do Unified Observability.

Configuração manual

Para configurações de rede mais flexíveis, crie manualmente um EIP e um gateway NAT.

Etapa 1: Crie um Elastic IP Address (EIP)

  1. Faça logon no console de Elastic IP Addresses.

  2. Selecione a mesma região do cluster ClickHouse e crie uma instância Elastic IP Addresses.

Etapa 2: Crie um gateway NAT de internet e vincular o EIP

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

  2. Caso não exista nenhuma instância de gateway NAT de internet na VPC do cluster ClickHouse, clique em Create Internet NAT Gateway. Selecione a mesma região e VPC do cluster ClickHouse e escolha a instância EIP criada na Etapa 1 para vinculá-la.

  3. Se já existir uma instância de gateway NAT de internet na VPC do cluster ClickHouse, na página de lista de instâncias do console de Gateway NAT de Internet, clique em More > Bind Elastic IP Address. Selecione o EIP criado na Etapa 1 para vinculá-lo.

Etapa 3: Crie uma entrada SNAT

  1. Acesse a página de Gateway NAT de Internet. Navegue até a página de detalhes da instância de gateway NAT desejada.

  2. Clique em na aba SNAT Management e, em seguida, clique em Create SNAT Entry.

  3. Para a granularidade da entrada SNAT, selecione ECS/ENI Granularity.

  4. Na opção ECS/ENI, selecione a ENI secundária chamada rds-eni-<ClickHouse instance ID>-webui.

  5. Selecione o EIP criado na Etapa 1 como Elastic IP Address.

  6. Clique em OK. Aguarde a criação da entrada SNAT.

Liberação de recursos de acesso à rede pública

Importante

Por motivos de segurança empresarial, quando uma instância ClickHouse é liberada, as instâncias de gateway NAT e EIP criadas para acesso à rede pública não são excluídas automaticamente. Após liberar a instância, libere manualmente esses recursos nos respectivos consoles.

Liberação de recursos:

  • Para recursos de rede pública ativados com um clique em

    Os recursos de gateway NAT e EIP criados automaticamente pelo service de Unified Observability podem ser filtrados e exclua usando a tag createdby:<instance ID>.

  • Para recursos de rede pública criados manualmente

    Avalie a necessidade de exclusão com base no uso do seu negócio.

Uso

Página principal

  1. No painel de navegação à esquerda da página de detalhes da instância, clique em All-in-one Observe Suite. Siga o aviso na parte superior da página para acesse a página principal do service.

  2. Insira o nome de usuário e a senha para fazer logon na página principal. Para crie uma conta de banco de dados, consulte Manage database accounts for Enterprise Edition ou Manage database accounts for Community-compatible Edition.

  3. Após o logon, você será direcionado à página principal (página de pesquisa). Na parte superior da página, selecione a source de dados, defina o intervalo de tempo e especifique condições de filtro para consultar dados.

    image

    • Na área Filters, após selecione as condições de filtro, os logs correspondentes são filtrados automaticamente.

    • Clique em image para visualize as informações do log correspondente na página atual.

    • Clique em na linha onde um log está localizado para ver suas informações detalhadas, incluindo atributos completos, informações de duração do trace associado e contexto do log.

Assistente inteligente de IA para dados de observabilidade

O assistente inteligente de IA para dados de observabilidade auxilia na análise de dados das tabelas de observabilidade OTEL. Ele identifica automaticamente as informações de banco de dados e tabelas relacionadas aos dados OTEL na instância, constrói automaticamente instruções de consulta com base nos requisitos de negócio para recuperar dados de observabilidade e, em seguida, analisa e retorna resultados de diagnóstico automaticamente. Os principais cenários de aplicação incluem análise de tendências de negócios, análise de volume de dados e diagnóstico de causa raiz (RCA).

Pré-requisitos

O acesso à internet para LLM deve estar ativado.

Uso

  1. Na página principal do Unified Observability, clique em no botão AI NoteBook no painel de navegação à esquerda.

  2. Na janela de chat do assistente de IA, insira a pergunta que deseja analisar. O assistente de IA consultará automaticamente os dados de observabilidade e retornará os resultados da análise.

Cenários comuns

(1) Identificar taxas de erro em logs de negócios

Exemplos de consultas:

  • Analise se meu programa OpenClaw apresentou anomalias na última hora

  • Analise quais componentes nos meus dados de trace de gerenciamento tiveram taxas de erro mais altas nos últimos 10 minutos

Resultados do 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 raiz

Exemplos de consultas:

  • Analise se os logs do meu componente de gerenciamento tiveram erros na última hora e analise as causas raízes

  • Por que uma das minhas solicitações de gateway falhou? requestId/traceId = ea7d2925-3422-4920-9ab1-b22dd3d85b2f. Analise a causa detalhada.

Resultados do 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
...

Gerenciamento de sessões

O assistente de IA suporta a criação e o gerenciamento de múltiplas sessões. Você pode realizar as seguintes operações:

  • Crie uma sessão: Na página do service, clique em no botão + na parte superior e insira o nome da sessão para crie uma nova.

  • Exclua uma sessão: Na página do service, clique em no botão de exclusão na parte superior para remover a sessão atual.

  • Renomear uma sessão: Na página do service, clique em no botão de edição na parte superior, insira um novo nome e pressione Enter para confirme.

Alternar modo de saída

O assistente de IA suporta dois modos de saída. Alterne entre eles usando o botão na janela de chat:

  • Saída em streaming (padrão): Exibe os resultados da análise incrementalmente em tempo real para uma resposta mais rápida.

  • Saída padrão: Aguarda a conclusão da análise antes de exibir todos os resultados de uma vez.

Dashboard personalizado

O service fornece dashboards predefinidos para uso imediato. Clique em PRESETS>Services no painel de navegação à esquerda para visualize-os. Também é possível crie dashboards personalizados para agregar métricas de interesse e exibi-las no mesmo relatório.

  1. No painel de navegação à esquerda, clique em Create Dashboard.

  2. Clique em Add New Tile.

  3. Defina a source de dados e as métricas e, em seguida, clique em Save.

    Defina Data Source como otel_logs e configure o método de agregação como Count of Events.

Configuração do service

Se você selecione Automatically Create Table ao ative o service, as configurações para as tabelas correspondentes foram definidas automaticamente. Configure outras tabelas como sources de dados conforme sua necessidade.

  1. No painel de navegação à esquerda, clique em Team Settings.

  2. Na área Sources, configure as sources de dados, que definem de quais tabelas provêm os dados de logs, métricas e traces, bem como o mapeamento de colunas. Consulte a seguinte configuração de dados:

    logs

    As configurações de Source Settings da source de dados otel_logs são definidas da seguinte forma:

    • Name: otel_logs

    • Source Data Type: Log

    • Server Connection: ID da instância ClickHouse (ex.: cc-bp1vxxx)

    • Database: clickobserve_service

    • Table: otel_logs

    • Timestamp Column: TimestampTime

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

    metrics

    Configure a source de dados otel_metrics no HyperDX com as seguintes definições:

    • Name: otel_metrics

    • Source Data Type: OTEL Metrics

    • Server Connection: Selecione a instância ClickHouse correspondente

    • 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

    • Após a configuração, clique em Save Source para salve.

      traces

      Na página Source Settings, configure a source de dados de rastreamento otel_traces com os seguintes campos:

      • Name: otel_traces

      • Source Data Type: Trace

      • Server Connection: ID da instância ClickHouse correspondente

      • Database: clickobserve_service

      • Table: otel_traces

      • Timestamp Column: Timestamp

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

      • Duration Expression: Duration, precisão definida como 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

    • Na área Connections, configure as definições de conexão entre o service de observabilidade e a instância do ApsaraDB for ClickHouse. Uma configuração de conexão padrão para a instância atual é criada automaticamente. Host indica o endpoint da instância do ApsaraDB for ClickHouse. Apenas endereços VPC são suportados. Caso modifique o endereço do endpoint no console da instância após configurar o endpoint, reconfigure-o.

    • Na área ClickHouse Client Settings, configure os parâmetros de consulta do service de observabilidade na instância do ApsaraDB for ClickHouse.

    • Preferências do usuário

      Na parte inferior do painel de navegação à esquerda, clique em no seu nome de usuário e selecione User Preferences para defina as preferências do usuário.

      Documentos relacionados