在微服务框架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部分放开,并修改红色方框里的两个配置文件:
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

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

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

 

4.采集数据并查看

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

 

基本工做都已经完成,这个里面还有不少玩法,快动手试试吧。linux

相关文章
相关标签/搜索