在微服务框架DemoMicroServer中添加SkyWalkingSkyApmdotnet分布式链路追踪系统

111次阅读

共计 2280 个字符,预计需要花费 6 分钟才能阅读完成。

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

1

2

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

1

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

1

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

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

4. 采集数据并查看

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

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

正文完
 0