专栏首页.net core在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统
原创

在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统

1.APM工具的选取

Apm监测工具很多,这里选用网上比较火的一款Skywalking。

Skywalking是一个应用性能监控(APM)系统,Skywalking分为服务端Oap、管理界面UI、以及嵌入到程序中的探针Agent部分,大概工作流程就是在程序中添加探针采集各种数据发送给服务端保存,然后在UI界面可以看到收集过来的各种监测数据,来完成它的核心使命:性能监控和分布式调用链追踪能力。下图是skywalking官方的一个图,也可以说明这三者之间的关联关系

2.服务端(OAP)和界面(UI)的安装

这里直接在apache地址:http://skywalking.apache.org/downloads/ 下载了一个6.6.0版本的zip文件,由于之前在本地的windows上安装过,发现安装包里面有两个启动文件,分别为:startup.bat和startup.sh,分别用于window上启动和linux启动,这里我直接将之前下载好的上传到linux上来安装。

上传后解压缩,就会得到以下截图的几个文件

进入到config配置目录下面,有一个名称叫application.yml的文件

对这个配置文件进行编辑 vim application.yml

我们直接定位到数据存储部分,也就是节点storage,官方文档里面也有说明,为了方便快速入门,配置文件默认采用的是H2存储,但是推荐使用ElasticSearch存储,由于之前我安装过Exceptionless,在这台机器上已经安装过elasticsearch(如果没有安装过可以网上找下,有很多这方面的文章),所以我这里将H2部分注释掉,然后将elasticsearch部分放开,并修改红色方框里的两个配置文件:

12

nameSpace: ${SW_NAMESPACE:"exceptionless"}clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9300}

需要注意的是:第一个SW_NAMESPACE需要与ElasticSearch配置的cluster_name名称一致

启动skywalking会占用四个端口:8080,10800,11800,12800,由于我本机安装过apollo,8080ui端口已经被占用,所以这里我必须要先修改UI界面使用的8080端口才能启动它。

开始修改UI界面使用的8080端口(如果你的8080端口并没有被占用,可以跳过,不用修改)

回到配置目录的上一级:cd ..

可以看到一个webapp的文件夹

进入这个目录:cd webapp/

然后对webapp.yml文件进行修改

这里我将原来server界面下面的port从8080改到8088,然后保存

配置文件修改完了,开始启动skywalking的服务端和UI界面,启动脚本放在目录:apache-skywalking-apm-bin/bin 里面

上面有说到startup.bat和startup.sh分别用在windows上和linux上启动,这里用./startup.sh

启动命令执行完成之后可以看到OAP和Web两个项目启动成功的提示,也就是我们说的服务端和UI界面。

验证一下,通过配置的ip+8088端口(如果没有修改则是默认的8080)来访问一下界面,如图:

至此,我们准备工作做完了,下面我们在程序中安装探针,来采集数据.

3.安装探针(Agent)采集数据

由于Skywalking本身是采用java编写的,所以SkyApm-dotnet这个项目就是专门为 .NET 开发的探针,目前支持 ASP.NET Core 以及 ASP.NET,下面我们将SkyApm-dotnet无侵入式的集成到.Net Core实现的微服务项目中

第一步:使用下面的命令来进行 Agent 的安装,这里据说需要以管理员身份运行

dotnet tool install -g SkyAPM.DotNet.CLI

第二步:添加环境变量,可以直接在launchSettings.json文件中添加以下代码来设置

"environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore",
        "SKYWALKING__SERVICENAME": "Demo.MicroServer.UserService"
      }

第三步:在程序中安装NuGet包:SkyAPM.Agent.AspNetCore

第四步:在应用程序根目录下使用以下命令生成skyapm.json的配置文件,[service name]替换为服务的名称,[server]替换为Skywalking安装的计器ip

otnet skyapm config [service name] [server]:11800

执行完成之后可以看到目录下面已经生成了一个skyapm.json的文件,将其属性复制到输出目录设置为如果较新则复制,我这里是用之前发布在github上的微服务框架中的一个实例来测试的,所有代码均已上传,需要的可以通过页面又上角Github地址获取代码

4.采集数据并查看

在Swagger中随便调用几个接口来测试数据的采集情况,然后到UI界面查看数据,流程顺利的话,可以看到数据已经都有采集到

基本工作都已经完成,这个里面还有很多玩法,快动手试试吧。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hexo快速构建个人小站-Hexo初始化和将项目托管在Github(一)

    相信每个程序员都有自己做过个人网站,博客之类的项目了,但是现在还在维护吗?反正我前前后后做过2到3个了,维护一段时间后因为一些不可逆的原因(主要是懒)都没有维护...

    Peyshine
  • Hexo快速构建个人小站-Fulid主题下添加Valine评论系统(三)

    前面两章完成了Hexo的初始化和部分自定义的功能,对于只想展示文章来说也是没有问题的,但是无法与读者进行互动,无论读者对错误的反馈还是对优质内容的鼓励这些统统都...

    Peyshine
  • 微服务框架Demo.MicroServer运行手册

    之前分享过一个微服务开发框架, “享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exce...

    Peyshine
  • 懒猿福利:自动安装 Windows 10 开发环境

    程序员最讨厌的事情之一可能就是装电脑了。因为程序员的电脑环境配置和正常人的很不一样。通常,人工安装一台新开发机得花上几个小时。得让这个过程自动化,毕竟编程的精髓...

    Edi Wang
  • Error: Protocol error, got "H" as reply type byte

    原来是 启动 redis-server的时候 没有加上配置文件,于是把redis.conf 复制到/etc/下一份,

    MickyInvQ
  • 什么是Repli-seq?

      最近接触到一个新的测序method:Repli-seq!这篇笔记就是为了学习和思考浅层思考Repli-seq

    liu_ll
  • 剑指Offer-用两个栈实现队列

    package StackAndQueue; import java.util.Stack; /** * 用两个栈实现队列 * 用两个栈来实现一个队列,...

    武培轩
  • Windows下iPython的安装与报错解决方法

    沈唁
  • Python 模块与包

    模块就是一个包含了python定义和申明的文件,文件名就是模块的名字加上.py的后缀/

    py3study
  • 死磕-单例模式

    总结一句话,如何线程安全的创建唯一实例对象。 先看一下Java中如何具体实现单例。

    三好码农

扫码关注云+社区

领取腾讯云代金券