https://www.cnblogs.com/sunyuliang/p/11424848.htmlhtml
當咱們用不少服務時,各個服務間的調用關係是怎麼樣的?各個服務單調用的順序\時間性能怎麼樣?服務出錯了,究竟是哪一個服務引發的?這些問題咱們用什麼方案解決呢,之前的方式是各個系統本身單獨作日誌,出了問題從暴出問題的服務開始一個一個服務的排查,耗時耗力,有些日誌不全的,還不必定查得出來。好在如今有Skywalking鏈路追蹤系統,能夠不用寫任何代碼,就追蹤到各個服務間的調用關係和性能狀態等。web
本文將從0開始搭建兩個webapi項目,使用Skywalking來追蹤他們之間的調用關係及響應時間。開發環境爲VisualStudio2019json
1:安裝Skywalking,可參考:http://www.javashuo.com/article/p-yufxksha-kv.html,本列中搭建好後的Skywalking服務器地址爲:192.168.150.134api
{ "SkyWalking": { "ServiceName": "Demo01", "Namespace": "", "HeaderVersions": [ "sw6" ], "Sampling": { "SamplePer3Secs": -1, "Percentage": -1.0 }, "Logging": { "Level": "Debug", "FilePath": "logs/skyapm-{Date}.log" }, "Transport": { "Interval": 3000, "ProtocolVersion": "v6", "QueueSize": 30000, "BatchSize": 3000, "gRPC": { "Servers": "192.168.150.134:11800", "Timeout": 10000, "ConnectTimeout": 10000, "ReportTimeout": 600000 } } } }
2.3: 將skyapm.json文件的屬性」複製到輸出目錄「 修改成 」若是較新則複製」服務器
2.4:展開項目的Properties,打開launchSettings.json文件,在其中的環境變量中加入 "SKYWALKING__SERVICENAME": "asp-net-core-frontend" frontend
2.5:到目前skywalking就已經成功引入到系統中了。接下來咱們來驗證一下是否正常,直接Ctrl+F5啓動項目,訪問https://localhost:44313/api/valuesasync
2.6:訪問Skywalking管理後臺(記得替換一下IP)http://192.168.150.134:8080/trace 。手動選一下時間範圍,結束時間選明天(選當時時間會搜索不到數據,不知道是時區仍是skywalking的bug),點擊搜索。能夠看到本次訪問的追蹤信息已經同步到了Skywalking中。分佈式
以上單個系統的追蹤就完成了,接下來咱們再建立一個項目,步驟和第2步基本同樣,看看多系統的追蹤,這個纔是Skywalking的價值所在。性能
{ "SkyWalking": { "ServiceName": "Demo02", "Namespace": "", "HeaderVersions": [ "sw6" ], "Sampling": { "SamplePer3Secs": -1, "Percentage": -1.0 }, "Logging": { "Level": "Debug", "FilePath": "logs/skyapm-{Date}.log" }, "Transport": { "Interval": 3000, "ProtocolVersion": "v6", "QueueSize": 30000, "BatchSize": 3000, "gRPC": { "Servers": "192.168.150.134:11800", "Timeout": 10000, "ConnectTimeout": 10000, "ReportTimeout": 600000 } } } }
3.3: 將skyapm.json文件的屬性」複製到輸出目錄「 修改成 」若是較新則複製」spa
3.4:展開項目的Properties,打開launchSettings.json文件,在其中的環境變量中加入 "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore"
3.5:在ValuesController.cs中添加引用: System.Net.Http ,經過HttpClient依次調用Demo01的兩個方法,裏面的https://localhost:44313對應爲咱們的Demo01項目。具體Get方法代碼以下:
// GET api/values [HttpGet] public async Task<string> Get() { var client = new HttpClient(); await client.GetStringAsync("https://localhost:44313/api/values/1"); return await client.GetStringAsync("https://localhost:44313/api/values"); }
3.6:Ctrl+F5啓動項目,訪問http://localhost:21143/api/values
3.7:訪問Skywalking管理後臺(記得替換一下IP)http://192.168.150.134:8080/trace 。手動選一下時間範圍,結束時間選明天(選當時時間會搜索不到數據,不知道是時區仍是skywalking的bug),點擊搜索。能夠看到本次訪問兩系統單的調用關係圖已經同步到了Skywalking中
以上多個系統間的追蹤也就都完成了,徹底不用寫代碼,配置一下就行了。