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

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文件中添加以下代码来设置

1

2

3

4

5

"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地址获取代码

 

4.采集数据并查看

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

 

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

这篇关于在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/355005

相关文章

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客