微服务监控zipkin+asp.net core
0、目录
整体架构目录:ASP.NET Core分布式项目实战-目录
监控目录:微服务监控zipkin、skywalking以及日志ELK监控系列
一、zipkin介绍
zipkin是一种分布式跟踪系统,有助于收集微服务架构中的延迟问题所需要的时序数据(收集查找),收集微服务之间的调用情况,然后处理调用之间数据延迟等问题。
如下图:微服务调用情况深度。(官方文档图)
以及依赖图分析,会展示出微服务之间的调用关系。当然下图展示的是我案例中的图片
二、zipkin作用
1、全链路追踪工具(查看依赖关系)
2、查看每个接口、每个service的执行速度(定位问题发生点或者寻找性能瓶颈)
zipkin包含:
收集器(Collector):主要是收集微服务所产生的数据(收集器有:http、kafka、rabbitmq)
UI(界面):主要是展示数据的界面
Storage(存储):存储数据(es、mysql、内存、cassandra)
in-memory:仅供测试
JDBC(mysql):数据采集量很大,查询速度会比较慢。
Cassandra:zipkin最初始内建的存储(扩展性好、schema灵活)
(推荐)Elasticsearch:被用于大规模,数据量大的,存储形式json。
API:查看/检索 数据的接口,主要用于WebUI中
结构图:
流程解释:
1、transport作用:收集trace的services的spans,并将它们转化为zipkin common span
2、zipkin核心数据结构
Annotation:用于定位一个request的开始和结束,计算调用延迟。
cs:Client Start,表示客户端发起请求,一个span的开始
sr:Server Receive,表示服务端收到请求
ss:Server Send,表示服务端完成处理,并将结果发送给客户端
cr:Client Received,表示客户端获取到服务端返回信息
注意:时间点计算
sr-cs:网络延迟
ss-sr:逻辑处理时间
cr-cs:整个流程时间
三、asp.net core 部署zipkin
1、需要在每个微服务框架中加入zipkin分布式跟踪系统
此项目会新建两个项目一个是 demo1,一个是demo2
2、nuget包安装:
zipkin4net(追踪器)
zipkin4net.middleware.aspnetcore(aspnetcore 中间件)
3、项目中的 Startup.cs 里面Configure方法中注册中间件
4、配置startup.cs之后还需要配置RPCTraceHandler
即在发送Get/Post请求的HttpClient中添加追踪处理者,至此 asp.net core部署完成。
5、上面部署的的只是demo1 服务,因此同样的方式部署demo2项目。
6、现在docker部署zipkin
数据存储方式:内存(仅测试)
docker 命令: docker run -d -p 9411:9411 --name zipkin openzipkin/zipkin
部署成功后 在浏览器中打开 ,这边我采用的是虚拟机,因此打开地址为 192.168.216.135:9411
7、至此部署完成
我们在 asp.net core项目的控制其中写上调用demo2 api/values 的接口地址
追踪在zipkinUI 上面呈现如下:
图1、
图2、
图3:依赖分析
8、此zipkin 部署是存在内存中的,不适合正式环境
注:一旦数据量上去后,zipkin容易被压崩掉。
因此需要其他解决方案代替。
目前楼主我采用的解决方案是kafka+zipkin+es。如果有更好的解决方案可以尝试。
项目demo代码:
github: zipkinTraceDemo
参考资料:
官网文档:https://zipkin.io/pages/architecture.html
ZIPKIN API 接口:https://zipkin.io/zipkin-api/#/
asp.net Core 交流群:787464275 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!
微信公众号:欢迎关注 QQ技术交流群: 欢迎加群
微服务监控zipkin+asp.net core的更多相关文章
- 微服务介绍及Asp.net Core实战项目系列之微服务介绍
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.微服务选型 在做微服务架构的技术选型的时候,我们以“无侵入”和“社区活跃”为主要的考量点,将来升级为原子服务架构.量子服务架构 ...
- 微服务监控zipkin、skywalking以及日志ELK监控系列
0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.目录 1.zipkin监控 2.skywalking监控 3.ELK日志监控 asp.net Core 交流群:78746 ...
- 微服务介绍及Asp.net Core实战项目系列
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 二.目录 0.微服务介绍 1.RESTful API 规范介绍 2.asp.net core介绍及swagger使用 3.asp. ...
- 第七模块 :微服务监控告警Prometheus架构和实践
119.监控模式分类~1.mp4 logging:日志监控,Logging 的特点是,它描述一些离散的(不连续的)事件. 例如:应用通过一个滚动的文件输出 Debug 或 Error 信息,并通过日志 ...
- windows 服务中托管asp.net core
在windows 服务中托管asp.net core SDK 2.1.300 官方示例 1.添加运行标识符 xml <PropertyGroup> <TargetFramework& ...
- [转帖]以Windows服务方式运行ASP.NET Core程序
以Windows服务方式运行ASP.NET Core程序 原作者blog: https://www.cnblogs.com/guogangj/p/9198031.htmlaspnet的blog 需要持 ...
- SpringCloud微服务实战——搭建企业级开发框架(四十四):【微服务监控告警实现方式一】使用Actuator + Spring Boot Admin实现简单的微服务监控告警系统
业务系统正常运行的稳定性十分重要,作为SpringBoot的四大核心之一,Actuator让你时刻探知SpringBoot服务运行状态信息,是保障系统正常运行必不可少的组件. spring-b ...
- SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控
无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator.提到Actuator,又不得不提Micrometer ...
- 使用 Spring Cloud Sleuth、Elastic Stack 和 Zipkin 做微服务监控
关于迁移微服务架构,最常被提及的挑战莫过于监控.每个微服务应独立于其他服务的运行环境,所以他们之间不会共享如数据源.日志文件等资源. 然而,较容易的查看服务的调用历史,并且能够查看多个微服务的请求传播 ...
随机推荐
- android recovery 升级时间与速度研究
从android4.4到现在android7.1升级,现在的升级包越来越大,一个system分区大小都分配了2G,整个升级包达到了接近500M, 升级包解压之后1G+,奇怪的是,发现了两个不同批次的板 ...
- html 知识整理
一. 前言 本文全面介绍了html的定义.使用和具体常用标签. 参考资料:菜鸟教程 二.定义 html是HyperText Markup Language的简称,也就是超文本标记语言的缩写.通过htm ...
- Luogu P4707 重返现世
题目描述 为了打开返回现世的大门,Yopilla 需要制作开启大门的钥匙.Yopilla 所在的迷失大陆有 \(n\) 种原料,只需要集齐任意 \(k\) 种,就可以开始制作. Yopilla 来到了 ...
- Django之权限管理
Django权限管理之初步完整版 项目背景:这是一个权限管理系统(给一些角色和他们的权限指URL和页面可以删除的按钮比如:增删改查) 使用到了中间件,和初始化权限,使用了admin的后台管理系统. 我 ...
- 基于Redis实现一个安全可靠的消息队列
http://doc.redisfans.com/list/rpoplpush.html
- (2)free详解 (每周一个linux命令系列)
(2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...
- 转载 JavaScript的函数声明与函数表达式的区别
1)函数声明(Function Declaration); // 函数声明 function funDeclaration(type){ return type==="Declaration ...
- https安全协议原理
那么什么是HTTPS? HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议.HTTPS经由HTTP进行通信,但利用TLS来加密 ...
- 【Atcoder ARC060F】最良表現 / Best Representation
Atcoder ARC060 F 题意:给一个串,求将其分成最少的没有循环节的串的种数. 思路:先求KMP的\(fail\)数组.然后发现最少的串数只有三种可能:\(1\).\(2\).\(n\). ...
- shell脚本编程需要的知识
关于shell的预备知识 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁即用户界面.用户把指令传给shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执 ...