大家好,今天给大家介绍一下如何在 ASP.NET Core 项目中集成 Skywalking,Skywalking 是 Apache 基金会下面的一个开源 APM 项目,有些同学可能会 APM 是干什么用的还不是太了解,那么下面我就简单的来说一下。
APM 全称是 (Application Performance Monitor)应用性能监测软件,主要是用来处理以及追踪分布式系统中的应用程序的性能问题,从而快速找出问题的根源,进而可以让开发者定位问题从而提升应用程序性能。
Skywalking 是一个APM系统,为微服务架构和云原生架构系统设计,它通过客户端探针自动收集追踪性能所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking 可以感知应用间关系和服务间关系,并进行相应的指标统计及展示。
.NET 探针为了能够让APM的服务端正确的收集到追踪及分析所需的指标,就需要有客户端程序附属到你的应用程序上进行数据的上报,那么这个附属的程序就叫做探针(Agent)。
Skywalking 使用 Java 程序开发,默认提供了 Java 探针,那么在 .NET 系统中,就需要有 .NET 相关的探针才能够正确的将数据上报的服务端,所以 skywalking-netcore 这个项目就是专门为 .NET 开发的探针,目前支持 ASP.NET Core 以及 ASP.NET,下面我具体的来说一下这个项目吧。
.NET 探针项目:https://github.com/OpenSkywalking/skywalking-netcore
这个项目位于 OpenSkywalking 组织下是由 Skywalking 作者 吴晟 大佬发起的,主要开发者是 Lemon 同学,虽然我也是组织成员之一,但是只做了一些打杂的工作以及对 CAP 消息追踪的支持工作,感兴趣的同学欢迎 Github Star 一波...
好了,我们还是主要说一下怎么在 ASP.NET Core 中集成 Skywalking 吧。
ASP.NET Core 集成在新版本的 Skywalking .NET Agent 中,我们实现了对 ASP.NET Core 应用程序无入侵的集成方式,这使得你可以更加方便的开启或者关闭探针数据的收集而不用修改任何代码。比如你可以在生产环境遇到性能问题时候启动它快速的定位问题,而在问题处理完成之后再关掉,非常的方便,下面我们来说一下集成的步骤。
Step 1我们提供给了dotnet 的扩展 CLI 工具以供开发者使用从而进行集成,首先使用下面的命令来进行 Agent 的安装
dotnet tool install -g SkyWalking.DotNet.CLI安装完成之后,你可以在命令行中使用 dotnet skywalking 或者是 dotnet-skywalking 提供的命令来安装 .NET Agent 到你的本机或者容器中。
dotnet skywalking install Step 2接下来,我们需要向环境变量中添加几个参数:
Windows
set DOTNET_ADDITIONAL_DEPS=%PROGRAMFILES%\dotnet\x64\additionalDeps\skywalking.agent.aspnetcore set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCoreLinux
export DOTNET_ADDITIONAL_DEPS=http://www.likecs.com/usr/local/share/dotnet/x64/additionalDeps/skywalking.agent.aspnetcore export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCore Step 3然后,你需要给你要集成的应用取一个名字,例如我使用以下方式创建一个示例程序:
dotnet new mvc -n mvcdemo以上命令会生成一个名为 mvcdemo 默认的 ASP.NET MVC 项目,我们需要给项目搞一个代号以便让服务端识别,就取代号名为 mvc_sample 吧,然后把这个代号使用下面的命令也添加到环境变量里面。
**Windows** set SKYWALKING__APPLICATIONCODE=mvc_sample **Linux** export SKYWALKING__APPLICATIONCODE=mvc_sample Step 4最后一步就是我们需要第一步的 CLI 工具生成一个配置文件,从而配置各种参数,使用以下命令生成一个配置文件:
// mvc_sample 为上面 step 3 的代号, localhost:11800 为 Skywalking 服务端的地址 dotnet skywalking config mvc_sample localhost:11800上面的命令会在你的项目文件夹下生成一个名为 skywalking.json 的json文件,里面是配置信息,你可以酌情修改,如下:
skywalking.json
{ "SkyWalking": { "ApplicationCode": "Frontend", "SpanLimitPerSegment": 300, "Sampling": { "SamplePer3Secs": -1 }, "Logging": { "Level": "Information", "FilePath": "logs\\SkyWalking-{Date}.log" }, "Transport": { "Interval": 3000, "PendingSegmentLimit": 30000, "PendingSegmentTimeout": 1000, "gRPC": { "Servers": "localhost:11800", "Timeout": 2000, "ConnectTimeout": 10000 } } } }以上,就是所有的配置工作,接下来就可以开始启动了。
启动你的项目启动很简单,按照你习惯的常规方式使用 dotnet run 或者 dotnet mvcdemo.dll 来运行你的项目即可。
然后你就可以去 Skywalking 服务端 UI 上面看到 API 的追踪信息了。
下面是Skywalking的几个追踪界面截图,大家可以用 UI 上大致了解下: