前言

大家好,今天给大家介绍一下如何在 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.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 上大致了解下:

最后

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

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

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

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

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

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



一个分布式事务解决方案,同时具有 EventBus 的所有功能,什么?你说价格?不要99,也不要9块9,免费开源MIT,重要的是有 手把手视频

有了她,让你多些时间陪陪家人,会会朋友,做做大保健~

如果你觉得这个开源项目还不错,给个Github Star 支持一下那就太好了。

如果你觉得本篇文章对你有帮助的话,可以关注一下博主,顺手点个【推荐】哦。


本文地址:http://www.cnblogs.com/savorboard/p/asp-net-core-skywalking.html

作者博客:Savorboard

本文原创授权为:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本

在 ASP.NET Core 中集成 Skywalking APM的更多相关文章

  1. 如何简单的在 ASP.NET Core 中集成 JWT 认证?

    前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...

  2. 在Asp.Net Core中集成Kafka

    在我们的业务中,我们通常需要在自己的业务子系统之间相互发送消息,一端去发送消息另一端去消费当前消息,这就涉及到使用消息队列MQ的一些内容,消息队列成熟的框架有多种,这里你可以读这篇文章来了解这些MQ的 ...

  3. 在Asp.Net Core中集成Kafka(中)

    在上一篇中我们主要介绍如何在Asp.Net Core中同步Kafka消息,通过上一篇的操作我们发现上面一篇中介绍的只能够进行简单的首发kafka消息并不能够消息重发.重复消费.乐观锁冲突等问题,这些问 ...

  4. 在Asp.Net Core中集成ABP Dapper

    在实际的项目中,除了集成ABP框架的EntityFrameworkCore以外,在有些特定的场景下不可避免地会使用一些SQL查询语句,一方面是由于现在的EntityFrameworkCore2.X有些 ...

  5. ASP.NET Core中使用GraphQL - 第一章 Hello World

    前言 你是否已经厌倦了REST风格的API? 让我们来聊一下GraphQL. GraphQL提供了一种声明式的方式从服务器拉取数据.你可以从GraphQL官网中了解到GraphQL的所有优点.在这一系 ...

  6. ASP.NET Core 简单集成签发 JWT (JSON Web Tokens)

    什么是 JWT ? 从 https://jwt.io/ 可以了解到对 JWT 的描述:JSON Web Tokens are an open, industry standard RFC 7519 m ...

  7. Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用

    写在前面   Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...

  8. 如何在 ASP.NET Core 中发送邮件

    前言 我们知道目前 .NET Core 还不支持 SMTP 协议,当我么在使用到发送邮件功能的时候,需要借助于一些第三方组件来达到目的,今天给大家介绍两款开源的邮件发送组件,它们分别是 MailKit ...

  9. 玩转ASP.NET Core中的日志组件

    简介 日志组件,作为程序员使用频率最高的组件,给程序员开发调试程序提供了必要的信息.ASP.NET Core中内置了一个通用日志接口ILogger,并实现了多种内置的日志提供器,例如 Console ...

随机推荐

  1. centos7搭建postfix邮件服务器

    在使用qq等邮件服务器厂商提供的邮件服务后,发现他们的邮件发送数量是有限制的,随着公司的业务的需求下,我们需要搭建一个邮件服务器,邮件服务器可以帮助我们在一些提醒方面和消息推送方面起到帮助. 理论性语 ...

  2. mysql数据库的安装与配置

    mysql数据库的安装与配置及workbench的简单使用 mysql数据库社区版下载:https://dev.mysql.com/downloads/installer/ 我这里选的是社区安装版(适 ...

  3. Zepto源码(2016)——Zepto模块(核心模块)

    // Zepto.js // (c) 2010-2016 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...

  4. VMware12下CentOS 7安装教程

    CentOS 7 DVD安装光盘(百度搜索CentOS即可找到官方主页):VMware Workstation 12 Pro及以上软件: 启动VMware Workstation 12 Pro程序,在 ...

  5. mongoDB的安装及基本使用

    1.mongoDB简介 1.1 NoSQL数据库 数据库:进行高效的.有规则的进行数据持久化存储的软件 NoSQL数据库:Not only sql,指代非关系型数据库 优点:高可扩展性.分布式计算.低 ...

  6. 用Axure进行原型设计

    用Axure进行原型设计   看这个视频 http://www.iqiyi.com/playlist409963402.html

  7. dirlock.go

    // +build !windows package dirlock import (     "fmt"     "os"     "syscall ...

  8. go语言nsq源码解读二 nsqlookupd、nsqd与nsqadmin

    nsqlookupd: 官方文档解释见:http://bitly.github.io/nsq/components/nsqlookupd.html 用官方话来讲是:nsqlookupd管理拓扑信息,客 ...

  9. 【BZOJ 3534】: [Sdoi2014]重建

    题目大意:(略) 题解: 相对误差……我好方. 考虑答案应该为所有合法答案概率之和.对于一个合法的生成树,其出现概率应为所有选取边的概率出现的积 乘以 所有未选取边不出现概率的积. 即: $\;\pr ...

  10. bzoj3811 玛里苟斯

    分三种情况讨论 k=1时,对于每一位而言,只要有一个数这一位是1,那么这个就有0.5的概率是1,选他就是1,不选就是0,有第二个的话,在第一个选或不选的前提下,也各有0.5的几率选或不选,0和1的概率 ...