.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怎么做的?)。
新的希望
最近看到?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 項目使用 PowerShell 修改其 StartupDiagnostics.deps.json 文件。 默認情況下,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的概念,還請大家自行補腦。
如有補充或錯誤請指出,謝謝!
原文地址:?https://www.cnblogs.com/kingreatwill/p/9756222.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的.NET Core Agent的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net core集成CAP(分布
- 下一篇: ASP.NET Core应用程序容器化、