Tous les produits
Search
Centre de documentation

ApsaraDB for ClickHouse:Unified Observability

Dernière mise à jour :Aug 11, 2026

Le service Unified Observability d'ApsaraDB for ClickHouse est une solution d'observabilité haute performance basée sur ClickHouse et OpenTelemetry. Il intègre de manière transparente les journaux (Logs), les traces (Traces) et les métriques (Metrics) pour offrir une expérience d'observabilité unifiée, permettant aux développeurs et aux ingénieurs DevOps de suivre et de résoudre les problèmes de bout en bout sans changer d'outil. De plus, le service Unified Observability inclut un assistant IA intelligent intégré pour l'analyse des données d'observabilité. Il peut interroger automatiquement les données d'observabilité OTel (Traces/Logs/Metrics) et, grâce à des requêtes SQL et à des processus structurés d'analyse des causes racines (RCA), effectuer automatiquement le dépannage et l'analyse des causes racines. Cette rubrique décrit comment utiliser le service Unified Observability.

Prérequis

Un cluster ApsaraDB for ClickHouse a été créé.

  • ApsaraDB for ClickHouse prend en charge l'activation en un clic de Unified Observability.

  • La version compatible avec la communauté d'ApsaraDB for ClickHouse pour Unified Observability est actuellement en phase de prévisualisation sur invitation. Pour activer cette fonctionnalité, soumettez un ticket pour contacter le support technique.

Activer le service

  1. Connectez-vous à la console ApsaraDB for ClickHouse. Dans le coin supérieur gauche, sélectionnez la région où réside le cluster.

  2. Dans la page Clusters, sélectionnez la liste des instances de la version correspondante et cliquez sur l'ID du cluster cible.

  3. Dans le volet de navigation de gauche, cliquez sur All-in-one Observe Suite.

  4. Dans la boîte de dialogue, nous vous recommandons de sélectionner Automatically Create Table et Import Sample Data, de décider s'il convient d'activer l'accès Internet au LLM selon vos besoins, puis de cliquez sur OK. L'activation du service prend environ 5 à 10 minutes.

    Important
    • La sélection de l'option d'accès Internet au LLM entraîne des frais supplémentaires. Activez-la selon vos besoins.

    • Vous pouvez activer l'accès Internet au LLM séparément après l'activation du service.

    Paramètre

    Description

    Création automatique des tables

    • Crée la base de données clickobserve_service, et crée les tables suivantes dans cette base de données : 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.

      Cliquez pour afficher les structures des tables

      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;

      Vue matérialisée 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;
      

    Importer des exemples de données

    Importe des exemples de données conformes au protocole OpenTelemetry dans les tables de journaux, de traces et de métriques. Les données représentent moins de 200 Mo avant compression.

    Accès Internet au LLM

    Les services LLM ne sont accessibles que via Internet. Par conséquent, pour utiliser l'assistant IA intelligent pour les données d'observabilité, vous devez activer l'accès Internet pour les nœuds du service Unified Observability. Après avoir sélectionné cette option, le système crée automatiquement une passerelle NAT Internet, une adresse IP élastique (EIP) et une règle SNAT sous le compte actuel en utilisant le VPC auquel l'instance actuelle appartient. La passerelle permet aux nœuds Unified Observability d'accéder aux services LLM via Internet.

    • Les passerelles NAT Internet et les EIP sont facturées indépendamment. Pour les règles de facturation des passerelles NAT, reportez-vous à Facturation de la passerelle NAT. Pour les règles de facturation des EIP, reportez-vous à Facturation. Les instances de passerelle NAT et d'EIP sont toutes deux en paiement à l'utilisation (postpayé). La bande passante EIP par défaut est de 5 Mbps.

    • Si une instance de passerelle NAT existe déjà dans le VPC actuel, le système ne crée pas de nouvelle passerelle NAT. Il crée uniquement une nouvelle instance EIP et configure une règle SNAT.

  5. Une fois le service activé, si votre adresse IP locale ne figure pas dans la liste d'autorisation de l'instance, le système vous invite à l'ajouter automatiquement.

Activer l'accès Internet au LLM

Si vous n'avez pas sélectionné l'accès Internet au LLM lors de l'activation du service Unified Observability, l'assistant IA intelligent pour les données d'observabilité ne fonctionnera pas correctement. Vous pouvez activer cette fonctionnalité après l'activation du service en utilisant l'une des méthodes suivantes.

Activation en un clic dans la console ClickHouse

  1. Connectez-vous à la console ApsaraDB for ClickHouse. Dans le coin supérieur gauche, sélectionnez la région où réside le cluster.

  2. Dans la page Clusters, sélectionnez la liste des instances de la version correspondante et cliquez sur l'ID du cluster cible.

  3. Dans le volet de navigation de gauche, cliquez sur All-in-one Observe Suite.

  4. Dans la barre d'invite d'accès Internet, cliquez sur Enable Internet Access to LLM.

    Le service Unified Observability passe en statut d'activation de l'accès Internet. Ce processus prend environ 1 à 2 minutes. Pendant ce processus, le service Unified Observability est inaccessible. Le service reprend après la fin du processus.

