.NET Core Agent

.NET Core Agent

熟悉java的朋友確定知道java agent,當我看到java agent時我非常羨慕,我當時就想.net是否也有相似的功能,因而就搜索各類資料,結果讓人很失望。當時根據 https://github.com/OpenSkywalking/skywalking-netcore 找到這個 https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/profiling-overview 但是不知道怎麼用(求指教,聽雲的APM怎麼作的?)。java

新的但願

最近看到 https://github.com/OpenSkywalking/skywalking-netcore 更新了,看了一下,找到這個 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/platform-specific-configurationgit

動手測試

首先下載源碼 https://github.com/aspnet/Docs/tree/master/aspnetcore/fundamentals/host/platform-specific-configuration/samples/2.x ,這裏先介紹下《在 ASP.NET Core 中使用 IHostingStartup 從外部程序集加強應用》的三種方式github

從 NuGet 包激活

  • 使用 dotnet pack 命令編譯 HostingStartupPackage 包。
  • 將包的程序集名稱 HostingStartupPackage 添加到 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES 環境變量中。set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=HostingStartupPackage
  • 編譯並運行應用。 加強型應用中存在包引用(編譯時引用)。 應用項目文件中的 指定包項目的輸出 (../HostingStartupPackage/bin/Debug) 做爲包源。 這容許應用使用該包而無需將包上傳到 nuget.org。有關詳細信息,請參閱 HostingStartupApp 項目文件中的說明。
  • set ASPNETCORE_ENVIRONMENT=Development
  • dotnet HostingStartupApp.dll 訪問效果以下:

從類庫激活

  • 使用 dotnet build 命令編譯 HostingStartupLibrary 類庫。
  • 將類庫的程序集名稱 HostingStartupLibrary 添加到 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES 環境變量中。set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=HostingStartupLibrary
  • bin - 經過將類庫編譯輸出中的 HostingStartupLibrary.dll 文件複製到應用的 bin/Debug 文件夾,將類庫程序集部署到應用。
  • set ASPNETCORE_ENVIRONMENT=Development
  • dotnet HostingStartupApp.dll 訪問效果以下:

從運行時存儲部署的程序集激活(重點,能夠實現Automatic-Agent)

  • StartupDiagnostics 項目使用 PowerShell 修改其 StartupDiagnostics.deps.json 文件。 默認狀況下,Windows 7 SP1 和 Windows Server 2008 R2 SP1 及之後版本的 Windows 上安裝有 PowerShell。 若要在其餘平臺上獲取 PowerShell,請參閱安裝 Windows PowerShell。
  • 構建 StartupDiagnostics 項目。 構建項目後,會自動生成項目文件中的構建目標:
  1. 觸發 PowerShell 腳本以修改 StartupDiagnostics.deps.json 文件。
  2. 將 StartupDiagnostics.deps.json 文件移動到用戶配置文件的 additionalDeps 文件夾。
  • 在承載啓動目錄的命令提示符處執行 dotnet store 命令,將程序集及其依賴項存儲在用戶配置文件的運行時存儲中:
    dotnet store --manifest StartupDiagnostics.csproj --runtime
    對於 Windows,該命令使用 win7-x64 運行時標識符 (RID)。 爲其餘運行時提供承載啓動時,請替換爲正確的 RID。
  • 設置環境變量:
  1. set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=StartupDiagnostics
  2. set DOTNET_ADDITIONAL_DEPS=%UserProfile%.dotnet\x64\additionalDeps\StartupDiagnostics
  • 運行示例應用
  • 請求 /services 終結點以查看應用的註冊服務。 請求 /diag 終結點以查看診斷信息。
    /services

    /diag

總結

用第三種方式就能夠實現Automatic-Agent,在此感謝skywalking-netcore的付出.
這裏可能沒有將清楚agent的概念,還請你們自行補腦。
若有補充或錯誤請指出,謝謝!json

相關文章
相關標籤/搜索