全部产品
Search
文档中心

ApsaraDB for ClickHouse:Mengirimkan data observabilitas dari aplikasi Java ke ApsaraDB for ClickHouse Enterprise Edition

更新时间:Nov 12, 2025

Topik ini menjelaskan cara mengirimkan data observabilitas dari aplikasi Java ke ApsaraDB for ClickHouse Enterprise Edition dan menganalisis data tersebut menggunakan layanan observabilitas terpadu. Hal ini membantu pengembang dan insinyur O&M memantau kinerja aplikasi secara real-time serta menyelesaikan masalah dengan lebih efisien.

Prasyarat

Layanan observabilitas terpadu telah diaktifkan untuk instans ApsaraDB for ClickHouse Enterprise Edition Anda.

Prosedur

Dalam contoh ini, layanan bisnis dan Otel Collector ditempatkan pada Instance ECS yang sama. Di lingkungan produksi, kami merekomendasikan agar Anda menempatkan layanan bisnis dan Otel Collector secara terpisah.

Langkah 1: Menempatkan Otel Collector

  1. Konfigurasikan Instance ECS.

    1. Beli Instance ECS. Saat membeli instans, tetapkan alamat IP publik agar dapat diakses melalui jaringan publik.

    2. Tambahkan alamat IP Instance ECS ke daftar putih instans ApsaraDB for ClickHouse.

      • IP pribadi: Jika Instance ECS dan instans ApsaraDB for ClickHouse Enterprise Edition berada dalam VPC yang sama, tambahkan alamat IP pribadi Instance ECS ke daftar putih. Pada langkah-langkah berikutnya, gunakan alamat VPC sebagai titik akhir instans ApsaraDB for ClickHouse.

      • IP publik: Jika Instance ECS dan instans ApsaraDB for ClickHouse Enterprise Edition tidak dapat terhubung melalui jaringan pribadi, tambahkan alamat IP publik Instance ECS ke daftar putih. Pada langkah-langkah berikutnya, gunakan alamat publik sebagai titik akhir instans ApsaraDB for ClickHouse.

      Sambungkan ke Instance ECS dan jalankan perintah berikut untuk menguji konektivitas ke instans ApsaraDB for ClickHouse. Jika perintah mengembalikan Ok., koneksi berhasil.

      curl http://cc-xxxxxxx-clickhouse.clickhouseserver.pre.rds.aliyuncs.com:8123
  2. Sambungkan ke Instance ECS dan jalankan perintah berikut untuk menginstal otelcol-contrib.

    mkdir llm-demo
    cd llm-demo
    wget -O otelcol-contrib.rpm https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.136.0/otelcol-contrib_0.136.0_linux_amd64.rpm
    yum install otelcol-contrib.rpm
  3. Konfigurasikan Otel Collector untuk menerima data observabilitas melalui protokol gRPC dan HTTP serta mengirimkan data tersebut ke instans ApsaraDB for ClickHouse melalui protokol HTTP.

    Salin konten berikut untuk membuat file konfigurasi dan sesuaikan konfigurasi sesuai kebutuhan:

    • Pada bagian `receivers`: Ganti titik akhir penerima OTLP dengan titik akhir layanan Otel Collector.

    • Pada bagian `exporters`:

      • Konfigurasikan informasi koneksi untuk instans ApsaraDB for ClickHouse, termasuk titik akhir, nama pengguna, dan kata sandi.

      • Konfigurasikan nama database dan tabel untuk menyimpan data observabilitas di instans ApsaraDB for ClickHouse. Ini mencakup `database`, `traces_table_name`, `logs_table_name`, dan `metrics_tables`.

    cat > /etc/otelcol-contrib/config.yaml << EOF
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    processors:
      batch:
        timeout: 5s
        send_batch_size: 5000
    exporters:
      clickhouse:
        endpoint: http://cc-xxxxxx-clickhouse.clickhouseserver.pre.rds.aliyuncs.com:8123?dial_timeout=10s&compress=lz4&async_insert=1
        username: test
        password: password
        # ttl: 72h
        traces_table_name: otel_traces
        logs_table_name: otel_logs
        metrics_tables:
          gauge: 
            name: otel_metrics_gauge
          sum: 
            name: otel_metrics_sum
          summary: 
            name: otel_metrics_summary
          histogram: 
            name: otel_metrics_histogram
          exponential_histogram: 
            name: otel_metrics_exp_histogram
        create_schema: false
        timeout: 5s
        database: clickobserve_service
        sending_queue:
          queue_size: 1000
        retry_on_failure:
          enabled: true
          initial_interval: 5s
          max_interval: 30s
          max_elapsed_time: 300s
    
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [clickhouse]
        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [clickhouse]
        logs:
          receivers: [otlp]
          processors: [batch]
          exporters: [clickhouse]
    EOF
  4. Jalankan Otel Collector.

    service otelcol-contrib restart

