通過SkyWalking為應用埋點並上報鏈路資料至Managed Service for OpenTelemetry後,Managed Service for OpenTelemetry即可開始監控應用,您可以查看應用拓撲、調用鏈路、異常事務、慢事務和SQL分析等一系列監控資料。本文介紹如何使用SkyWalking .NET Core SDK埋點並上報應用資料。
前提條件
背景資訊
SkyWalking是一款廣受歡迎的國產APM(Application Performance Monitoring,應用效能監控)產品,主要針對微服務、Cloud Native和容器化(Docker、Kubernetes、Mesos)架構的應用。SkyWalking的核心是一個分布式追蹤系統。
樣本Demo
樣本Demo倉庫地址:SkyWalking Demo
用SkyWalking為.NET應用埋點
安裝.NET Agent。
進入專案根目錄,並執行以下命令。
# 安裝.NET Agent dotnet add package SkyAPM.Agent.AspNetCore # 添加環境變數 export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore export SKYWALKING__SERVICENAME=<service-name>配置.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表示記錄檔儲存的位置以及檔案名稱。
重啟.NET專案。
dotnet run
查看Agent本地日誌記錄。運行專案時,skyapm-<date>.log記錄檔會在專案logs檔案夾下產生,如果資料上報不成功,可以參考log檔案進行調試和修改。

參考資訊
您可以參考以下命令從源碼構建。
# 下載原始碼
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設定檔,報錯如下:
解決方案一(推薦):dotnet-skyapm的作用只有一個,即產生skyapm-dotnet agent的屬性設定檔,您可以直接手動建立一個skyapm.json,並按照上文中的方式配置屬性。
解決方案二:使用dotnet 6.0。
