zoukankan      html  css  js  c++  java
  • .NET Core Agent

    .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的概念,还请大家自行补脑。
    如有补充或错误请指出,谢谢!

  • 相关阅读:
    明确目标
    适应环境
    解决问题的方式
    超市收银系统设计
    功能开发流程
    JS代码和OC代码的相互调用
    app上架流程的整理
    手动创建单例
    Python 安装mysqldb
    Python UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
  • 原文地址:https://www.cnblogs.com/kingreatwill/p/9756222.html
Copyright © 2011-2022 走看看