在微服务框架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 的安装,这里据说需要以管理员身份运行

1dotnet 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

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

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


4.采集数据并查看

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352