Une fois le processus terminé, vous pouvez consulter l'ID de l'instance NAT Internet créée automatiquement, l'ID de l'instance EIP et l'adresse IP publique de l'EIP sur la page Unified Observability.

Configuration manuelle

Si vous avez besoin de configurations réseau plus flexibles, vous pouvez créer manuellement une EIP et une passerelle NAT.

Étape 1 : Créer une adresse IP élastique (EIP)

  1. Connectez-vous à la console Elastic IP Addressesconsole Elastic IP Addresses.

  2. Sélectionnez la même région que le cluster ClickHouse et créez une instance d'adresse IP élastique.

Étape 2 : Créer une passerelle NAT Internet et lier l'EIP

  1. Accédez à la page d'achat de la passerelle NAT - Passerelle NAT Internet.

  2. Si aucune instance de passerelle NAT Internet n'existe dans le VPC auquel appartient le cluster ClickHouse, cliquez sur Create Internet NAT Gateway. Sélectionnez la même région et le même VPC que le cluster ClickHouse, et sélectionnez l'instance EIP créée à l'étape 1 pour lier l'EIP.

  3. Si une instance de passerelle NAT Internet existe déjà dans le VPC auquel appartient le cluster ClickHouse, sur la page de liste des instances de la console Passerelle NAT Internet, cliquez sur More > Bind Elastic IP Address. Sélectionnez l'EIP créée à l'étape 1 pour lier l'EIP.

Étape 3 : Créer une entrée SNAT

  1. Accédez à la page Passerelle NAT Internet. Accédez à la page de détails de l'instance de passerelle NAT cible.

  2. Cliquez sur l'onglet SNAT Management, puis cliquez sur Create SNAT Entry.

  3. Pour la granularité de l'entrée SNAT, sélectionnez ECS/ENI Granularity.

  4. Dans l'option ECS/ENI, sélectionnez l'ENI secondaire nommé rds-eni-<ClickHouse instance ID>-webui.

  5. Sélectionnez l'EIP créée à l'étape 1 comme adresse IP élastique.

  6. Cliquez sur OK. Attendez que l'entrée SNAT soit créée.

Libération des ressources d'accès au réseau public

Important

Pour des raisons de sécurité commerciale, lorsqu'une instance ClickHouse est libérée, les instances de passerelle NAT et d'EIP créées pour l'accès au réseau public ne seront pas automatiquement supprimées. Après avoir libéré l'instance, vous devez libérer manuellement ces ressources dans les consoles respectives.

Libération des ressources :

  • Pour les ressources de réseau public activées en un clic

    Les ressources de passerelle NAT et d'EIP créées automatiquement par le service Unified Observability peuvent être filtrées et supprimées en utilisant le tag createdby:<instance ID>.

  • Pour les ressources de réseau public créées manuellement

    Vous devez déterminer s'il convient de les supprimer en fonction de votre utilisation commerciale.

Utilisation

Page principale

  1. Dans le volet de navigation de gauche de la page de détails de l'instance, cliquez sur All-in-one Observe Suite. Suivez l'invite en haut de la page pour accéder à la page principale du service.

  2. Saisissez le nom d'utilisateur et le mot de passe pour vous connecter à la page principale. Pour créer un compte de base de données, reportez-vous à Gérer les comptes de base de données pour l'édition Enterprise ou à Gérer les comptes de base de données pour l'édition compatible avec la communauté.

  3. Après vous être connecté, vous êtes dirigé vers la page principale (page de recherche). Vous pouvez sélectionner la source de données, définir la plage de temps et spécifier les conditions de filtrage pour interroger les données en haut de la page.

    image

    • Dans la zone Filters, après avoir sélectionné les conditions de filtrage, les journaux qui répondent aux conditions sont automatiquement filtrés.

    • Cliquez sur image pour afficher les informations du journal correspondant sur la page actuelle.

    • Cliquez sur la ligne où se trouve un journal pour afficher ses informations détaillées, y compris les attributs complets, les informations de durée de la trace associée et les informations contextuelles du journal.

Assistant IA intelligent pour les données d'observabilité

L'assistant IA intelligent pour les données d'observabilité peut aider à l'analyse des données des tables d'observabilité OTEL. Il peut identifier automatiquement les informations de base de données et de table liées aux données d'observabilité OTEL dans l'instance, construire automatiquement des instructions de requête en fonction des besoins métier pour récupérer les données d'observabilité, puis analyser et renvoyer automatiquement les résultats de diagnostic. Les principaux scénarios d'application incluent l'analyse des tendances métier, l'analyse du volume de données et le diagnostic des causes racines (RCA).

Prérequis

L'accès Internet au LLM a été activé.

Utilisation

  1. Sur la page principale de Unified Observability, cliquez sur le bouton AI NoteBook dans le volet de navigation de gauche.

  2. Dans la fenêtre de chat de l'assistant IA, saisissez la question que vous souhaitez analyser. L'assistant IA interroge automatiquement les données d'observabilité et renvoie les résultats d'analyse.

