监控是为复杂的分布式系统服务的,它收集跨不一样的应用,不一样的服务器的系统行为信息,可经过采样收集所需的性能指标,帮助分析性能问题,并在指标超过正常值时报警。html
全链路监控又名分布式监控系统,全链路追踪。 目前市面的全链路系统基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)来作的。 论文java
APM(Application Performance Management)的核心思想是什么? 在应用服务各节点相互调用的时候,从中记录并传递一个应用级别的标记,这个标记能够用来关联各个服务节点之间的关系。好比两个应用服务节点之间使用HTTP做为传输协议的话,那么这些标记就会被加入到HTTP头中。可见如何传递这些标记是与应用服务节点之间使用的通信协议有关的,经常使用的协议就相对容易加入这些内容,一些按需定制的可能就相对困难些,这一点也直接决定了实现分布式追踪系统的难度。 它经过探针自动收集所需的指标,并进行分布式追踪。经过这些调用链路以及指标,APM会感知应用间关系和服务间关系,并进行相应的指标统计。 如何衡量一个大规模集群的跟踪系统的优劣? 它应该知足低损耗、应用透明的、大范围部署这三个需求的。git
一个比较完整的全链路监控系统,一般会包括几个部分。github
Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java. Pinpoint等相关工具的做用就是追踪每一个请求的完整调用链路,收集调用链路上每一个服务的性能数据对代码的零侵入,运用JavaAgent字节码加强技术,只须要加启动参数便可web
* Pinpoint-Collector:收集各类性能数据
* Pinpoint-Agent:和本身运行的应用关联起来的探针
* Pinpoint-Web:将收集到的数据显示成WEB网页形式
* HBase Storage:收集到的数据存到HBase中
复制代码
https://baijiahao.baidu.com/s?id=1585656128092617457&wfr=spider&for=pc skywalaking整体架构分为三部分spring
https://www.cnblogs.com/zhongpan/p/7506930.html数据库
官网:OpenZipkin · http://zipkin.io/api
github地址:https://github.com/openzipkin/zipkin 这个是twitter开源出来的,也是参考Dapper的体系来作的。 Zipkin的java应用端是经过一个叫Brave的组件来实现对应用内部的性能分析数据采集。安全
Brave的github地址:https://github.com/openzipkin/brave 这个组件经过实现一系列的java拦截器,来作到对http/servlet请求、数据库访问的调用过程跟踪。 而后经过在spring之类的配置文件里加入这些拦截器,完成对java应用的性能数据采集。服务器
github地址:https://github.com/dianping/cat 跟踪的手段,是要在代码里硬编码写一些“埋点”,也就是侵入式的。 这样作有利有弊,好处是能够在本身须要的地方加埋点,比较有针对性;坏处是必须改动现有系统,不少开发团队不肯意。
https://www.cnblogs.com/Leo_wl/p/8143222.html http://blog.csdn.net/j3T9Z7H/article/details/78139771
Prometheus(普罗米修斯)是一个名字很是酷的开源监控系统。它支持多维度的指标数据模型,服务端经过HTTP协议定时拉取数据后,经过灵活的查询语言,实现监控的目的。 Prometheus 能够从配置或者用服务发现,去调用各个应用的 metrics 接口,来采集数据,而后存储在硬盘中,而若是是基础应用好比数据库,负载均衡器等,能够在相关的服务中安装 Exporters 来提供 metrics 接口供 Prometheus 拉取。 采集到的数据有两个去向,一个是报警,另外一个是可视化。
zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各类网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各类问题。 zabbix由2部分构成,zabbix server与可选组件zabbix agent。 zabbix server能够经过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它能够运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置,内置了服务注册与发现,具备健康检查、Key/Value存储、多数据中心的功能。
Health Check(健康状态检查)不只是对本身应用程序内部检测各个项目之间的健康状态(各项目的运行状况、项目之间的链接状况等),还包括了应用程序对外部或者第三方依赖库的状态检测。
复制代码
如今咱们的项目愈来愈多的从单体多层架构转换成多项目多层架构即如今流行的微服务架构。
原来咱们的App把各个模块分层分项目处理,好比Users项目仅仅处理User的一些业务需求,但在整个项目使用的时候,咱们仅仅须要引用其类库便可,不用担忧项目与类库之间的不兼容问题,若是不兼容在编译期已经会有提示。但现在,业务规模愈来愈庞大的时候,咱们单独把Users做为一个service来作,全部一切都在其内部处理,对于外部来讲仅仅公开几个api便可,但与项目之间的链接就从单纯的物理引用关系转换成了网络调用关系。
当咱们架构从单体架构到微服务架构的时候,咱们会发现愈来愈多的引用从物理转向了网络,在原来咱们不须要考虑之间是否调用成功,但如今咱们必须考虑进去,网络因素、服务器因素、其余因素等都会影响各服务之间的调用,所以Health Check孕育而生,它在微服务架构中是举足轻重的。
复制代码
Health Check的功能有哪些?在微服务架构中很简单,就是检查各services的运行状态是否正常。在微服务的架构中,全部的一切都是service,db is service,rabbitmq is service,auth is service, shoppingcart is server……咱们的架构可以根据业务需求,横向的扩容,多个db,多个rabbitmq,多个auth,多个shoppingcart。咱们总结下,微服务架构下的Health Check是经过网络检查各services是否正常运行,它的功能是:
复制代码
参考资源:
http://bigbully.github.io/Dapper-translation/ http://iamlile.github.io/2017/10/06/apm/ http://www.360doc.com/content/18/0129/10/52429660_726071502.shtml