您现在的位置是:首页 > 文章详情

.NET Core Agent

日期:2018-10-07点击:530

.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 项目。 构建项目后,会自动生成项目文件中的构建目标:
  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%.dotnetx64additionalDepsStartupDiagnostics\
  • 运行示例应用
  • 请求 /services 终结点以查看应用的注册服务。 请求 /diag 终结点以查看诊断信息。
    /services


/diag

总结

用第三种方式就可以实现Automatic-Agent,在此感谢skywalking-netcore的付出.
这里可能没有将清楚agent的概念,还请大家自行补脑。
如有补充或错误请指出,谢谢!

原文链接:https://yq.aliyun.com/articles/648321
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章