Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控

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

为解决分布式架构中复杂的服务定位和性能问题,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视图

原文地址:https://www.cnblogs.com/liuhaoyang/p/skywalking-dotnet-v02-release.html

时间: 2024-10-08 11:38:17

Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控的相关文章

PWC6199:Generated servlet error:Only a type can be imported. org.apache.jasper.tagplugins.jstl.core.ForEach resolves to a package

<%@ import="org.apache.jasper.tagplugins.jstl.core.ForEach"%> 去掉这条语句,就不报错了.所以问题就出在这里. 排查是import语句写错了  或者  是jar包没有引入 原文地址:https://www.cnblogs.com/Alwaysbecoding/p/9149302.html

SkyWalking+Asp.Net Core 分布式追踪系统

SkyWalking 是一套(APM)分布式追踪系统,SkyWalking提供了很多数据存储列如:Mysql,H2,Elasticsearch7 等,我这里用的是Elasticsearch7 ,SkyWalking默认H2,H2是内存数据库,数据文件一旦损坏oapservice就启动不了,所以我这里用的是Elasticsearch7 . SkyWalking下载地址 Elasticsearch下载地址 SkyWalking 安装的环境要求 CentOS7 JDK8+ Elasticsearch7

基于SkyWalking的分布式跟踪系统 - 微服务监控

上一篇文章我们搭建了基于SkyWalking分布式跟踪环境,今天聊聊使用SkyWalking监控我们的微服务(DUBBO) 服务案例 假设你有个订单微服务,包含以下组件 MySQL数据库分表分库(2台) 生产者(2台) dubbo-provider 消费者 dubbo-consumer 网络拓扑图如下 生产者的关键代码 @Service public class OrderServiceImpl implements OrderService { @Autowired protected Ord

Apache服务器性能监控

Apache服务器性能监控 1.使用自带mod_status模块监控 1)加载mod_status.so 模块 在httpd.conf中打开LoadModule status_module modules/mod_status.so 2)修改httpd.conf配置文件增加(删注释#)如下内容: <Location /server-status>    SetHandler server-status    Order deny,allow    Deny from all    Allow

ASP.NET Core之跨平台的实时性能监控(2.健康检查)

前言 上篇我们讲了如何使用App Metrics 做一个简单的APM监控,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内容. 没看过上篇的,请移步:ASP.NET Core之跨平台的实时性能监控 首先我们来了解一下什么是健康检查(health checks)? 1.什么是健康检查? 健康检查,其实这个名称已经很明确了,它是检查你的应用程序是否健康运行的一种方式.随着当前各类项目越来越多的应用程序正在转向微服务式架构,健康检查就变得尤为关键.虽然微服务体系结构具有许多好处,但其中一个缺

asp.net core api网关 实时性能监控

asp.net core api网关 实时性能监控 使用InfluxDB.Grafana Dockerfile 运行 InfluxDB.Grafana influxdb: image: influxdb ports: - "8086:8086" - "8083:8083" environment: - INFLUXDB_DB=TogetherAppMetricsDB - INFLUXDB_ADMIN_ENABLED=true - INFLUXDB_ADMIN_USE

SkyWalking 分布式追踪系统

随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 . 目前主要的一些 APM 工具有: Cat.Zipkin.Pinpoint.SkyWalking, SkyWalking 它是一款优秀的国产 APM 工具,包括了分布式追踪.性能指标分析.应用和服务依

在Linux环境下使用Apache部署ASP.NET Core

在前几篇文章中我们一起探讨了如何在Linux环境中安装ASP.NET Core运行时环境及将ASP.NET Core项目部署在Jexus中,这篇文章中我们将探讨如何将ASP.NET Core部署于Apache(阿帕奇)中.    很幸运能够和大家一起学习和探讨ASP.NET Core 本文章运行环境如下: (1)安装Apache web服务器 运行命令行如下: sudo yum update -y   //更新仓库 sudo yum -y install httpd mod_ssl   //安装

Apache Struts 2 Documentation Core Developers Guide

http://struts.apache.org/docs/core-developers-guide.html