Skywalking接入.net core客戶端
Skywalking服務端的搭建前一篇已經介紹過了,本篇我們將在.net core客戶端接入探針,監控.net core應用。
一. 引入nuget包
自己新建一個webAPI項目或者拿以前的項目都行。在包管理器里面搜索nuget包:SkyAPM.Agent.AspNetCore,本次使用的是0.8.0版本
二. 添加環境變量
添加環境變量ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore,添加環境變量有以下幾種方式
-
直接添加系統環境變量,這樣全部的項目都生效
-
在項目中添加,可以在
launchSettings.json
或者是在啟動項配置里面添加,兩個效果都是一樣的
三. 添加配置文件
這里也有幾種添加配置的方式,從源碼中發現,配置的加載順序是先加載默認配置( 可以進入 AddSkyWalkingDefaultConfig 查看源碼,里面含 skywalking.json 所有默認配置項 ),然后加載 appsettings.json、skywalking.json,所有 skywalking.json 的默認配置完全可以先去掉,需要的時候再設置,更簡潔點其實我們並需要 skywalking.json ,只需要使用 appsettings.json 就可以。
builder.AddSkyWalkingDefaultConfig();
builder.AddJsonFile("appsettings.json", true).AddJsonFile($"appsettings.{environmentProvider.EnvironmentName}.json", true);
builder.AddJsonFile("skywalking.json", true).AddJsonFile($"skywalking.{environmentProvider.EnvironmentName}.json", true);
1. 通過SkyWalking的腳本命令自動生成
首先通過以下命令安裝 SkyWalking DotNet CLI
dotnet tool install -g SkyWalking.DotNet.CLI
這一步安裝完成后,也可以選擇將.net core Agent到當前機器上(可選,后面寫怎么用)
dotnet skywalking install
這一步的安裝需要注意以下幾項:
- 使用管理員權限運行 cmd
- 必須切到 C 盤路徑下執行命令
- 如果出現 “Access to the path ‘06806e6c49431d12b85aaa5db07b8705d5b317’ is denied” 錯誤,請刪除 “C:/Users/用戶名/AppData/Local/Temp/skywalking.agent.aspnetcore” 后,重新執行;
安裝可能會比較慢,但是一定要等到最終輸出SkyWalking .NET Core Agent was successfully installed
才代表成功
接下來就可以使用命令來生成skywalking.json
配置文件
dotnet skywalking config [application_code] [collector_server]
{
"SkyWalking": {
"ServiceName": "your_service_name",
"Namespace": "",
"HeaderVersions": [
"sw6"
],
"Sampling": {
"SamplePer3Secs": -1,
"Percentage": -1.0
},
"Logging": {
"Level": "Information",
"FilePath": "logs/skyapm-{Date}.log"
},
"Transport": {
"Interval": 3000,
"ProtocolVersion": "v6",
"QueueSize": 30000,
"BatchSize": 3000,
"gRPC": {
"Servers": "localhost:11800",
"Timeout": 10000,
"ConnectTimeout": 10000,
"ReportTimeout": 600000
}
}
}
}
2. 直接使用.net core的配置文件appsettings.json
這種方式就比較簡單了,直接在項目里的appsettings.json里加入skywalking的配置節點就行
"SkyWalking": {
//服務名
"ServiceName": "Aggreg_2",
"Logging": {
"Level": "Information",
"FilePath": "logs\\skyapm-{Date}.log"
},
"Transport": {
"gRPC": {
//采集的地址
"Servers": "192.168.1.219:11800"
}
}
}
四. 啟動服務
啟動服務后,可以在項目文件下的log文件夾里面看到按照格式生成的日志
看到一下信息就表示接入成功了
接下來可以請求幾次,去UI界面看效果了,從圖中可以看到服務名,請求都有了
五. 擴展
目前安裝.net core Agent是通過引入nuget包,如果服務比較多的話,每一個服務都需要引入探針,由於現在skywalking的發展非常迅速,如果到時候升級的話需要更換所有服務的nuget包,非常麻煩,所以這個時候就可以用到之前提到過的安裝本地探針的方式來接入.net core應用(這個方式目前還沒試過,不過參考了相關博客),同意配置好環境變量和配置文件后,運行以下命令即可
set DOTNET_ADDITIONAL_DEPS=%PROGRAMFILES%\dotnet\x64\additionalDeps\skywalking.agent.aspnetcore
dotnet run
當然,現在skywalking發展非常迅速,很多組件也會慢慢支持,不過目前就查詢接口和sql的功能來說已經完成夠用了。