全部產品
Search
文件中心

Managed Service for OpenTelemetry:通過SkyWalking上報.NET應用資料

更新時間:Aug 08, 2024

通過SkyWalking為應用埋點並上報鏈路資料至Managed Service for OpenTelemetry後,Managed Service for OpenTelemetry即可開始監控應用,您可以查看應用拓撲、調用鏈路、異常事務、慢事務和SQL分析等一系列監控資料。本文介紹如何使用SkyWalking .NET Core SDK埋點並上報應用資料。

前提條件

擷取存取點資訊

新版控制台

  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的核心是一個分布式追蹤系統。

樣本Demo

樣本Demo倉庫地址:SkyWalking Demo

用SkyWalking為.NET應用埋點

  1. 安裝.NET Agent。

    進入專案根目錄,並執行以下命令。

    # 安裝.NET Agent
    dotnet add package SkyAPM.Agent.AspNetCore
    
    # 添加環境變數
    export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
    export SKYWALKING__SERVICENAME=<service-name>
  2. 配置.NET Agent屬性。

    產生skyapm.json檔案。

    • 方法1:使用skyapm命令列工具SkyAPM.DotNet.CLI產生屬性設定檔。

    • dotnet tool install -g SkyAPM.DotNet.CLI
      
      # 環境變數設定,/path/to需要替換成您的.dotnet路徑
      export PATH="$PATH:/path/to/.dotnet/tools/"             
      dotnet skyapm config <service-name> <endpoint>
    • 方法2:直接在專案根目錄建立設定檔skyapm.json,並將以下內容複寫到檔案中。

    • {
        "SkyWalking": {
          "ServiceName": <service-name>,
          "Namespace": "",
          "HeaderVersions": [
            "sw8"
          ],
          "Sampling": {
            "SamplePer3Secs": -1,            
            "Percentage": -1.0,
            "LogSqlParameterValue": false
          },
          "Logging": {
            "Level": "Information",
            "FilePath": "logs/skyapm-{Date}.log"
          },
          "Transport": {
            "Interval": 3000,
            "ProtocolVersion": "v8",
            "QueueSize": 30000,
            "BatchSize": 3000,
            "gRPC": {
              "Servers": <endpoint>,
              "Authentication": <token>,
              "Timeout": 100000,
              "ConnectTimeout": 100000,
              "ReportTimeout": 600000
            }
          }
        }
      }

    屬性說明:

    • 必填項

      • <service-name>:服務名稱。

      • <endpoint>:前提條件中擷取的存取點。

      • <token>:前提條件中擷取的存取點鑒權令牌。

    • 可選項

      • SamplePer3Secs:每三秒採樣數。

      • Percentage:採樣百分比,例如10%採樣則配置為10。

      • Logging:日誌記錄與調試。Level表示記錄層級,FilePath表示記錄檔儲存的位置以及檔案名稱。

  3. 重啟.NET專案。

    dotnet run
  1. 查看Agent本地日誌記錄。運行專案時,skyapm-<date>.log記錄檔會在專案logs檔案夾下產生,如果資料上報不成功,可以參考log檔案進行調試和修改。

    image.png

參考資訊

您可以參考以下命令從源碼構建。

# 下載原始碼
git clone https://github.com/SkyAPM/SkyAPM-dotnet.git

# 進入根目錄
cd SkyAPM-dotnet/

# 切換到目標tag
git checkout [tagname]

git submodule init
git submodule update

dotnet restore

dotnet build src/SkyApm.Transport.Grpc.Protocol
dotnet build skyapm-dotnet.sln

常見問題

無法使用dotnet-skyapm工具建立skyapm.json設定檔,報錯如下:image.png

  • 解決方案一(推薦):dotnet-skyapm的作用只有一個,即產生skyapm-dotnet agent的屬性設定檔,您可以直接手動建立一個skyapm.json,並按照上文中的方式配置屬性。

  • 解決方案二:使用dotnet 6.0。