在 ASP.NET Core 中集成 Skywalking APM

原文: 在 ASP.NET Core 中集成 Skywalking APM

前言

你们好,今天给你们介绍一下如何在 ASP.NET Core 项目中集成 Skywalking,Skywalking 是 Apache 基金会下面的一个开源 APM 项目,有些同窗可能会 APM 是干什么用的还不是太了解,那么下面我就简单的来讲一下。html

APM 全称是 (Application Performance Monitor)应用性能监测软件,主要是用来处理以及追踪分布式系统中的应用程序的性能问题,从而快速找出问题的根源,进而可让开发者定位问题从而提高应用程序性能。git

Skywalking 是一个APM系统,为微服务架构和云原生架构系统设计,它经过客户端探针自动收集追踪性能所需的指标,并进行分布式追踪。经过这些调用链路以及指标,Skywalking 能够感知应用间关系和服务间关系,并进行相应的指标统计及展现。github

.NET 探针

为了可以让APM的服务端正确的收集到追踪及分析所需的指标,就须要有客户端程序附属到你的应用程序上进行数据的上报,那么这个附属的程序就叫作探针(Agent)。json

Skywalking 使用 Java 程序开发,默认提供了 Java 探针,那么在 .NET 系统中,就须要有 .NET 相关的探针才可以正确的将数据上报的服务端,因此 skywalking-netcore 这个项目就是专门为 .NET 开发的探针,目前支持 ASP.NET Core 以及 ASP.NET,下面我具体的来讲一下这个项目吧。架构

.NET 探针项目:https://github.com/OpenSkywalking/skywalking-netcoremvc

这个项目位于 OpenSkywalking 组织下是由 Skywalking 做者 吴晟 大佬发起的,主要开发者是 Lemon 同窗,虽然我也是组织成员之一,可是只作了一些打杂的工做以及对 CAP 消息追踪的支持工做,感兴趣的同窗欢迎 Github Star 一波...asp.net

好了,咱们仍是主要说一下怎么在 ASP.NET Core 中集成 Skywalking 吧。分布式

ASP.NET Core 集成

在新版本的 Skywalking .NET Agent 中,咱们实现了对 ASP.NET Core 应用程序无入侵的集成方式,这使得你能够更加方便的开启或者关闭探针数据的收集而不用修改任何代码。好比你能够在生产环境遇到性能问题时候启动它快速的定位问题,而在问题处理完成以后再关掉,很是的方便,下面咱们来讲一下集成的步骤。ide

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.AspNetCore

Linux

export DOTNET_ADDITIONAL_DEPS=/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 上大体了解下:

1.png

2.png

3.png

最后

最后固然是广告时间,哈哈哈~~~

你还在为了解消息队列的复杂机制而苦恼吗?

你还在为找不到一个顺手的 EventBus 搜遍百度谷歌吗?

你还在为项目中遇到的分布式事务问题而抱头痛哭吗?

不要慌,不要急,有了她,让你少掉发!早下班!

她就是 CAPhttps://github.com/dotnetcore/CAP

GitHub stars
GitHub forks

一个分布式事务解决方案,同时具备 EventBus 的全部功能,什么?你说价格?不要99,也不要9块9,免费开源MIT,重要的是有 手把手视频
有了她,让你多些时间陪陪家人,会会朋友,作作大保健~

若是你以为这个开源项目还不错,给个Github Star 支持一下那就太好了。

若是你以为本篇文章对你有帮助的话,能够关注一下博主,顺手点个【推荐】哦。


本文地址:http://www.cnblogs.com/savorboard/p/asp-net-core-skywalking.html
做者博客:Savorboard
本文原创受权为:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本

相关文章
相关标签/搜索