全部产品
Search
文档中心

Simple Log Service:Impor data jejak dari aplikasi Java ke Layanan Log Sederhana menggunakan OpenTelemetry SDK for Java

更新时间:Jul 06, 2025

Topik ini menjelaskan cara mengimpor data jejak dari aplikasi Java ke Layanan Log Sederhana menggunakan OpenTelemetry SDK for Java.

Prasyarat

  • Sebuah instance jejak telah dibuat. Untuk informasi lebih lanjut, lihat Buat Instance Jejak.

  • Lingkungan pengembangan Java telah disiapkan. Versi Java adalah 8 atau yang lebih baru.

    Catatan

    Disarankan untuk menggunakan Java Development Kit (JDK) 8u252 atau versi yang lebih baru.

Metode 1: (Direkomendasikan) Gunakan agen Java untuk mengunggah data jejak secara otomatis

Anda dapat menggunakan agen Java untuk mengunggah data jejak ke Layanan Log Sederhana di berbagai kerangka kerja Java. Untuk informasi lebih lanjut, lihat Pustaka, Kerangka Kerja, Server Aplikasi, dan JVM yang Didukung.

Penting

Agen Java tidak dapat digunakan bersamaan dengan agen SkyWalking atau Zipkin. Jika digunakan bersamaan, perilaku yang tidak terdefinisi mungkin terjadi.

  1. Unduh versi terbaru dari agen Java. Untuk informasi lebih lanjut, lihat opentelemetry-java-instrumentation.

  2. Konfigurasikan agen Java.

    Kode berikut menunjukkan contoh konfigurasi variabel lingkungan untuk parameter -javaagent dari Java Virtual Machine (JVM). Untuk informasi lebih lanjut, lihat opentelemetry-java-instrumentation. Gantilah variabel seperti ${endpoint} dan ${project} dalam kode dengan nilai sebenarnya.

    export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
    export OTEL_EXPORTER_OTLP_ENDPOINT=https://${endpoint}
    export OTEL_EXPORTER_OTLP_COMPRESSION=gzip
    export OTEL_EXPORTER_OTLP_HEADERS=x-sls-otel-project=${project},x-sls-otel-instance-id=${instance},x-sls-otel-ak-id=${access-key-id},x-sls-otel-ak-secret=${access-key-secret}
    java -javaagent:/path/to/opentelemetry-javaagent-all.jar  -Dotel.resource.attributes=service.namespace=${service.namespace},service.name=${service},service.version=${version},host.name=${host},deployment.environment=${environment} -jar /path/to/your/app.jar

    Tabel 1. Variabel

    Variabel

    Deskripsi

    Contoh

    ${endpoint}

    Titik akhir proyek Layanan Log Sederhana. Format: ${project}.${region-endpoint}:Port.

    • ${project}: nama proyek Layanan Log Sederhana.

    • ${region-endpoint}: Titik akhir Layanan Log Sederhana untuk wilayah tempat proyek berada. Anda dapat mengakses Layanan Log Sederhana menggunakan titik akhir internal atau publik. Titik akhir internal dapat diakses melalui jaringan klasik atau virtual private cloud (VPC). Titik akhir publik dapat diakses melalui Internet. Untuk informasi lebih lanjut, lihat Titik Akhir.

    • Port: nomor port. Nilainya tetap sebagai 10010.

    test-project.cn-hangzhou.log.aliyuncs.com:10010

    ${project}

    Nama proyek Layanan Log Sederhana.

    test-project

    ${instance}

    ID instance jejak. Untuk informasi lebih lanjut, lihat Buat instance jejak.

    test-traces

    ${access-key-id}

    ID AccessKey akun Alibaba Cloud Anda.

    Kami merekomendasikan Anda menggunakan pasangan AccessKey dari Pengguna Resource Access Management (RAM) yang hanya memiliki izin tulis pada proyek Layanan Log Sederhana. Pasangan AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey. Untuk informasi lebih lanjut tentang cara memberikan izin tulis pada proyek tertentu kepada pengguna RAM, lihat Gunakan kebijakan kustom untuk memberikan izin kepada pengguna RAM. Untuk informasi lebih lanjut tentang cara memperoleh pasangan AccessKey, lihat Pasangan AccessKey.

    Tidak ada

    ${access-key-secret}

    Rahasia AccessKey akun Alibaba Cloud Anda.

    Kami merekomendasikan Anda menggunakan pasangan AccessKey dari pengguna RAM yang hanya memiliki izin tulis pada proyek Layanan Log Sederhana.

    Tidak ada

    ${service.namespace}

    Namespace tempat layanan berada.

    order

    ${service}

    Nama layanan. Tentukan nilai berdasarkan kebutuhan bisnis Anda.

    payment

    ${version}

    Versi layanan. Kami merekomendasikan Anda menentukan versi dalam format va.b.c.

    v0.1.2

    ${host}

    Nama host.

    localhost

    ${environment}

    Lingkungan penyebaran. Contoh: Lingkungan pengujian atau lingkungan produksi. Tentukan nilai berdasarkan kebutuhan bisnis Anda.

    pre

