.NET Core Agent
熟悉java的朋友肯定知道java agent,當(dāng)我看到j(luò)ava agent時我很是羨慕,我當(dāng)時就想.net是否也有類似的功能,于是就搜索各種資料,結(jié)果讓人很失望。當(dāng)時根據(jù)?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 從外部程序集增強應(yīng)用》的三種方式
從 NuGet 包激活
使用 dotnet pack 命令編譯 HostingStartupPackage 包。
將包的程序集名稱 HostingStartupPackage 添加到 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES 環(huán)境變量中。set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=HostingStartupPackage
編譯并運行應(yīng)用。 增強型應(yīng)用中存在包引用(編譯時引用)。 應(yīng)用項目文件中的?
指定包項目的輸出 (../HostingStartupPackage/bin/Debug) 作為包源。 這允許應(yīng)用使用該包而無需將包上傳到 nuget.org。有關(guān)詳細信息,請參閱 HostingStartupApp 項目文件中的說明。set ASPNETCORE_ENVIRONMENT=Development
dotnet HostingStartupApp.dll 訪問效果如下:
從類庫激活
使用 dotnet build 命令編譯 HostingStartupLibrary 類庫。
將類庫的程序集名稱 HostingStartupLibrary 添加到 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES 環(huán)境變量中。set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=HostingStartupLibrary
bin - 通過將類庫編譯輸出中的 HostingStartupLibrary.dll 文件復(fù)制到應(yīng)用的 bin/Debug 文件夾,將類庫程序集部署到應(yīng)用。
set ASPNETCORE_ENVIRONMENT=Development
dotnet HostingStartupApp.dll 訪問效果如下:
從運行時存儲部署的程序集激活(重點,可以實現(xiàn)Automatic-Agent)
StartupDiagnostics 項目使用 PowerShell 修改其 StartupDiagnostics.deps.json 文件。 默認情況下,Windows 7 SP1 和 Windows Server 2008 R2 SP1 及以后版本的 Windows 上安裝有 PowerShell。 若要在其他平臺上獲取 PowerShell,請參閱安裝 Windows PowerShell。
構(gòu)建 StartupDiagnostics 項目。 構(gòu)建項目后,會自動生成項目文件中的構(gòu)建目標:
觸發(fā) PowerShell 腳本以修改 StartupDiagnostics.deps.json 文件。
將 StartupDiagnostics.deps.json 文件移動到用戶配置文件的 additionalDeps 文件夾。
在承載啟動目錄的命令提示符處執(zhí)行 dotnet store 命令,將程序集及其依賴項存儲在用戶配置文件的運行時存儲中:
dotnet store --manifest StartupDiagnostics.csproj --runtime?
對于 Windows,該命令使用 win7-x64?運行時標識符 (RID)。 為其他運行時提供承載啟動時,請?zhí)鎿Q為正確的 RID。設(shè)置環(huán)境變量:
set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=StartupDiagnostics
set DOTNET_ADDITIONAL_DEPS=%UserProfile%.dotnet\x64\additionalDeps\StartupDiagnostics
運行示例應(yīng)用
請求 /services 終結(jié)點以查看應(yīng)用的注冊服務(wù)。 請求 /diag 終結(jié)點以查看診斷信息。
/services
/diag
總結(jié)
用第三種方式就可以實現(xiàn)Automatic-Agent,在此感謝skywalking-netcore的付出.
這里可能沒有將清楚agent的概念,還請大家自行補腦。
如有補充或錯誤請指出,謝謝!
原文地址:?https://www.cnblogs.com/kingreatwill/p/9756222.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的.NET Core Agent的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net core集成CAP(分布
- 下一篇: ASP.NET Core应用程序容器化、