Setelah Anda melakukan instrumentasi aplikasi dengan SkyWalking Rust Agent dan melaporkan trace data ke Managed Service for OpenTelemetry, Managed Service for OpenTelemetry mulai memantau aplikasi Anda. Anda dapat melihat metrik utama, seperti topologi aplikasi, jejak (traces), transaksi yang gagal dan lambat, serta analisis SQL.
Prasyarat
-
Protobuf telah diinstal.
macOS
brew install protobufDebian
sudo apt install protobuf-compiler -
Informasi latar belakang
SkyWalking adalah alat Application Performance Monitoring (APM) open-source populer untuk aplikasi layanan mikro, cloud-native, dan berbasis kontainer (seperti Docker, Kubernetes, dan Mesos). Inti dari SkyWalking adalah sistem pelacakan terdistribusi.
Crate skywalking-rust adalah library resmi SkyWalking Rust Agent. Anda dapat mengintegrasikannya untuk memantau aplikasi Rust. Saat ini, skywalking-rust menyediakan instrumentasi otomatis yang terbatas dan memerlukan instrumentasi manual.
Demo
Repositori demo: SkyWalking Demo
Demo ini menyediakan server HTTP sederhana berbasis framework hyper untuk Rust. Demo ini menggunakan instrumentasi manual dengan skywalking-rust untuk melaporkan data ke konsol Managed Service for OpenTelemetry.
Instrumentasi manual aplikasi Rust
-
Tambahkan dependensi SkyWalking ke proyek Rust Anda.
CatatanTopik ini menggunakan SkyWalking 0.8.0 sebagai contoh.
cargo.toml
# Tambahkan baris berikut di bawah [dependencies] skywalking = { version = "0.8.0", features = ["vendored"] }cargo add
cargo add skywalking --features vendored -
Impor modul SkyWalking dalam kode sumber Anda.
# Impor modul dalam kode sumber yang memerlukan instrumentasi. use skywalking::{reporter::grpc::GrpcReporter, trace::tracer::Tracer}; -
Lakukan instrumentasi manual.
// Gunakan entry span, local span, dan exit span untuk melakukan instrumentasi jejak secara manual. // Ketiga jenis span ini memungkinkan pelacakan end-to-end yang lengkap. // // entry span: Digunakan di sisi server untuk mengekstrak konteks pelacakan dari permintaan HTTP masuk. // local span: Digunakan untuk menginstrumentasi operasi dalam proses yang sama. // exit span: Digunakan di sisi klien untuk menyisipkan konteks pelacakan ke permintaan HTTP keluar. // // Untuk jejak lintas proses, lihat contoh berikut: // // client.rs: let mut ctx = tracer.create_trace_context(); { // lakukan sesuatu... let span = ctx.create_exit_span("operation1", "remote_peer"); } // server.rs: let mut ctx = tracer.create_trace_context(); { let span = ctx.create_entry_span("operation1"); // lakukan sesuatu... } -
Konfigurasikan titik akhir dan token.
Dapatkan alamat titik akhir dan token otentikasi dari bagian Prasyarat.
// Ganti <endpoint> dengan alamat titik akhir, <token> dengan token otentikasi, // dan <service_name> dengan nama aplikasi Anda. let endpoint = "<endpoint>"; let token = "<token>"; let service_name = "<service_name>"; let instance_name = "<instance_name>"; let reporter = GrpcReporter::connect(endpoint).await?; let reporter = reporter.with_authentication(token); let tracer = Tracer::new(service_name, instance_name, reporter.clone());</service_name></token></endpoint> -
Mulai ulang aplikasi Anda.
FAQ
Proyek Rust saya gagal dibangun dengan error berikut:
Compiling tokio-io v0.1.13
Compiling hyper v0.14.27
error: failed to run custom build command for `skywalking v0.8.0`
Caused by:
process didn't exit successfully: `/Users/whlongxi/work/test/skywalking-test-demo/skywalking-rust-demo/target/debug/build/skywalking-12f2124cc5c4c6c4/build-script-build` (exit status:
101)
--- stdout
cargo:rerun-if-changed=./skywalking-data-collect-protocol/language-agent/Meter.proto
cargo:rerun-if-changed=./skywalking-data-collect-protocol/language-agent/Tracing.proto
cargo:rerun-if-changed=./skywalking-data-collect-protocol/logging/Logging.proto
cargo:rerun-if-changed=./skywalking-data-collect-protocol/management/Management.proto
cargo:rerun-if-changed=./skywalking-data-collect-protocol
--- stderr
thread 'main' panicked at 'Could not find `protoc` installation and this build crate cannot proceed without
this knowledge. If `protoc` is installed and this crate had trouble finding
it, you can set the `PROTOC` environment variable with the specific path to your
installed `protoc` binary.You could try running `brew install protobuf` or downloading it from https://github.com/protocolbuffers/protobuf/releases
Error ini menunjukkan bahwa kompilator protoc tidak ditemukan. Untuk memperbaikinya, instal protobuf seperti yang dijelaskan di bagian Prasyarat.