Langkah 2: Membuat aplikasi Java

Bagian ini menggunakan layanan pelemparan dadu sederhana berbasis Spring Boot sebagai contoh untuk menunjukkan cara membuat aplikasi.

  1. Konfigurasikan lingkungan Java.

    1. Tempatkan lingkungan Java. Anda harus menginstal Java 17 atau versi yang lebih baru.

    2. Unduh dan instal Gradle. Anda harus menginstal Gradle 8 atau versi yang lebih baru.

  2. Inisialisasi proyek Gradle.

    Dalam contoh ini, folder diberi nama java-simple. Setelah inisialisasi, struktur foldernya adalah sebagai berikut:

    java-simple
    ├── app
    │   ├── build.gradle.kts
    │   └── src
    │       ├── main
    │       │   ├── java
    │       │   │   └── org
    │       │   │       └── example
    │       │   │           └── App.java
    │       │   └── resources
    │       └── test
    │           ├── java
    │           │   └── org
    │           │       └── example
    │           │           └── AppTest.java
    │           └── resources
    ├── gradle
    │   ├── libs.versions.toml
    │   └── wrapper
    │       ├── gradle-wrapper.jar
    │       └── gradle-wrapper.properties
    ├── gradle.properties
    ├── gradlew
    ├── gradlew.bat
    └── settings.gradle.kts
  3. Pada folder java-simple, ubah atau buat file-file berikut:

    Ubah build.gradle.kts

    plugins {
      id("java")
      id("org.springframework.boot") version "3.0.6"
      id("io.spring.dependency-management") version "1.1.0"
    }
    
    sourceSets {
      main {
        java.setSrcDirs(setOf("."))
      }
    }
    
    repositories {
      mavenCentral()
    }
    
    dependencies {
      implementation("org.springframework.boot:spring-boot-starter-web")
    }
    

    Ubah App.java

    package org.example;
    
    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class App {
      public static void main(String[] args) {
        SpringApplication app = new SpringApplication(App.class);
        app.setBannerMode(Banner.Mode.OFF);
        app.run(args);
      }
    }

    Buat RollController.java

    package org.example;
    
    import java.util.Optional;
    import java.util.concurrent.ThreadLocalRandom;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class RollController {
      private static final Logger logger = LoggerFactory.getLogger(RollController.class);
    
      @GetMapping("/rolldice")
      public String index(@RequestParam("player") Optional<String> player) {
        int result = this.getRandomNumber(1, 6);
        if (player.isPresent()) {
          logger.info("{} is rolling the dice: {}", player.get(), result);
        } else {
          logger.info("Anonymous player is rolling the dice: {}", result);
        }
        return Integer.toString(result);
      }
    
      public int getRandomNumber(int min, int max) {
        return ThreadLocalRandom.current().nextInt(min, max + 1);
      }
    }

Langkah 3: Konfigurasi OpenTelemetry Java Agent

  1. Unduh OpenTelemetry Java Agent.

    curl -L -O https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
  2. Konfigurasikan variabel lingkungan.

    export JAVA_TOOL_OPTIONS="-javaagent:/../opentelemetry-javaagent.jar" \
      OTEL_TRACES_EXPORTER=otlp \
      OTEL_METRICS_EXPORTER=otlp \
      OTEL_LOGS_EXPORTER=otlp \
      OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
      OTEL_EXPORTER_OTLP_ENDPOINT=http://<IP address>:4318 \
      OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://<IP address>:4318/v1/traces \
      OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://<IP address>:4318/v1/metrics \
      OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://<IP address>:4318/v1/logs \
      OTEL_METRIC_EXPORT_INTERVAL=15000
    • JAVA_TOOL_OPTIONS: Ganti nilai dengan path ke file Java Agent yang telah diunduh.

    • Konfigurasi titik akhir: http://<IP address>:4318 adalah titik akhir layanan Otel Collector yang dapat diakses oleh aplikasi Java Anda.

    • Untuk informasi selengkapnya tentang parameter lainnya, lihat properties-exporters.

Langkah 4: Jalankan dan akses aplikasi Java

  1. Pada folder aplikasi proyek, jalankan perintah berikut untuk menjalankan aplikasi.

    Dalam contoh ini, folder aplikasi proyek adalah ../java-simple/app.

    gradle assemble
    java -jar ./build/libs/app.jar
  2. Pada browser, akses http://<IP address>:8080/rolldice. Alamat IP pada URL adalah alamat server tempat aplikasi Java dijalankan.

    image

Langkah 5: Kueri dan analisis data observabilitas

  1. Pada halaman detail instans ApsaraDB for ClickHouse, klik All-in-one Observe Suite di panel navigasi sebelah kiri untuk menuju portal layanan.

  2. Pada halaman utama, Anda dapat melakukan kueri dan menganalisis data observabilitas dari aplikasi Java.

    image