すべてのプロダクト
Search
ドキュメントセンター

Application Real-Time Monitoring Service:SkyWalking を使用した Rust アプリケーションのイベントトラッキング

最終更新日:Mar 12, 2026

skywalking-rust SDK を使用して Rust アプリケーションを手動でイベントトラッキングし、トレースデータを OpenTelemetry 向けマネージドサービスにレポートします。分散トレースをキャプチャするには、skywalking-rust を使用して手動でコードにスパンを追加する必要があります。

仕組み

skywalking-rust SDK は、中国で開発された人気のアプリケーションパフォーマンス監視 (APM) サービスである Apache SkyWalking の公式 Rust エージェントです。SkyWalking は、Docker、Kubernetes、Mesos におけるマイクロサービス、クラウドネイティブ、コンテナ化アプリケーション向けに設計されており、分散トレーシングシステムでもあります。この SDK は、gRPC プロトコルを介して OpenTelemetry 向けマネージドサービスに接続し、アプリケーションからトレースデータをレポートします。

前提条件

開始する前に、以下が準備できていることを確認してください:

  • Rust ツールチェーン (rustc および Cargo)

  • Protobuf コンパイラ

    macOS

    brew install protobuf

    Debian/Ubuntu

    sudo apt install protobuf-compiler
  • OpenTelemetry 向けマネージドサービスから取得した SkyWalking エンドポイントと認証トークン (「SkyWalking エンドポイントの取得」をご参照ください)

SkyWalking エンドポイントの取得

  1. OpenTelemetry 向けマネージドサービスコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[クラスター設定] をクリックします。次に、[アクセスポイント情報] タブをクリックします。

  3. 上部のナビゲーションバーでリージョンを選択します。[クラスター情報] セクションで、[トークンの表示] をオンにします。

  4. [クライアント] セクションで、[SkyWalking] をクリックします。

  5. [関連情報] 列からエンドポイントをコピーします。

    SkyWalking endpoint information

説明

アプリケーションが Alibaba Cloud の本番環境で実行されている場合は、VPC エンドポイントを使用してください。それ以外の場合は、パブリックエンドポイントを使用してください。

Rust アプリケーションをインストルメントする

以下の手順では、skywalking-rust 0.8.0 を使用します。

ステップ 1: SkyWalking の依存関係の追加

ご利用の Cargo.toml に依存関係を追加します:

[dependencies]
skywalking = { version = "0.8.0", features = ["vendored"] }

または、次のコマンドを実行します:

cargo add skywalking --features vendored

ステップ 2: SkyWalking モジュールのインポート

イベントトラッキング対象のソースファイルに、次のインポート文を追加します:

use skywalking::{reporter::grpc::GrpcReporter, trace::tracer::Tracer};

ステップ 3: gRPC レポーターの設定

レポーターを SkyWalking エンドポイントに接続し、トークンを使用して認証します。プレースホルダーを実際の値に置き換えてください。

// これらのプレースホルダーを実際の値に置き換えます。
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());

ステップ 4: スパンの作成

SkyWalking は、エンドツーエンドの分散トレーシングのために 3 種類のスパンタイプを使用します:

スパンタイプ目的使用場面
エントリー スパン (EntrySpan)受信リクエストをキャプチャするサーバーサイドで、インバウンドリクエストからトレースコンテキストを抽出する場合
ローカル スパン (LocalSpan)プロセス内の操作をキャプチャする単一プロセス内のロジックをトレースする場合
エグジット スパン (ExitSpan)送信リクエストをキャプチャするクライアントサイドで、アウトバウンドリクエストにトレースコンテキストを挿入する場合

クライアントサイドのコード (コンテキストを伝播するためのエグジットスパンを作成):

let mut ctx = tracer.create_trace_context();
{
    // アウトバウンド呼び出しを行う前にエグジットスパンを作成します。
    let span = ctx.create_exit_span("operation1", "remote_peer");
    // ... リクエストを送信 ...
}

サーバーサイドのコード (コンテキストを受け取るためのエントリースパンを作成):

let mut ctx = tracer.create_trace_context();
{
    // 受信リクエストを処理する際にエントリースパンを作成します。
    let span = ctx.create_entry_span("operation1");
    // ... リクエストを処理 ...
}

ステップ 5: アプリケーションの再ビルドと再起動

イベントトラッキングを追加した後、アプリケーションを再ビルドして再起動します:

cargo build --release

アプリケーションがリクエストを処理すると、トレースデータが OpenTelemetry 向けマネージドサービスに送信され始めます。

サンプルコード

hyper フレームワークを使用して SkyWalking のイベントトラッキングを備えた HTTP サーバーを構築する完全な動作例については、GitHub の skywalking-demo をご参照ください。

トラブルシューティング

Protobuf 関連のエラーでビルドが失敗する

Protobuf build error

原因: Protobuf コンパイラがインストールされていないか、PATH に含まれていません。

解決策:前提条件」で説明されているように Protobuf をインストールしてから、ビルドを再試行してください。

参考資料