歡迎光臨
每天分享高質量文章

在 ASP.NET Core 中整合 Skywalking APM

來自:Savorboard

連結:https://www.cnblogs.com/savorboard/p/asp-net-core-skywalking.html

前言

大家好,今天給大家介紹一下如何在 ASP.NET Core 專案中整合 Skywalking,Skywalking 是 Apache 基金會下麵的一個開源 APM 專案,有些同學可能會 APM 是乾什麼用的還不是太瞭解,那麼下麵我就簡單的來說一下。


APM 全稱是 (Application Performance Monitor)應用效能監測軟體,主要是用來處理以及追蹤分散式系統中的應用程式的效能問題,從而快速找出問題的根源,進而可以讓開發者定位問題從而提升應用程式效能。


Skywalking 是一個APM系統,為微服務架構和雲原生架構系統設計,它透過客戶端探針自動收集追蹤效能所需的指標,併進行分散式追蹤。透過這些呼叫鏈路以及指標,Skywalking 可以感知應用間關係和服務間關係,併進行相應的指標統計及展示。


.NET 探針


為了能夠讓APM的服務端正確的收集到追蹤及分析所需的指標,就需要有客戶端程式附屬到你的應用程式上進行資料的上報,那麼這個附屬的程式就叫做探針(Agent)。


Skywalking 使用 Java 程式開發,預設提供了 Java 探針,那麼在 .NET 系統中,就需要有 .NET 相關的探針才能夠正確的將資料上報的服務端,所以 skywalking-netcore 這個專案就是專門為 .NET 開發的探針,目前支援 ASP.NET Core 以及 ASP.NET,下麵我具體的來說一下這個專案吧。


.NET 探針專案:https://github.com/OpenSkywalking/skywalking-netcore


這個專案位於 OpenSkywalking 組織下是由 Skywalking 作者 吳晟 大佬發起的,主要開發者是 Lemon 同學,雖然我也是組織成員之一,但是隻做了一些打雜的工作以及對 CAP 訊息追蹤的支援工作,感興趣的同學歡迎 Github Star 一波…

好了,我們還是主要說一下怎麼在 ASP.NET Core 中整合 Skywalking 吧。


ASP.NET Core 整合


在新版本的 Skywalking .NET Agent 中,我們實現了對 ASP.NET Core 應用程式無入侵的整合方式,這使得你可以更加方便的開啟或者關閉探針資料的收集而不用修改任何程式碼。比如你可以在生產環境遇到效能問題時候啟動它快速的定位問題,而在問題處理完成之後再關掉,非常的方便,下麵我們來說一下整合的步驟。


Step 1


我們提供給了dotnet 的擴充套件 CLI 工具以供開發者使用從而進行整合,首先使用下麵的命令來進行 Agent 的安裝


dotnet tool install -g SkyWalking.DotNet.CLI


安裝完成之後,你可以在命令列中使用 dotnet skywalking 或者是 dotnet-skywalking 提供的命令來安裝 .NET Agent 到你的本機或者容器中。


// 註意需要在管理員許可權下執行
dotnet skywalking install

Step 2


接下來,我們需要向環境變數中新增幾個引數:


Windows


set DOTNET_ADDITIONAL_DEPS=%PROGRAMFILES%\dotnet\x64\additionalDeps\skywalking.agent.aspnetcore
set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCore

Linux


export DOTNET_ADDITIONAL_DEPS=/usr/local/share/dotnet/x64/additionalDeps/skywalking.agent.aspnetcore
export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCore


Step 3


然後,你需要給你要整合的應用取一個名字,例如我使用以下方式建立一個示例程式:


dotnet new mvc -n mvcdemo


以上命令會生成一個名為 mvcdemo 預設的 ASP.NET MVC 專案,我們需要給專案搞一個代號以便讓服務端識別,就取代號名為 mvc_sample 吧,然後把這個代號使用下麵的命令也新增到環境變數裡面。


**Windows**
set SKYWALKING__APPLICATIONCODE=mvc_sample
**Linux**
export SKYWALKING__APPLICATIONCODE=mvc_sample


Step 4


最後一步就是我們需要第一步的 CLI 工具生成一個配置檔案,從而配置各種引數,使用以下命令生成一個配置檔案:


// mvc_sample 為上面 step 3 的代號,  localhost:11800 為 Skywalking 服務端的地址
dotnet skywalking config mvc_sample localhost:11800


上面的命令會在你的專案檔案夾下生成一個名為 skywalking.json 的json檔案,裡面是配置資訊,你可以酌情修改,如下:


skywalking.json


{
  "SkyWalking": {
    "ApplicationCode""Frontend",
    "SpanLimitPerSegment"300,
    "Sampling": {
      "SamplePer3Secs"-1
    },
    "Logging": {
      "Level""Information",
      "FilePath""logs\\SkyWalking-{Date}.log"
    },
    "Transport": {
      "Interval"3000,
      "PendingSegmentLimit"30000,
      "PendingSegmentTimeout"1000,
      "gRPC": {
        "Servers""localhost:11800",
        "Timeout"2000,
        "ConnectTimeout"10000
      }
    }
  }
}


以上,就是所有的配置工作,接下來就可以開始啟動了。


啟動你的專案


啟動很簡單,按照你習慣的常規方式使用 dotnet run 或者 dotnet mvcdemo.dll 來執行你的專案即可。


然後你就可以去 Skywalking 服務端 UI 上面看到 API 的追蹤資訊了。


下麵是Skywalking的幾個追蹤介面截圖,大家可以用 UI 上大致瞭解下:


最後


最後當然是廣告時間,哈哈哈~~~

你還在為瞭解訊息佇列的複雜機制而苦惱嗎?

你還在為找不到一個順手的 EventBus 搜遍百度谷歌嗎?

你還在為專案中遇到的分散式事務問題而抱頭痛哭嗎?

不要慌,不要急,有了她,讓你少掉發!早下班!

她就是 CAP:https://github.com/dotnetcore/CAP


一個分散式事務解決方案,同時具有 EventBus 的所有功能,什麼?你說價格?不要99,也不要9塊9,免費開源MIT,重要的是有 手把手影片


有了她,讓你多些時間陪陪家人,會會朋友,做做大保健~

如果你覺得這個開源專案還不錯,給個Github Star 支援一下那就太好了。


●編號162,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

Web開發

更多推薦18個技術類公眾微信

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