日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過SkyWalking上報Rust應用數據

通過SkyWalking為應用埋點并上報鏈路數據至可觀測鏈路 OpenTelemetry 版后,可觀測鏈路 OpenTelemetry 版即可開始監控應用,您可以查看應用拓撲、調用鏈路、異常事務、慢事務和SQL分析等一系列監控數據。本文介紹如何使用SkyWalking Rust Agent埋點并上報應用數據。

前提條件

  • 已安裝protobuf。

    macOS

    brew install protobuf

    Debian-base

    sudo apt install protobuf-compiler
  • 獲取接入點信息

    新版控制臺

    1. 登錄可觀測鏈路 OpenTelemetry 版控制臺,在左側導航欄單擊接入中心

    2. 開源框架區域單擊SkyWalking卡片。

    3. 在彈出的SkyWalking面板中選擇數據需要上報的地域。

      說明

      初次接入的地域將會自動進行資源初始化。

    4. 選擇連接方式,然后復制接入點信息。

      若您的服務部署在阿里云上,且所屬地域與選擇的接入地域一致,推薦使用阿里云內網方式,否則選擇公網方式。

      image.png

    舊版控制臺

    1. 登錄可觀測鏈路 OpenTelemetry 版控制臺

    2. 在左側導航欄單擊集群配置,然后在右側頁面單擊接入點信息頁簽。

    3. 在頁面頂部選擇需要接入的地域,然后在集群信息區域打開顯示Token開關。

    4. 客戶端采集工具區域單擊SkyWalking

      相關信息列中,獲取接入點信息。

      SkyWalking接入點信息

      說明

      如果應用部署于阿里云生產環境,則選擇阿里云VPC網絡接入點,否則選擇公網接入點。

背景信息

SkyWalking是一款廣受歡迎的國產APM(Application Performance Monitoring,應用性能監控)產品,主要針對微服務、Cloud Native和容器化(Docker、Kubernetes、Mesos)架構的應用。SkyWalking的核心是一個分布式追蹤系統。

Skywalking-rust是SkyWalking的Rust Agent官方庫,可以通過接入skywalking-rust實現對Rust應用的監控,skywalking-rust目前對Rust應用的自動埋點支持較差,需要使用者手動添加埋點。

示例Demo

示例Demo倉庫地址:SkyWalking Demo

該Demo基于Rust的Web框架hyper實現了一個簡單的HTTP Server,并使用skywalking-rust手動添加埋點,向可觀測鏈路 OpenTelemetry 版控制臺上報數據。

用SkyWalking為Rust應用手動埋點

  1. 在Rust項目引入SkyWalking依賴。

    說明

    本文中以SkyWalking 0.8.0版本為例。

    方法一:直接在cargo.toml中添加依賴

    # 在[dependency]下添加
    skywalking = { version = "0.8.0", features = ["vendored"] }

    方法二:在終端執行命令

    cargo add skywalking --features vendored
  2. 在源代碼中導入SkyWalking模塊。

    # 在需要埋點的源代碼中導入模塊
    use skywalking::{reporter::grpc::GrpcReporter, trace::tracer::Tracer};

  3. 手動埋點。

    // 使用EntrySpan、LocalSpan、ExitSpan完成調用鏈手動埋點,使用這三種Span,可以完成全鏈路追蹤。
    // EntrySpan: 入口Span,服務端使用EntrySpan從Http請求中拿到鏈路追蹤上下文。
    // LocalSpan: 本地Span,同一進程內可使用該Span埋點。
    // ExitSpan: 出口Span,客戶端使用ExitSpan向Http請求中注入鏈路追蹤上下文。
    
    // 跨進程的調用鏈,可以參照下面:
    
    // client.rs:
        
    let mut ctx = tracer.create_trace_context();
    {
        do something...
        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");
        do something...
    }
  4. 配置接入點和令牌。

    您可以通過前提條件獲取接入點地址和鑒權Token。

    // <endpoint>是接入點地址,<token>是接入點鑒權Token,<service_name>是應用名稱。
    
    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());
  5. 重啟應用。

常見問題

構建Rust項目時報錯如下:image.png

問題原因:缺少protobuf,您可以參考前提條件安裝protobuf。

相關文檔

SkyWalking官網