Scénarios courants

(1) Identifier les taux d'erreur des journaux métier

Exemples de requêtes :

  • Analyser si mon programme OpenClaw a présenté des anomalies au cours de la dernière heure

  • Analyser quels composants de mes données de trace de gestion avaient des taux d'erreur plus élevés au cours des 10 dernières minutes

Résultats du diagnostic

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) Diagnostic des causes racines

Exemples de requêtes :

  • Analyser si les journaux de mon composant de gestion ont présenté des erreurs au cours de la dernière heure et analyser les causes racines

  • Pourquoi l'une de mes requêtes de passerelle a-t-elle échoué ? requestId/traceId = ea7d2925-3422-4920-9ab1-b22dd3d85b2f. Veuillez analyser la cause détaillée.

Résultats du diagnostic

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

Gestion des sessions

L'assistant IA prend en charge la création et la gestion de plusieurs sessions. Vous pouvez effectuer les opérations suivantes :

  • Créer une session : Sur la page du service, cliquez sur le bouton + en haut, et saisissez le nom de la session pour créer une nouvelle session.

  • Supprimer une session : Sur la page du service, cliquez sur le bouton de suppression en haut pour supprimer la session actuelle.

  • Renommer une session : Sur la page du service, cliquez sur le bouton de modification en haut, saisissez un nouveau nom, puis appuyez sur Entrée pour confirmer.

Changer de mode de sortie

L'assistant IA prend en charge deux modes de sortie. Vous pouvez basculer entre eux en utilisant le bouton de bascule dans la fenêtre de chat :

  • Sortie en continu (par défaut) : Affiche les résultats d'analyse de manière incrémentielle en temps réel pour une réponse plus rapide.

  • Sortie standard : Attend que l'analyse soit terminée avant d'afficher tous les résultats d'un coup.

Tableau de bord personnalisé

Le service fournit des tableaux de bord prédéfinis que vous pouvez utiliser directement. Vous pouvez cliquer sur PRESETS>Services dans le volet de navigation de gauche pour les afficher. Vous pouvez également créer des tableaux de bord personnalisés pour agréger les métriques d'intérêt et les afficher dans le même rapport.

  1. Dans le volet de navigation de gauche, cliquez sur Create Dashboard.

  2. Cliquez sur Add New Tile.

  3. Définissez la source de données et les métriques, puis cliquez sur Save.

    Définissez Data Source sur otel_logs et définissez la méthode d'agrégation sur Count of Events.

Configuration du service

Si vous avez sélectionné Automatically Create Table lors de l'activation du service, la configuration du service pour les tables correspondantes a été automatiquement configurée pour vous. Vous pouvez également configurer d'autres tables comme sources de données en fonction de vos besoins.

  1. Dans le volet de navigation de gauche, cliquez sur Team Settings.

  2. Dans la zone Sources pour configurer les sources de données, qui définissent les tables d'où proviennent les données de journaux, de métriques et de traces, ainsi que le mappage des colonnes. Reportez-vous à la configuration de données suivante :

    logs

    La source de données otel_logs est configurée comme suit dans les paramètres Source :

    • Name : otel_logs

    • Source Data Type : Log

    • Server Connection : ID de l'instance ClickHouse (par ex. cc-bp1vxxx)

    • Database : clickobserve_service

    • Table : otel_logs

    • Timestamp Column : TimestampTime

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

    metrics

    Configurez la source de données otel_metrics dans HyperDX avec les paramètres suivants :

    • Name : otel_metrics

    • Source Data Type : OTEL Metrics

    • Server Connection : Sélectionnez l'instance ClickHouse correspondante

    • 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

    Après la configuration, cliquez sur Save Source pour enregistrer.

    traces

    Sur la page des paramètres Source, configurez la source de données de traçage otel_traces avec les champs suivants :

    • Name : otel_traces

    • Source Data Type : Trace

    • Server Connection : ID de l'instance ClickHouse correspondante

    • Database : clickobserve_service

    • Table : otel_traces

    • Timestamp Column : Timestamp

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

    • Duration Expression : Duration, précision définie sur 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. Dans la zone Connections pour configurer les paramètres de connexion, qui configurent la connexion entre le service d'observabilité et l'instance ApsaraDB for ClickHouse. Une configuration de connexion par défaut à l'instance actuelle est créée. Host indique le point de terminaison de l'instance ApsaraDB for ClickHouse. Seules les adresses VPC sont prises en charge. Si vous modifiez l'adresse du point de terminaison dans la console de l'instance après avoir configuré le point de terminaison de l'instance, vous devez la reconfigurer.

  4. Dans la zone ClickHouse Client Settings pour configurer les paramètres de requête du service d'observabilité sur l'instance ApsaraDB for ClickHouse.

Préférences utilisateur

En bas du volet de navigation de gauche, cliquez sur votre nom d'utilisateur, puis sélectionnez User Preferences pour définir les préférences utilisateur.

Documents connexes