大众点评Cat--架构分析

转自:http://blog.csdn.net/szwandcj/article/details/51025669

Cat功能强大且多,光日志的报表和图表分析就有十几种,但文档却很少,寥寥无几找到一些粒度却还很粗而且都是偏功能性的介绍。此外cat的配置也特别丰富,但几乎所有的cat文档里却鲜少提及。这些都导致很多方面都是缺失的,尤其是对于使用者来说,缺失了这些可能就意味着后面会步入大坑。

大纲

大众点评Cat–整体架构

大众点评Cat–server架构分析

整体架构

Cat的定位是实时监控平台,但是与其说是监控平台,更像是个数据仓库,在数据仓库的基础上提供丰富的报表分析功能。

Cat分c端和s端,c使用cat接口向s上报统一格式的日志信息。Cat的c是产生日志的地方(一般来说就是被监控的应用,上图中的应用节点),相应的s则是接受日志、消费日志的地方(上图中的server节点),日志消费后生成会日志报表。

S分为job machine, alert machine和sender
machine,前者表示可以运行定时任务的节点,后者则代表可以进行告警任务的节点。定时任务将报表数据转换成图表数据;告警则基于一定规则对报表数据做筛选剔出相应的告警数据,还有种特殊的告警用于对第三方应用做ping(2次ping不通或者超时则告警),告警节点如果不同时是发送节点则只保存告警信息,如果是发送节点则发送消息提醒(微信,短信,邮箱)给相应的运维人员。

运维人员可以直接通过s端提供的web前台功能查看报表信息以及图表信息。

服务节点除了对日志做处理还提供rest服务–报表数据查询和基础数据查询及变更接口。Cat前台提供功能做配置变更和查询,用户也可以编程调用rest接口做变更和查询。Cat集群内部,不同节点之间数据交换都是通过rest服务来的,例如后面要介绍的应用节点到服务节点拉取路由信息查询以及告警节点向服务节点拉取报表信息等。

消息树结构

Cat使用消息树(MessageTree)组织日志,树的每个节点都是一个消息(Message),消息共有5种具体类型,分别是Transaction,
Trace, Event,Heartbeat和Metric。每个消息树都有一个唯一的messageId,且消息树之间有单父级关系。

Transaction可以理解为是一个事务,它分为三种–独立事务,分支事务以及标记事务。事务之间可以互相嵌套,事务还可以嵌套任意其他消息类型,也只有事务才可以嵌套消息。

分支事务是从当前事务里派生出的异步事务,当前事务不需要等待其完成。分支事务创建新的消息树,和主事务之间是平行的关系。主事务通过新建event记录与分支事务之间的关系(一种软连接关系),分支事务通过设置消息树的parentMessageId维护与主事务消息之间的关系。

标记事务和分支事务之间非常类似,但标记事务是当前事务的子事务而不是另一个平行事务。其他线程可以通过tag(标记)找到标记事务并进行绑定,标记事务创建新event记录绑定信息,每一次绑定对应一个event,event里记录绑定线程的事务信息;同时绑定线程会也通过parentMessageId维护与主事务消息之间的关系。

Event代表系统是在某个时间点发生的一次事件,例如新用户注册、登陆,系统异常等,理论上可以记录任何事情。

Trace记录debug或者info信息。

Metric记录一些指标信息,cat提供logMetricForSum, logMetricForCount以及logMetricForDuration对指标做简单的度量统计。

Heartbeat则是用来记录系统的心跳信息,例如cpu,内存等等。Cat默认收集c端(见上节c和s的区分)节点的心跳信息。对报文结构感兴趣的可以查看status.xsd。

关键配置的静态结构

Cat有三个重要配置,分别是ClientConfig, RouterConfig和ServerConfig,分别代表客户端信息,服务路由信息以及服务端配置信息。

每个客户端对应一组对服务器以及一个domain信息,客户端默认从这组服务中的一个节点上拉取路由配置信息。客户端的查询参数里带有domain信息,服务端的路由配置里如果有相应的domain则返回相应domain下的一组server信息,如果没有则返回default
servers。

返回的路由信息包含一组日志服务节点以及采样比例(sample),日志服务节点包含权重,socket端口号以及id(ip)。采样比例是指客户端的cat日志多少次里抽样发送1次,例如0.2则代表记录5次日志会忘服务端发送1次。

客户端拉取到router信息后,和router的日志server列表中第一个可用server之间建立netty channel,并启动一个线程对channel进行维护。对channel的维护主要包括:

1. 比较服务端路由信息和客户端上次抓取的是否一致,不一致则更新客户端router信息,并重新建立新channel

2. 判断当前channel状态,如果状态不正常,则从router的server列表里重新找出一个能用的server建立channel

客户端拉取不到router信息时,默认使用客户端下的server列表作为远程日志服务器组。

ServerConfig主要用于服务端节点的职能描述,主要有以下几类功能:

1. 定义服务节点职能,可以运行哪类任务,以及是否可以发送告警信息和是否是hdfs存储节点。

