.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 项目。 构建项目后,会自动生成项目文件中的构建目标:
- 触发 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%.dotnetx64additionalDepsStartupDiagnostics\
- 运行示例应用
- 请求 /services 终结点以查看应用的注册服务。 请求 /diag 终结点以查看诊断信息。
/services
/diag
总结
用第三种方式就可以实现Automatic-Agent,在此感谢skywalking-netcore的付出.
这里可能没有将清楚agent的概念,还请大家自行补脑。
如有补充或错误请指出,谢谢!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
装饰器
谈装饰器前,还要先要明白一件事,Python 中的函数和 Java、C++不太一样,Python 中的函数可以像普通变量一样当做参数传递给另外一个函数,例如: def foo(): print("foo") def bar(func): func() bar(foo) 正式回到我们的主题。装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景,装饰器是解决这类问题的绝佳设计。有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码到装饰器中并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。 先来看一个简单例子,虽然实际代码可能比这复杂很多: def foo(): print('i am foo') 现在有一个新的需求,希望可以记录下函数的执行日志,于是在代码中添加日志代码: def foo(): print('i am foo') logging.info("foo is running")...
- 下一篇
Python全栈 Web(Ajax 概述 创建)
什么是AJAX Asynchronous JavaScript And Xml 异步的 JS 和 Xml 通过js异步的向服务器发送请求并接受响应数据 同步访问: 当客户端向服务器发送请求时 服务器在处理的过程中浏览器只能等待 异步访问: 当客户端向服务器发送请求时 服务器在处理的过程中 客户端可以做其他操作 不需要一直等待 AJAX优点: 异步访问 局部刷新 使用场合: 搜索建议 表单验证 前后端完全分离 AJAX核心对象 异步核心对象(XMLHttprequest): 什么是XMLHTTPRequest 代替浏览器向服务器发送异步请求并接受响应的 “异步对象” 是由js来提供的 创建异步对象 主流的异步对象是XMLHTTPRequest类型的 并且主流浏览器(IE+ Chrome Firefox Safari Opera)都支持 低版本浏览器中(IE6以下)就不
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果