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

.NET Core Agent的更多相关文章

  1. 为 Neutron 准备物理基础设施(II) - 每天5分钟玩转 OpenStack(76)

    本节将按照上一节的规划安装配置控制节点和计算节点. 控制节点 devstack-controller 步骤如下 安装 Ubuntu 14.04 此处省略 256 个字 配置网卡 编辑 /etc/net ...

  2. SQLMAP源码分析-目录结构

    -----------------------------------------------------------------------------│  README.md│  sqlmap.c ...

  3. JADE提升篇

    以下如果未特殊声明,都在JADE管理器中运行,然后再Eclipse控制台中查看! JADE行为类 在前面的例子中,Agent所作的工作都定义在了setup方法中,实际上它具有的行为和执行的动作都应该定 ...

  4. JADE平台入门

    相关介绍: JADE(Java Agent Development Framework,Java智能体开发框架) 用途: Java智能体开发框架 开发者: TILAB 主要功能: AMS.DF.ACC ...

  5. openstack之neutron linuxbridge + vlan组网

    linuxbridge是和linuxbridge plugin匹配的core agent,主要实现L2层的功能和security group的功能.security group的功能逐渐会被neutr ...

  6. OpenStack(企业私有云)万里长征第三步——调试成功

    一.前言 折腾了一两个月(中间有事耽搁了半个月),至今日基本调试成功OpenStack,现将中间的部分心得记录下来. 二.环境 使用的是devstack newton版.具体部署过程可以参考cloud ...

  7. idea jdk版本问题

    问题描述: Information:Using javac 1.6.0_43 to compile java sourcesInformation:java: Errors occurred whil ...

  8. 手把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)

    前言 什么是APM?全称:Application Performance Management 可以参考这里: 现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体 ...

  9. SQLMAP源码分析(一)

    说起来,学习Python很大一部分原因是由于对WEB安全的兴趣以及对SQLMAP这款工具的好奇,曾经设想学完Python基础就读一读SQLMAP源码,然而懒病一犯,随之就大江东去.近来,又重新燃起了读 ...

随机推荐

  1. C++ STL学习之 空间配置器(allocator)

    众所周知,一般情况下,一个程序包括数据结构和相应的算法,而数据结构作为存储数据的组织形式,与内存空间有着密切的联系. 在C++ STL中,空间配置器便是用来实现内存空间(一般是内存,也可以是硬盘等空间 ...

  2. 移动iptv安装三方软件

    1.思路:  分为硬件和软件. a.硬件是ttl直接上串口,弄得比较复杂,且容易损坏盒子,先不考虑 b.软件:抓包获取iptv的请求数据,将移动光猫的iptv出口接到交换机上,电脑和盒子接入到同一个交 ...

  3. 玩转PIL >>> 玩转photo

    前:1.使用图片放在文件最后,需要的请自行下载 2.运行环境win10家庭版,已经安装好pillow库 一.学习总结 PIL库支持图像的储存,显示和处理,几乎能处理所有的图片格式,可以完成对图像的缩放 ...

  4. Jsoup解析XML

    先导入jsoup.jar  包 方法1:不推荐,了解即可 方法 方法3: 后期学习主流

  5. 用matlab画两个曲面的图

    求助!!用matlab画两个曲面的图 这是我写的程序,但是运行不出来,麻烦帮我修改一下,谢谢!!clearallcloseall[x,y]=meshgrid(0:.1:60);z1=(25*y-25* ...

  6. fork()相关的源码解析

    fork()的真正执行采用的是do_fork()函数,所以下文将从do_fork()函数对fork()进行源码解析.下图是do_fork()的源码函数设计: 从上图我们可以看到do_fork()涉及到 ...

  7. [小程序] 微信小程序 picker 中range-key中必须带单引号

    原文地址:http://blog.csdn.net/u012329294/article/details/74906504 <view class="section"> ...

  8. Python模拟ICMP包

    主要使用Scapy来完成 基础环境 VM1(192.168.1.226) | | VM2(192.168.1.125) vm1封装icmp包发给vm2 vm1脚本: #! /usr/bin/env p ...

  9. 如何在Jenkins上配置一个可以从其它Job取回Artifact的Job

    今天因为工作上的需求,需要在Jenskin上配置一个job, 它应该可以从其它所选择的Job中取回Artifact. 首先,在"构建"步骤中添加 "Copy Artifa ...

  10. 一个handle使用更新线程的实例

    handle更新线程实例 package com.example.administrator.handle; import android.app.Activity;import android.os ...