2. 通过consoleConfig定义相应报表数据的获取节点,一般用于告警节点远程拉取所有节点的报表数据进行筛选。

3. ConsumerConfig定义各种类型的事务时间阈值,从名字可以看出来分别定义url,sql以及cache类型的事务时间的阈值,超过这个时间会被认为是一个problem。

时间: 2024-11-07 13:59:49

大众点评Cat--架构分析的相关文章

springmvc+dubbo+mybatis 接入大众点评 CAT 监控平台

CAT(Central Application Tracking)是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控.关于CAT的具体介绍可移步到CAT官网进行查阅. CAT平台的搭建可移步到「搭建大众点评CAT监控平台」. 1. 开发环境 Windows Java 8 Maven 3.5 MySQL 5.7 CAT 2.0.0 Dubbo 2.6 Spring 4.3 2. 客户端配置 客户端应用程序接入CAT需要在系统的特定路径中部署client.xml配置文件.Windows

Centos6.5部署大众点评CAT

CAT (Central Application Tracking) 简介: CAT 是大众点评开源的一套基于java的实时应用监控平台,主要应用于服务中间件框架(MVC 框架.RPC 框架.持久层框架.分布式缓存框架)的监控,为开发和运维提供各项性能指标.健康检查.自动报警等可视化服务. 最近在公司部署大众点评的CAT,中间遇到点问题,下面是我的部署过程: 系统和软件: cat下载地址:https://github.com/dianping/cat Centos6.5 apache-maven

搭建大众点评CAT监控平台

AT(Central Application Tracking)是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控.关于CAT的具体介绍可移步到CAT官网进行查阅. 环境清单CentOS 7 Java 8 Maven 3.5 MySQL 5.7 CAT 2.0.0 Tomcat 7.0 安装 CAT下载CAT安装包: # wget -O cat-home-2.0.0.war http://unidal.org/nexus/service/local/repositories/rel

大众点评整体架构

对大众点评网会员制的一点分析

前言:会员制的初体验 前段时间搬家,无意中箱子翻倒,各种零碎东西撒了一地,一个红色的小书本特别醒目,封皮上写着<上海美食指南>,我不由自主的把它捡起来,脑子里却闪现出四个大字"大众点评"! 时光仿佛一瞬倒流回二零零五年.那时的我刚毕业没多久,揣着一颗有梦想的心来大上海闯荡.头几年收入偏低自然是囊中羞涩.但是开门七件事,柴米油盐酱醋茶,人不能不吃饭呀,尤其我还是个嘴叼的吃货?为了让每一分钱都用到刀刃上,工作之余就会利用互联网的便利去搜索,看看哪里有又好吃又便宜的馆子?然后发现

深入详解美团点评CAT跨语言服务监控(一) CAT简介与部署

前言: CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,除了与点评RPC组件融合的很好之外,他将会能与Spring.MyBatis.Dubbo 等框架以及Log4j 等结合,支持PHP.C++.Go等多语言应用,基本接入了美团点评上海侧所有核心应用.目前在中间件(MVC.RPC.数据库.缓存等)框架中得到广泛应用,为美团点评各业务线提供系统的性能指标.健康状况.监控告警等,在微服务监控领域也是非常有用的一套组件.支撑这美团每天450亿的消息,50TB的数据监控,应用于 700

React16+Redux 实战企业级大众点评WebApp

第1章 课程介绍本章主要介绍课程大纲.课程目标,以及开发环境搭建和实战案例演示. 第2章 React项目脚手架:create-react-app本章介绍React生态中最流行的脚手架:Create React App, 包括安装.基本用法.创建Mock数据等. 第3章 React思维方式:跟着Todo项目学习React思想本章以Todo项目为例,从React组件化思想角度出发,详细讲解使用React开发页面的基本流程和基本方法. 第4章 Redux基础:跟着Todo项目学习ReduxRedux是

大众点评实时监控系统CAT的那些坑

首先,感谢大众点评开源监控系统CAT.CAT是一款非常使用的功能建全的监控系统.作为一个知名的开源软件,真的是太差了. 想把CAT用起来,没有多年的Java经验是不行的.先吐槽一下,再写一篇如何用的文章. 从 https://github.com/dianping/cat 开始,就会碰到种种"坑". 第一坑,https://github.com/dianping/cat 上显示持续集成是失败的.(因为build的使用要用aliyun 的 maven 源才行.) 尝试用master编译成

大众点评网的网站架构

大众点评网由张涛创建于2003年4月,是中国最大的城市生活消费指南网站.其主要致力于为中国消费者提供本地的餐饮.休闲.娱乐等生活服务发表评论.分享信息的平台,并为广大潜在的消费者提供客观.准确的本地化消费信息指南. 大众点评网在2008年12月已实现在今年年初制定的月收入人民币500万元的盈利目标,Via: http://tech.sina.com.cn/i/2008-12-01/00222613619.shtml 我也是大众点评网的用户之一,而且是注册用户,也会经常上大众点评网,对大众点评网的