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
Unduh dan kompilasi SDK.
Ekstrak paket ke jalur yang ditentukan.
Pergi ke jalur yang ditentukan setelah paket diekstraksi, dan jalankan perintah berikut:
mkdir build cd build CXXFLAGS="-Wno-error=deprecated-copy" cmake .. make
Kompilasi dan jalankan kode.
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; }Pergi ke direktori build.
Jalankan perintah
makeuntuk membangun aplikasi.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} ./appTabel 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.
CatatanJika 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