在大型网站系统设计中,随着分布式架构,特别是微服务架构的流行,我们将系统解耦成更小的单元,通过不断的添加新的、小的模块或者重用已经有的模块来构建复杂的系统。随着模块的不断增多,一次请求可能会涉及到十几个甚至几十个服务的协同处理,那么如何准确快速的定位到线上故障和性能瓶颈,便成为我们不得不面对的棘手问题。

为解决分布式架构中复杂的服务定位和性能问题,Google在论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》中提出了分布式跟踪系统的设计和构建思路。在这样的背景下,Apache SkyWalking创建于2015年,参考Dapper论文实现分布式追踪功能,并逐渐进化为一个完整功能的Application Performance Management系统,用于追踪、监控和诊断大型分布式系统,尤其是容器和云原生下的微服务系统。

今年初我在尝试使用.NET Core构建分布式追踪系统Butterfly时接触到SkyWalking团队,开始和SkyWalking团队合作探索SkyWalking对.NET Core的支持,并于4月发布SkyWalking .NET Core探针的第一个版本,同时我也有幸加入SkyWalking团队共同进行SkyWalking在多语言生态的推动。在.NET Core探针v0.1版本发布之后,得到了一些同学的尝鲜使用,也得到诸多改进的建议。经过几周的迭代,SkyWalking .NET Core探针于今天发布v0.2 release,在v0.1的基础上增加了稳定性和HttpClient及数据库驱动的追踪支持。

在使用SkyWalking对.NET Core应用追踪之前,我们需要先部署SkyWalking Collector收集分析Trace和Elasticsearch作为Trace数据存储。SkyWalking支持5.x的ES,所以我们需要下载安装对应版本的ES,并配置ES的cluster.nameCollectorDBCluster。然后部署SkyWalking 5.0 beta或更高版本(下载地址:http://skywalking.apache.org/downloads/)。更详细的Collector部署文档,请参考Deploy-backend-in-standalone-modeDeploy-backend-in-cluster-mode

最后我们使用示例项目来演示在.NET Core应用中使用SkyWalking进行追踪和监控,克隆SkyWalking-NetCore项目到本地

git clone https://github.com/OpenSkywalking/skywalking-netcore.git

进入skywalking-netcore目录

cd skywalking-netcore

还原nuget package:

dotnet restore

启动示例项目:

dotnet run -p sample/SkyWalking.Sample.Backend
dotnet run -p sample/SkyWalking.Sample.Frontend

访问示例应用 http://localhost:5001/api/values

打开SkyWalking WebUI即可看到我们的应用监控面板 http://localhost:8080

Dashboard视图

TopologyMap视图

Application视图

Trace视图

TraceDetails视图

  1. SkyWalking Github Repo: https://github.com/apache/incubator-skywalking
  2. SkyWalking-NetCore Github Repo: https://github.com/OpenSkywalking/skywalking-netcore
  3. 本文首发地址:个人博客-倾竹

最新文章

  1. java的会话管理:Cookie和Session
  2. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引
  3. StackExchange.Redis 访问封装类
  4. md5sum 生成 经md5加密后的字符串
  5. python常见错误总结
  6. Java Inner class
  7. GOOGLE搜索從入門到精通V4.0
  8. 公众号的秘密,知道一个biz就够了
  9. HTML&CSS基础学习笔记1.19-DIV标签1
  10. .net后台 Silverlight 页面 动态设置 ASPX 页面 控件的Margin值(位置设置)
  11. 移动端 前端框架 amaze ui
  12. servlet就实现在线用户表
  13. 第23月第24天 git命令 .git-credentials git rm --cached git stash clear
  14. Python 获取文件中最长行的长度和最长行
  15. Hive的配置| 架构原理
  16. 在elementUI中使用 el-autocomplete 实现远程搜索的下拉框
  17. 自定义滚动条mCustomScrollbar
  18. Centos7部署ntp服务器同步时间以及直接将本地时间同步为北京时间
  19. MyGeneration使用概述
  20. Linux CentOS 5.5 服务器安装图文教程

热门文章

  1. 超强js博客值得学习!!!
  2. node七-required、缓存
  3. java基础- Collection和map
  4. Laravel 框架 基础(一)
  5. day13_Mysql事务与数据库连接池学习笔记
  6. JAVA学习资源分享
  7. 使用DOS命令关闭tomcat端口(其他服务也是可以的)
  8. spring配置文件中context:property-placeholder导入多个独立的配置文件
  9. Java NIO Buffer缓冲区
  10. maven重新导入,不能拉到最新jar包的问题