Metode 2: Hasilkan dan unggah data jejak secara manual

Jika Anda menggunakan kerangka kerja yang dikelola sendiri atau memiliki persyaratan khusus, Anda dapat menghasilkan data jejak secara manual dan mengunggahnya ke Layanan Log Sederhana. Dalam contoh ini, Maven digunakan. Untuk informasi lebih lanjut, lihat Instrumentasi Manual.

  1. Tambahkan dependensi Maven.

    <dependencies>
        <dependency>
          <groupId>io.opentelemetry</groupId>
          <artifactId>opentelemetry-api</artifactId>
        </dependency>
        <dependency>
          <groupId>io.opentelemetry</groupId>
          <artifactId>opentelemetry-sdk</artifactId>
        </dependency>
        <dependency>
          <groupId>io.opentelemetry</groupId>
          <artifactId>opentelemetry-exporter-otlp</artifactId>
        </dependency>
        <dependency>
          <groupId>io.opentelemetry</groupId>
          <artifactId>opentelemetry-semconv</artifactId>
          <version>1.20.1-alpha</version>
        </dependency>
      </dependencies>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>io.opentelemetry</groupId>
            <artifactId>opentelemetry-bom</artifactId>
            <version>1.20.1</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>
  2. Tambahkan kode inisialisasi.

    Gantilah variabel seperti ${endpoint} dan ${project} dalam kode berikut dengan nilai sebenarnya. Untuk informasi lebih lanjut tentang variabel, lihat Variabel.

      Resource resource = Resource.getDefault()
                    .merge(Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, "service-name")))
                    .merge(Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAMESPACE, "namespace")))
                    .merge(Resource.create(Attributes.of(ResourceAttributes.SERVICE_VERSION, "1.0.0")))
                    .merge(Resource.create(Attributes.of(ResourceAttributes.HOST_NAME, "host-name")));
    
            SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
                    .addSpanProcessor(
                            BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder().setEndpoint("https://${endpoint}") // Setel parameter .setEndpoint ke nilai yang dimulai dengan https://. Contoh: https://test-project.cn-hangzhou.log.aliyuncs.com:10010. 
                                    .addHeader("x-sls-otel-project", "${project}")
                                    .addHeader("x-sls-otel-instance-id", "${instance}")
                                    .addHeader("x-sls-otel-ak-id", "${access-key-id}")
                                    .addHeader("x-sls-otel-ak-secret", "${access-key-secret}").build()).build())
                    .setResource(resource).build();
    
            OpenTelemetry openTelemetry = OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider)
                    .buildAndRegisterGlobal();
    
            Tracer tracer = openTelemetry.getTracer("instrumentation-library-name", "1.0.0");
            Span parentSpan = tracer.spanBuilder("parent").startSpan();
    
            try {
                Span childSpan = tracer.spanBuilder("child").setParent(Context.current().with(parentSpan)).startSpan();
                childSpan.setAttribute("test", "vllelel");
                childSpan.end();
            } finally {
                parentSpan.end();
            }

FAQ

Apa yang harus saya lakukan jika pesan kesalahan "Could not find TLS ALPN provider" dikembalikan oleh agen Java ketika versi JDK lebih awal dari 8u252?Counld not find TLS ALPN provider

Untuk menyelesaikan masalah ini, ikuti langkah-langkah berikut:

  1. Unduh paket.

  2. Jalankan perintah berikut untuk menambahkan file JAR yang diperlukan.

    ${youpath} menentukan jalur ke file JAR. Ganti setiap variabel ${youpath} dengan nilai sebenarnya.

    java -Xbootclasspath/p:${youpath}/netty-tcnative-boringssl-static-2.0.25.Final.jar -javaagent:${youpath}/opentelemetry-javaagent-all.jar -jar ${youpath}/demo2-0.0.1-SNAPSHOT.jar

Apa yang harus dilakukan selanjutnya