全部产品
Search
文档中心

Application Real-Time Monitoring Service:Gunakan Jaeger untuk melaporkan data aplikasi Go

更新时间:Jun 27, 2025

Sebelum Anda dapat melihat data jejak aplikasi, Anda harus menggunakan klien untuk melaporkan data jejak ke Analisis Tracing. Topik ini menjelaskan cara menggunakan Jaeger SDK atau agen Jaeger untuk melaporkan data aplikasi Go, serta memberikan contoh penggunaan kedua metode tersebut.

Prasyarat

Untuk mendapatkan titik akhir Jaeger atau Zipkin, ikuti langkah-langkah berikut:

  1. Masuk ke Konsol Managed Service for OpenTelemetry.

  2. Di bilah navigasi sisi kiri, klik Cluster Configurations. Di halaman yang muncul, klik tab Access point information.

  3. Pada bilah navigasi atas, pilih wilayah. Di bagian Cluster Information, aktifkan Show Token.

  4. Atur parameter Client ke Jaeger atau Zipkin. Pada contoh ini, Jaeger dipilih.

    Dapatkan titik akhir Jaeger atau Zipkin di kolom Related Information tabel di bagian bawah.

    Jaeger/Zipkin接入点信息

    Catatan

    Jika aplikasi Anda diterapkan di lingkungan produksi Alibaba Cloud, gunakan titik akhir VPC. Jika tidak, gunakan titik akhir publik. Secara umum, gunakan titik akhir v2 untuk Zipkin. Gunakan titik akhir v1 hanya jika Anda memahami Zipkin dengan baik.

Informasi Latar Belakang

Bagaimana Data Dilaporkan?

  • Gambar berikut menunjukkan cara melaporkan data tanpa menggunakan agen Jaeger.

  • Gambar berikut menunjukkan cara melaporkan data dengan menggunakan agen Jaeger.

Metode 1: Gunakan Jaeger SDK untuk melaporkan data aplikasi Go

Dalam contoh ini, modul Go digunakan untuk mengelola dependensi. Anda dapat menggunakan Jaeger SDK untuk menginstrumentasi aplikasi dan melaporkan data aplikasi ke Analisis Tracing. Jika Anda menggunakan alat lain untuk mengelola dependensi, sesuaikan operasi berdasarkan kebutuhan aktual Anda.

  1. Impor jaeger-client-go.

    go get github.com/uber/jaeger-client-go
  2. Buat objek Tracer.

    Catatan

    Ganti <endpoint> dengan titik akhir untuk Jaeger di wilayah yang sesuai pada halaman Access point information konsol Analisis Tracing. Untuk informasi lebih lanjut tentang cara mendapatkan titik akhir, lihat bagian Prasyarat dalam topik ini.

    func NewJaegerTracer(service string) (opentracing.Tracer, io.Closer) {
    
        sender := transport.NewHTTPTransport(
           // Tentukan titik akhir. Titik akhir berbeda di setiap wilayah.
            "<endpoint>",
        )
       tracer, closer:= jaeger.NewTracer(service,
               jaeger.NewConstSampler(true),
               jaeger.NewRemoteReporter(sender))
       return tracer, closer
    }
  3. Buat rentang dan teruskan data.

    • Jika rentang induk tidak tersedia, gunakan kode berikut:

      // Buat rentang.
      span := tracer.StartSpan("myspan")
      // Tetapkan tag.
      clientSpan.SetTag("mytag", "123")
      // Teruskan ID jejak.
      tracer.Inject(span.Context(), opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(req.Header))
      ...
      defer  span.Finish()
    • Jika rentang induk tersedia, gunakan kode berikut:

      // Ekstrak SpanContext dari permintaan HTTP atau permintaan RPC.
      spanCtx, _ := tracer.Extract(opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(r.Header))
      span := tracer.StartSpan("myspan", opentracing.ChildOf(spanCtx))
      ...
      defer  span.Finish()

    Untuk informasi lebih lanjut, lihat Jaeger Bindings untuk API OpenTracing Go.

Metode 2: Gunakan agen Jaeger untuk melaporkan data aplikasi Go

  1. Mulai agen Jaeger. Untuk informasi lebih lanjut, lihat Instal Agen Jaeger.

  2. Impor jaeger-client-go.

    go get github.com/uber/jaeger-client-go
  3. Buat objek Tracer.

    func NewJaegerTracer(serviceName string) (opentracing.Tracer, io.Closer) {
       sender, _ := jaeger.NewUDPTransport("",0)
       tracer, closer:= jaeger.NewTracer(serviceName,
            jaeger.NewConstSampler(true),
            jaeger.NewRemoteReporter(sender))
        return tracer, closer
    }
  4. Buat rentang dan teruskan data.

    • Jika rentang induk tidak tersedia, gunakan kode berikut:

      // Buat rentang.
      span := tracer.StartSpan("myspan")
      // Tetapkan tag.
      clientSpan.SetTag("mytag", "123")
      // Teruskan ID jejak.
      tracer.Inject(span.Context(), opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(req.Header))
      ...
      defer  span.Finish()
    • Jika rentang induk tersedia, gunakan kode berikut:

      // Ekstrak SpanContext dari permintaan HTTP atau permintaan RPC.
      spanCtx, _ := tracer.Extract(opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(r.Header))
      span := tracer.StartSpan("myspan", opentracing.ChildOf(spanCtx))
      ...
      defer  span.Finish()

    Untuk informasi lebih lanjut, lihat Jaeger Bindings untuk API OpenTracing Go.

Contoh

Gunakan Jaeger SDK untuk Melaporkan Data Aplikasi Go

  1. Dapatkan titik akhir yang diperlukan. Untuk informasi lebih lanjut, lihat bagian Prasyarat dalam topik ini.

  2. Jalankan perintah berikut untuk mengunduh demo:

    wget https://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/demo/tracing-demo.zip && unzip tracing-demo.zip
  3. Ekstrak paket ZIP, buka file examples/settings.go di demo, lalu atur parameter TracingAnalysisEndpoint ke titik akhir yang diperoleh di Langkah 1, seperti yang ditunjukkan pada gambar berikut.

    jaeger_demo

  4. Jalankan perintah go mod tidy untuk membersihkan dependensi yang tidak digunakan.

  5. Jalankan perintah go run tracingdemo untuk menjalankan demo.

Gunakan Agen Jaeger untuk Melaporkan Data Aplikasi Go

  1. Dapatkan titik akhir yang diperlukan. Untuk informasi lebih lanjut, lihat bagian Prasyarat dalam topik ini.

  2. Jalankan perintah berikut untuk mengunduh demo:

    wget https://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/demo/tracing-demo.zip && unzip tracing-demo.zip
  3. Mulai agen Jaeger. Untuk informasi lebih lanjut, lihat Instal Agen Jaeger.

  4. Buka file examples/settings.go di demo dan atur parameter AgentSwitch menjadi true.

    jaeger_demo

  5. Jalankan perintah go mod tidy untuk membersihkan dependensi yang tidak digunakan.

  6. Jalankan perintah go run tracingdemo untuk menjalankan demo.

Tanya Jawab Umum

P: Mengapa kesalahan berikut terjadi ketika saya menggunakan Jaeger untuk melaporkan data aplikasi Go?

2021/06/28 21:11:54 ERROR: error when flushing the buffer: error from collector: 403

A: Ini karena titik akhir yang ditentukan tidak valid. Tentukan titik akhir yang valid dan coba lagi.