.NET Core Agent
.NET Core Agent
熟悉java的朋友肯定知道java agent,當我看到java agent時我很是羨慕,我當時就想.net是否也有類似的功能,於是就搜尋各種資料,結果讓人很失望。當時根據 ofollow,noindex" target="_blank">https://github.com/OpenSkywalking/skywalking-netcore 找到這個 https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/profiling-overview 可是不知道怎麼用(求指教,聽雲的APM怎麼做的?)。
新的希望
最近看到 https://github.com/OpenSkywalking/skywalking-netcore 更新了,看了一下,找到這個 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/platform-specific-configuration
動手測試
首先下載原始碼 https://github.com/aspnet/Docs/tree/master/aspnetcore/fundamentals/host/platform-specific-configuration/samples/2.x ,這裡先介紹下《在 ASP.NET Core 中使用 IHostingStartup 從外部程式集增強應用》的三種方式
從 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 專案使用 Shell/">PowerShell 修改其 StartupDiagnostics.deps.json 檔案。 預設情況下,Windows+7/">Windows 7 SP1 和 Windows Server 2008 R2 SP1 及以後版本的 Windows 上安裝有 PowerShell。 若要在其他平臺上獲取 PowerShell,請參閱安裝 Windows PowerShell。
- 構建 StartupDiagnostics 專案。 構建專案後,會自動生成專案檔案中的構建目標:
- 觸發 PowerShell 指令碼以修改 StartupDiagnostics.deps.json 檔案。
- 將 StartupDiagnostics.deps.json 檔案移動到使用者配置檔案的 additionalDeps 資料夾。
- 在承載啟動目錄的命令提示符處執行 dotnet store 命令,將程式集及其依賴項儲存在使用者配置檔案的執行時儲存中:
dotnet store --manifest StartupDiagnostics.csproj --runtime對於 Windows,該命令使用 win7-x64 執行時識別符號 (RID) 。 為其他執行時提供承載啟動時,請替換為正確的 RID。 - 設定環境變數:
- set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=StartupDiagnostics
- set DOTNET_ADDITIONAL_DEPS=%UserProfile%.dotnet\x64\additionalDeps\StartupDiagnostics
- 執行示例應用
- 請求 /services 終結點以檢視應用的註冊服務。 請求 /diag 終結點以檢視診斷資訊。
/services
/diag
總結
用第三種方式就可以實現Automatic-Agent,在此感謝skywalking-netcore的付出.
這裡可能沒有將清楚agent的概念,還請大家自行補腦。
如有補充或錯誤請指出,謝謝!