在 ASP.NET Core 中集成 Skywalking APM
前言
大家好,今天给大家介绍一下如何在 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 搜遍百度谷歌吗?
你还在为项目中遇到的分布式事务问题而抱头痛哭吗?
不要慌,不要急,有了她,让你少掉发!早下班!
她就是 CAP:https://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的更多相关文章
- 如何简单的在 ASP.NET Core 中集成 JWT 认证?
前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...
- 在Asp.Net Core中集成Kafka
在我们的业务中,我们通常需要在自己的业务子系统之间相互发送消息,一端去发送消息另一端去消费当前消息,这就涉及到使用消息队列MQ的一些内容,消息队列成熟的框架有多种,这里你可以读这篇文章来了解这些MQ的 ...
- 在Asp.Net Core中集成Kafka(中)
在上一篇中我们主要介绍如何在Asp.Net Core中同步Kafka消息,通过上一篇的操作我们发现上面一篇中介绍的只能够进行简单的首发kafka消息并不能够消息重发.重复消费.乐观锁冲突等问题,这些问 ...
- 在Asp.Net Core中集成ABP Dapper
在实际的项目中,除了集成ABP框架的EntityFrameworkCore以外,在有些特定的场景下不可避免地会使用一些SQL查询语句,一方面是由于现在的EntityFrameworkCore2.X有些 ...
- ASP.NET Core中使用GraphQL - 第一章 Hello World
前言 你是否已经厌倦了REST风格的API? 让我们来聊一下GraphQL. GraphQL提供了一种声明式的方式从服务器拉取数据.你可以从GraphQL官网中了解到GraphQL的所有优点.在这一系 ...
- ASP.NET Core 简单集成签发 JWT (JSON Web Tokens)
什么是 JWT ? 从 https://jwt.io/ 可以了解到对 JWT 的描述:JSON Web Tokens are an open, industry standard RFC 7519 m ...
- Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用
写在前面 Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...
- 如何在 ASP.NET Core 中发送邮件
前言 我们知道目前 .NET Core 还不支持 SMTP 协议,当我么在使用到发送邮件功能的时候,需要借助于一些第三方组件来达到目的,今天给大家介绍两款开源的邮件发送组件,它们分别是 MailKit ...
- 玩转ASP.NET Core中的日志组件
简介 日志组件,作为程序员使用频率最高的组件,给程序员开发调试程序提供了必要的信息.ASP.NET Core中内置了一个通用日志接口ILogger,并实现了多种内置的日志提供器,例如 Console ...
随机推荐
- 使用SQL命令批量替换WordPress站点中图片的URL链接地址
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=689 前言: 本文记录了使用SQL命令批量替换URL的方法以及除了替换URL之外,网站更换图片URL地址所必须的其他 ...
- Ubuntu 18.04 on Windows 10 更改 Oh-My-Zsh agnoster 主题下的目录背景色
题外话 我的 MacBook Pro 已经使用了6年多的时间,尽管作为一个 .NET 程序员绝大部分时间都是在 Windows 下工作,直到 .NET Core 的逐步成熟.要说 Mac OS,最满意 ...
- 关于jquery日期控件及时间格式转换2017.05.27
开始时间:<input type="date" id="starttime" class="time"/>//data为日期控件 ...
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
前言 for,slice(0),concact() 在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝.如下图演示: 如上,arr的修改,会影响arr2的值,这显然在绝大多数情况下,并不 ...
- 给xmpphp添加了几个常用的方法
给xmpphp添加给了以下的常用方法: registerNewUser //注册一个新用户 addRosterContact //发送添加好友的请求 acce ...
- Javascript 进阶 继承
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/29194261 1.基于类的继承 下面看下面的代码: <script typ ...
- Requests库作者另一神器Pipenv的用法
前言 我们在运行 Python 项目的时候经常会遇到一些版本问题,例如 A 项目依赖于 Django 1.5,而 B 项目又依赖 Django 2.0,而我们的系统却只有一个 Python 解释器,我 ...
- 用Java为Hyperledger Fabric(超级账本)开发区块链智能合约链代码之部署与运行示例代码
部署并运行 Java 链代码示例 您已经定义并启动了本地区块链网络,而且已构建 Java shim 客户端 JAR 并安装到本地 Maven 存储库中,现在已准备好在之前下载的 Hyperledger ...
- IP地址、端口、TCP协议、UDP协议
最近在看<疯狂java讲义>,第17章网络编程里提到IP地址.端口.TCP协议.UDP协议这几个概念.以前上课时学过,现在重温了一遍.在这里,用自己的语言简单的讲解一下吧. IP地址:每一 ...
- Go语言中的面向对象
前言 如果说最纯粹的面向对象语言,我觉得是Java无疑.而且Java语言的面向对象也是很直观,很容易理解的.class是基础,其他都是要写在class里的. 最近学习了Go语言,有了一些对比和思考.虽 ...