微服务监控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。如果有更好的解决方案可以尝试。

参考资料:
官网文档:https://zipkin.io/pages/architecture.html
ZIPKIN API 接口:https://zipkin.io/zipkin-api/#/

asp.net Core 交流群:787464275 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!

作者:LouieGuo
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!

asp.net core zipkin的更多相关文章

  1. ASP.NET Core整合Zipkin链路跟踪

    前言     在日常使用ASP.NET Core的开发或学习中,如果有需要使用链路跟踪系统,大多数情况下会优先选择SkyAPM.我们之前也说过SkyAPM设计确实比较优秀,巧妙的利用Diagnosti ...

  2. 微服务监控zipkin+asp.net core

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 监控目录:微服务监控zipkin.skywalking以及日志ELK监控系列 一.zipkin介绍 zipkin是一种分布式跟踪系 ...

  3. ASP.NET Core微服务实战系列

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. 前言 这里记录的是个人奋斗和成长的地方,该篇只是一个系列目录和构想 ...

  4. ASP.NET Core分布式项目实战-目录

    前言 今年是2018年,发现已经有4年没有写博客了,在这4年的时光里,接触了很多的.NET技术,自己的技术也得到很大的进步.在这段时光里面很感谢张队长以及其他开发者一直对.NET Core开源社区做出 ...

  5. 微服务介绍及Asp.net Core实战项目系列之微服务介绍

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.微服务选型 在做微服务架构的技术选型的时候,我们以“无侵入”和“社区活跃”为主要的考量点,将来升级为原子服务架构.量子服务架构 ...

  6. ASP.NET Core使用HostingStartup增强启动操作

    概念 在ASP.NET Core中我们可以使用一种机制来增强启动时的操作,它就是HostingStartup.如何叫"增强"操作,相信了解过AOP概念的同学应该都非常的熟悉.我们常 ...

  7. 云原生ASP.NET Core程序的可监测性和可观察性

    分布式应用程序很复杂,给开发人员调试和修复生产问题带来了一系列挑战.尽管微服务架构可帮助维持一支规模较小,可以自主工作并专注于独立业务团队,但由于其分布式性质,它带来了新的挑战.例如,在业务交易过程中 ...

  8. ASP.NET Core 之 Identity 入门(一)

    前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...

  9. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

随机推荐

  1. Java常用几种加密算法

    对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若想解 ...

  2. Java面试题总结之数据结构、算法和计算机基础(刘小牛和丝音的爱情故事1)

      Java面试题总结之数据结构.算法和计算机基础(刘小牛和丝音的爱情故事1)​mp.weixin.qq.com 全文字数: 1703 阅读时间: 大约6 分钟 刘小牛是一名Java程序员,由于天天9 ...

  3. CSS 居中 可随着浏览器变大变小而居中

    关键代码: 外部DIV使用: text-align:center; 内部DIV使用: margin-left:auto;margin-right:auto 例: <div style=" ...

  4. Python爬虫之简单的图片获取

    简单的静态网页的图片获取: import urllib import re import os url = 'http://www.toutiao.com/a6467889113046450702/' ...

  5. gdb源码安装过程中的问题:no termcap library found

    gdb使用源码安装的时候遇到错误:no termcap library found ./configure -->  make --> make install 解决办法,下载termca ...

  6. BUPT复试专题—Special 数(2017)

    题目描述 设一个正整数既是平方数乂是立方数时,称为Special数. 输入 输入包含多组测试数据,笫1行输入测试数据的组数,接下来在后续每行输入n(n<=1000000000) 输出 输出1到n ...

  7. hdu 4707 Pet(DFS &amp;&amp; 邻接表)

    Pet Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. 心情日记app总结 数据存储+服务+广播+listview+布局+fragment+intent+imagebutton+tabactivity+美工

    ---恢复内容开始--- 结果截图如下: 第一张图是程序主界面,主要是显示记事列表的一些个事件.旁边的侧拉框是自己登陆用的.可以设置密码.可以查看反馈与关于等信息. 点击第一张图片下方的图标,会显示不 ...

  9. 11892 - ENimEN(博弈)

    UVA 11892 - ENimEN 题目链接 题意:给定n堆石头.两人轮流取,每次仅仅能取1堆的1到多个.假设上一个人取了一堆没取完.那么下一个人必须继续取这堆.取到最后一个石头的赢,问谁赢 思路: ...

  10. 博客系统-评论or评论树

    url配置 url(r'^commentTree/(?P<article_id>\d+)/',views.commentTree), url(r'^(?P<username>. ...