.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%.dotnet\x64\additionalDeps\StartupDiagnostics
  • 运行示例应用
  • 请求 /services 终结点以查看应用的注册服务。 请求 /diag 终结点以查看诊断信息。
    /services

    /diag

总结

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

最新文章

  1. 前端学PHP之面向对象系列第三篇——三大特性
  2. Linux进程间通信(九):数据报套接字 socket()、bind()、sendto()、recvfrom()、close()
  3. 动态调用webservice及WCF服务
  4. ubuntu openstack packaages
  5. 1089-Duplicate Removal
  6. System Operations on AWS - Lab 4W - Monitoring (Windows)
  7. 【HDOJ】5057 Argestes and Sequence
  8. C#操作Flash动画
  9. SGU 310. Hippopotamus( 状压dp )
  10. [每日一题] 11gOCP 1z0-052 :2013-09-5 runInstaller oracle of no swap
  11. ucos事件邮箱信号量队列详解
  12. [BZOJ1602] [Usaco2008 Oct] 牧场行走 (LCA)
  13. iOS 动画总结—UIView动画
  14. Windows系统java下载与安装
  15. Scala抽象类型
  16. centos系统有多个内核,修改默认启动内核
  17. python连接Linux服务器
  18. Gartner:2018人工智能技术成熟度曲线
  19. java多态性方法的重写Overriding和重载Overloading详解
  20. 非ROOT用户不能识别声卡问题

热门文章

  1. python一次性解压多层嵌套zip压缩包
  2. 图解:window与BOM的关系
  3. iOS 控制器的生命周期(UIController)
  4. Azure基础(二)- 核心云服务 - Azure简介
  5. 递归函数 Vue ElementUI
  6. WPF中使用DataGrid时操作列按钮问题
  7. JAVA String中文乱码
  8. 一个Monkey测试的小坑
  9. Java文件类型工具类
  10. 《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core