全部产品
Search
文档中心

:Impor data jejak dari aplikasi C++ ke Layanan Log Sederhana menggunakan Jaeger SDK untuk C++

更新时间:Jul 06, 2025

Topik ini menjelaskan cara mengimpor data jejak dari aplikasi C++ ke Layanan Log Sederhana menggunakan Jaeger SDK untuk C++.

Prasyarat

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

  • Lingkungan pengembangan di mana Jaeger SDK untuk C++ dapat dikompilasi dan dijalankan telah disiapkan.

    • Jika Anda menggunakan CMake Editor, versinya harus 3.0 atau yang lebih baru.

    • Jika Anda menggunakan kompiler GCC atau g++, versinya harus 4.9.0 atau yang lebih baru.

Prosedur

  1. Unduh dan kompilasi SDK.

    1. Unduh Jaeger SDK untuk C++.

    2. Ekstrak paket ke jalur yang ditentukan.

    3. Pergi ke jalur yang ditentukan setelah paket diekstraksi, dan jalankan perintah berikut:

      mkdir build
      cd build
      CXXFLAGS="-Wno-error=deprecated-copy" cmake ..
      make
  2. Kompilasi dan jalankan kode.

    1. Modifikasi file App.cpp dari direktori examples.

      Ganti isi file App.cpp dengan konten berikut. Konten berikut menunjukkan bahwa Jaeger diinisialisasi menggunakan variabel lingkungan. Untuk informasi lebih lanjut, lihat jaeger-client-cpp.

      #include <iostream>
      #include <jaegertracing/Tracer.h>
      #include <jaegertracing/utils/EnvVariable.h>
      
      namespace {
      
      void setUpTracer()
      {
          const auto serviceName = jaegertracing::utils::EnvVariable::getStringVariable("JAEGER_SERVICE_NAME");
          auto config = jaegertracing::Config();
          config.fromEnv();
          auto tracer = jaegertracing::Tracer::make(
              serviceName, config, jaegertracing::logging::consoleLogger());
          opentracing::Tracer::InitGlobal(
              std::static_pointer_cast<opentracing::Tracer>(tracer));
      }
      
      void tracedSubroutine(const std::unique_ptr<opentracing::Span>& parentSpan)
      {
          auto span = opentracing::Tracer::Global()->StartSpan(
              "tracedSubroutine", { opentracing::ChildOf(&parentSpan->context()) });
      }
      
      void tracedFunction()
      {
          auto span = opentracing::Tracer::Global()->StartSpan("tracedFunction");
          tracedSubroutine(span);
      }
      
      }  // anonymous namespace
      
      int main(int argc, char* argv[])
      {
          setUpTracer();
          tracedFunction();
          // Tidak wajib menutup tracer, tetapi mungkin akan mem-flush rentang yang tersimpan dalam buffer.
          // Lihat lebih banyak detail di dokumentasi opentracing::Tracer::Close().
          opentracing::Tracer::Global()->Close();
          return 0;
      }
    2. Pergi ke direktori build.

    3. Jalankan perintah make untuk membangun aplikasi.

    4. Jalankan kode berikut.

      Anda harus mengganti variabel dalam kode berikut dengan nilai sebenarnya. Tabel berikut menjelaskan variabel tersebut.

      # Jika Anda ingin mencetak rentang, atur variabel lingkungan yang diperlukan dalam format export JAEGER_REPORTER_LOG_SPANS=true. 
      export JAEGER_SAMPLER_TYPE=const
      export JAEGER_SAMPLER_PARAM=1
      export JAEGER_SERVICE_NAME=${service}
      export JAEGER_PROPAGATION=w3c
      export JAEGER_ENDPOINT="https://${endpoint}/jaeger/api/traces"
      export JAEGER_TAGS=sls.otel.project=${project},sls.otel.instanceid=${instance},sls.otel.akid=${access-key-id},sls.otel.aksecret=${access-key-secret},service.version=${version}
      ./app

      Tabel 1. Variabel

      Variabel

      Deskripsi

      Contoh

      ${service}

      Nama layanan. Masukkan nama berdasarkan skenario aktual.

      payment

      ${version}

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

      v0.1.2

      ${endpoint}

      Titik akhir. Formatnya adalah ${project}.${region-endpoint}, di mana:

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

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

      • Port: nomor port, yang diatur ke 10010.

      Catatan
      • Jika Anda mengatur variabel ke stdout dalam format provider.WithTraceExporterEndpoint("stdout"),, data dicetak sebagai output standar.

      • Jika Anda mengatur variabel ke nilai kosong, data jejak tidak akan diunggah ke Layanan Log Sederhana.

      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 tentang cara memberikan izin tulis pada proyek tertentu kepada pengguna RAM, lihat Gunakan kebijakan kustom untuk memberikan izin kepada pengguna RAM. Untuk informasi tentang cara mendapatkan 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

Apa yang harus dilakukan selanjutnya