Gunakan SDK skywalking-rust untuk menginstrumen aplikasi Rust Anda secara manual dan melaporkan data jejak ke Managed Service for OpenTelemetry. Anda perlu menambahkan rentang (spans) secara manual ke kode menggunakan skywalking-rust guna menangkap pelacakan terdistribusi.
Cara kerja
SDK skywalking-rust merupakan agen Rust resmi untuk Apache SkyWalking, layanan Application Performance Monitoring (APM) populer yang dikembangkan di Tiongkok. SkyWalking dirancang untuk aplikasi microservice, cloud-native, dan berbasis kontainer di Docker, Kubernetes, dan Mesos, serta berfungsi sebagai sistem pelacakan terdistribusi. SDK ini terhubung ke Managed Service for OpenTelemetry melalui protokol gRPC dan melaporkan data jejak dari aplikasi Anda.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Rust toolchain (rustc dan Cargo)
Protobuf compiler:
macOS
brew install protobufDebian/Ubuntu
sudo apt install protobuf-compilerTitik akhir SkyWalking dan token otentikasi dari Managed Service for OpenTelemetry (lihat Dapatkan titik akhir SkyWalking Anda)
Dapatkan titik akhir SkyWalking Anda
Masuk ke Konsol Managed Service for OpenTelemetry.
Pada panel navigasi sebelah kiri, klik Cluster Configurations. Lalu, klik tab Access point information.
Pada bilah navigasi atas, pilih wilayah. Di bagian Cluster Information, aktifkan Show Token.
Di bagian Client, klik SkyWalking.
Salin titik akhir dari kolom Related Information.

Jika aplikasi Anda berjalan di lingkungan produksi Alibaba Cloud, gunakan titik akhir VPC. Jika tidak, gunakan titik akhir publik.
Instrumen aplikasi Rust
Langkah-langkah berikut menggunakan skywalking-rust versi 0.8.0.
Langkah 1: Tambahkan dependensi SkyWalking
Tambahkan dependensi berikut ke file Cargo.toml Anda:
[dependencies]
skywalking = { version = "0.8.0", features = ["vendored"] }Atau, jalankan perintah berikut:
cargo add skywalking --features vendoredLangkah 2: Impor modul SkyWalking
Tambahkan impor berikut ke file sumber yang ingin Anda instrumenkan:
use skywalking::{reporter::grpc::GrpcReporter, trace::tracer::Tracer};Langkah 3: Siapkan reporter gRPC
Hubungkan reporter ke titik akhir SkyWalking Anda dan lakukan otentikasi menggunakan token Anda. Ganti placeholder dengan nilai Anda sendiri.
// Ganti placeholder berikut dengan nilai Anda.
let endpoint = "<your-skywalking-endpoint>";
let token = "<your-authentication-token>";
let service_name = "<your-service-name>";
let instance_name = "<your-instance-name>";
let reporter = GrpcReporter::connect(endpoint).await?;
let reporter = reporter.with_authentication(token);
let tracer = Tracer::new(service_name, instance_name, reporter.clone());Langkah 4: Buat rentang (spans)
SkyWalking menggunakan tiga jenis rentang untuk pelacakan terdistribusi end-to-end:
| Jenis rentang | Tujuan | Kapan digunakan |
|---|---|---|
Entry span (EntrySpan) | Menangkap permintaan masuk | Di sisi server, untuk mengekstrak konteks jejak dari permintaan inbound |
Local span (LocalSpan) | Menangkap operasi dalam proses | Untuk melacak logika dalam satu proses |
Exit span (ExitSpan) | Menangkap permintaan keluar | Di sisi client, untuk menyuntikkan konteks jejak ke permintaan outbound |
Kode sisi client (membuat exit span untuk menyebarkan konteks):
let mut ctx = tracer.create_trace_context();
{
// Buat exit span sebelum melakukan panggilan outbound.
let span = ctx.create_exit_span("operation1", "remote_peer");
// ... kirim permintaan ...
}Kode sisi server (membuat entry span untuk menerima konteks):
let mut ctx = tracer.create_trace_context();
{
// Buat entry span saat menangani permintaan masuk.
let span = ctx.create_entry_span("operation1");
// ... proses permintaan ...
}Langkah 5: Bangun ulang dan restart aplikasi Anda
Setelah menambahkan instrumen, bangun ulang dan restart aplikasi Anda:
cargo build --releaseData jejak mulai mengalir ke Managed Service for OpenTelemetry setelah aplikasi menangani permintaan.
Kode contoh
Untuk contoh lengkap yang menggunakan framework hyper untuk membangun server HTTP dengan instrumen SkyWalking, lihat repositori skywalking-demo di GitHub.
Pemecahan masalah
Proses build gagal dengan error terkait Protobuf

Penyebab: Protobuf compiler belum diinstal atau tidak ada di PATH Anda.
Solusi: Instal Protobuf seperti yang dijelaskan di bagian Prasyarat, lalu coba build kembali.