在 ASP.NET Core 中集成 Skywalking APM


前言

大家好,今天給大家介紹一下如何在 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 上大致了解下:

1.png

2.png

3.png

最后

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

你還在為了解消息隊列的復雜機制而苦惱嗎?

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

你還在為項目中遇到的分布式事務問題而抱頭痛哭嗎?

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

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

GitHub stars
GitHub forks

一個分布式事務解決方案,同時具有 EventBus 的所有功能,什么?你說價格?不要99,也不要9塊9,免費開源MIT,重要的是有 手把手視頻
有了她,讓你多些時間陪陪家人,會會朋友,做做大保健~

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

如果你覺得本篇文章對你有幫助的話,可以關注一下博主,順手點個【推薦】哦。


本文地址:http://www.cnblogs.com/savorboard/p/asp-net-core-skywalking.html
作者博客:Savorboard
本文原創授權為:署名 - 非商業性使用 - 禁止演繹,協議普通文本 | 協議法律文本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM