cat 大众点评cat监控监控系统的前端是用什么开发的

大众点评的前端怎么样?为什么感觉前端界几乎感受不到大众点评的存在?
其实很多公司的前端不受关注了,又不是bat
已有帐号?
无法登录?
社交帐号登录CAT首页、文档和下载 - 实时应用监控平台 - 开源中国社区
当前访客身份:游客 [
当前位置:
CAT 由大众点评开发的,基于 Java 的实时应用监控平台,包括实时应用监控,业务监控。
CAT 支持的监控消息类型包括:
Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
Heartbeat & 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
Trace 用于记录基本的trace信息,类似于的info信息,这些信息仅用于查看一些相关信息
CAT监控系统将每次URL、Service的请求内部执行情况都封装为一个完整的消息树、消息树可能包括Transaction、Event、Heartbeat、Metric和Trace信息。
完整的消息树
可视化消息树
分布式消息树【一台机器调用另外一台机器】
1、在CAT目录下,用maven构建项目
mvn&clean&install&-DskipTests
2、配置CAT的环境
mvn&cat:install
Linux\Mac &需要对/data/appdatas/cat和/data/applogs/cat有读写权限
Windows & &则是对系统运行盘下的/data/appdatas/cat和/data/applogs/cat有读写权限
3、(Optional)如果安装了hadoop集群,需到/data/appdatas/cat/server.xml中配置对应hadoop信息。将localmode设置为false,默认情况下,CAT在开发模式(localmode=true)下工作。
4、运行CAT
cd&cat-mvn&jetty:run
然后打开浏览器,输入http://localhost:2281/cat/。
或者在cat目录下输入 mvn eclipse:clean eclipse:eclipse 然后将项目导入到eclipse中,运行cat-home项目里得‘com.dianping.cat.TestServer’来启动CAT。
介绍内容来自:
CAT最新更新资讯,共1条&&()
授权协议:
开发语言:
操作系统:&跨平台&
收录时间:
-& 日&&(国产软件 or 国人参与)
pfox 发表于1年前
,最后回答(1个月前):
陈鹏烨 发表于1个月前
,最后回答(1个月前):
y000n520 发表于2个月前
,最后回答(1个月前):
劈劈啪啪 发表于2个月前
chenruiziyao 发表于2个月前
,最后回答(2个月前):
杰森.金 发表于1年前
,最后回答(4个月前):
:可以加入cat群一起探讨
:怎么用的
:关注有一段时间,好像没有更好的了
共有 430 个类似软件
Distributed Configuration Management Platform(分布式配置管理平台) 专注于各种 ...
Arping 是一个 ARP 级别的 ping 工具,可用来直接 ping MAC 地址,以及找出那些 ip...
clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网...
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全...
Linux Cluster Management Console (LCMC) 是一个用来简化 Linux 集群环境的应用,...
Gephi是一款开源的交互式的复杂网络分析平台。它支持Windows, Mac OS X以及Linux等...
CheungSSH 是一款中国人自主研发的Linux运维自动化管理服务器软件,是具有中国特色...
一、CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redi...
端口映射器 由于网络上下载的一个貌似delphi写的PortMap v1.6( http://www.online...
Foreman是一个集成的数据中心生命周期管理工具,提供了服务开通,配置管理以及报告 ...
CAT.NET 是 CAT 的 .NET 客户端。
photo4cat是一个flex开发的flash头像选择\拍摄、简单处理、上传控件。 flex3开发的...
一个基于 Forge 的 Minecraft 作弊Mod。 目前提供方块透视、夜视、创造模拟Give、本...
Cat Library 是一个 C++14 函数库。
共有 343 人关注 CAT透过CAT,来看分布式实时监控系统的设计与实现 - 推酷
透过CAT,来看分布式实时监控系统的设计与实现
【文章摘要】CAT的核心概念源自eBay闭源系统CAL—-eBay的几大法宝之一。
2011年底,我加入大众点评网,出于很偶然的机会,决定开发CAT,为各个业务线打造分布式实时监控系统,CAT的核心概念源自eBay闭源系统CAL—-eBay的几大法宝之一。
在当今互联网时代,业务需求旺盛,开发团队往往采用scrum等敏捷开发流程,加班加点快速迭代以满足业务需求,是常态。采用分布式系统设计和服务化,由多台机器协作来共同完成用户请求,是典型的解决方案。网站故障频发,内部关系错综复杂,故障定位缓慢,甚至找不到问题根源,也是常有的事。虽然已经有很多日志监控工具,或许单个工具功能还不错,但整体服务化水平参差不齐,工具间不能互通互联;另一方面,由于日志数据量大,且分散,使得查找问题根源基本靠人品。
这些也是我们要开发CAT的初衷。
CAT(Central Application Tracking),是基于纯Java开发的分布式实时监控系统。开源代码托管在GitHub(搜索CAT即可),作者是吴其敏(qmwu2000)和尤勇(youyong205)。
产品相关分享在网上可以找到:
看大众点评如何通过实时监控系统CAT打造7*24服务-尤勇@QCon高可用架构群 2015
分布式监控系统的设计与实现-尤勇@QCon上海2015
大众点评网监控系统架构剖析-尤勇@2013第二届华东架构师大会
大众点评网监控平台剖析-吴其敏@QCon杭州2012
CAT采用非常开放的Apache License开源,在国内已经有100多家互联网公司在使用和评估,包括大众点评网、携程网、猎聘网、陆金所和找钢网等。截至2016年3月,CAT已经获得了1000多个stars。
可扩展:支持分布式、跨IDC部署,横向扩展。
高可用:所有应用都可以倒下了,需要监控还站着,告诉它们发生了什么。
实时处理:信息的价值会随时间锐减,尤其是事故处理过程中。
全量数据:小概率事件是常态,百万分之一的概率,碰到了就是100%。
高吞吐:要想还原真相,需要全方位的监控和度量,必须要有超强的处理吞吐能力。
故障容忍:CAT本身故障不应该影响业务正常运转,CAT挂了,应用不该受影响,只是监控能力暂时减弱。
不保证可靠:允许消息丢失,这是一个很重要的trade-off,虽然目前CAT可以做到4个9的可靠性。
架构追求 简单、去中心化、分工协作, 两层结构,除了依赖外部存储如HDFS和MySQL外,不依赖其他系统,CAT内部全面采用组件化设计和实现。CAT每天消息量巨大,一台机器是不能处理全部流量,必须分片处理,均衡负载。
业务应用目前使用CAT API进行埋点,后台异步线程采用TCP长连接方式,将消息源源不断地传输到后台服务器;CAT具有fail-over机制,在后台服务器不可用时会自动切换到另一台可用服务器。CAT目前使用native协议做序列化和反序列化,将来会考虑支持更多协议,比如thrift。
消息被送到后台,经反序列化后会被放入队列,实时消费调度器会将消息分发到所有消费者内部队列,每个消费者只需处理自己的消费队列,各消费者之间彼此相对独立,如果消费速度太慢,导致消费队列满,则新来的消息会被丢弃。典型消费者都采用实时增量计算的方式,流式处理消息,产生的报表会在当前小时结束后保存到中央数据库中。
日报表采用后台作业的形式,由24个小时报表合并得到。周报表则由7个日报表合并得到,以此类推。
CAT控制台,即UI层,负责接收用户请求,从后台存储中将报表信息取出显示。对于实时报表,直接通过HTTP请求分发到相应消费机,待结果返回后聚合展示;历史报表则直接取数据库并展示。
所有原始消息会先存储在本地文件系统,然后上传到HDFS中保存;而对于报表,因其远比原始日志小,则以K/V的方式保存在MySQL中。
消息处理分五个阶段: 收集、传输、分析、存储和展示。
收集阶段:负责业务应用日志的埋点和采集。CAT目前提供多种语言的客户端供业务应用程序调用,埋点结果以消息树的形式存入传输队列。如果队列满,则会自动丢弃当前消息。
传输阶段:CAT客户端负责将客户端消息传输到后端,CAT消费机负责接收消息。传输前CAT客户端会与CAT消费机建立TCP长连接,不断地从客户端队列中取出消息树,序列化后写入网络;CAT消费机则不断地从网络中取出数据,反序列化后放入消费队列。
分析阶段:负责报表生成。实时消费调度器会将消费队列消息取出,分发给每个消费者内部队列;报表分析器只会从自己的报表队列中取出消息树,逐个消费,更新报表模型。CAT以小时为单位形成报表,原始日志转储(raw log dump)是一个特殊的分析器,它不生产报表,而是将消息存入本地文件系统。
存储阶段:负责报表和原始日志的存储,目前报表会存在MySQL中,原始日志压缩后存在HDFS中长久保存。保留时长取决于存储容量的大小,一般报表会保存3个月以上,原始日志保存一个月。
展示阶段:负责数据的可视化。作为用户服务入口,负责报表和原始日志的输出显示。对于实时报表请求,会向各个消费机分发请求,并将结果聚合后输出HTML,在浏览器展示;历史报表会直接取自数据库。XML数据输出是另一种内置的数据展示方式,方便基于CAT开放外围工具。
日志埋点是监控活动的 最重要环节之一, 日志质量决定着监控质量和效率。当前CAT的埋点目标是 以问题为中心, 像程序抛出exception就是典型问题。我个人对问题的定义是: 不符合预期的就可以算问题。 比如请求未完成,响应时间快了慢了,请求TPS多了少了,时间分布不均匀等等。
在互联网环境中,最突出的问题场景,我的理解是,跨越边界的行为。包括但不限于,HTTP/REST、RPC/SOA、MQ、Job、Cache、DAL; 搜索/查询引擎、业务应用、外包系统、遗留系统; 母/子公司, 第三方网关/银行, 合作伙伴/供应商之间;还有各类业务指标,如PV、用户登录、订单数、支付状态、销售额。
CAT提供API支持的语言有:Java,.NET,将来打算支持C/C++、NodeJS、Go、PHP、Python等。
此模型可以覆盖大部分业务应用的日常埋点需求。各种类型都有个性化分析和展示。
CAT消息树如实记录真实用户请求的处理时序,这些请求可能被分布在多台机器上。消息树可以丰富地表达嵌套关系、先后次序和并行处理,这将有助于开发者清楚的了解用户请求到底是怎么被一步步执行的,尤其在追踪一些疑难杂症时,这会特别有用。
只要遵循CAT埋点规范,CAT会自动地将多台机器上的消息树串起来,可以逐层展示。
当然也有另一种更适合于人的视图,方便识别突出问题,毕竟人对图形识别更加擅长。
API力求 精简, 将来还有进一步 优化空间。 大部分CAT埋点应该在底层基础架构中完成,一般应用层不需要做大多埋点。有些产品使用如java-agent等方式埋点,CAT埋点也可以采用,埋点质量取决于现有应用代码的规范程度和覆盖范围。
CAT的实时性不是用户要看什么,CAT就实时计算出结果,呈现给用户;而是根据日志消息的特点(比如只读特性)和问题场景,量身定做的。CAT将所有的报表按消息的创建时间,一小时为单位分片,那么每小时就产生一个报表。当前小时报表的所有计算都是基于内存的,用户每次请求即时报表得到的都是最新结果,给人一种“实时”的感觉。对于历史报表,因为它是不变的,所以就实时不实时也就无所谓了。
对于内存增量计算,它可以分为:计数、计时和关系处理三种。计数又可以分为两类:算术计数和集合计数。典型的算术计数如:总个数(count),总和(sum),均值(avg),最大/最小(max/min),吞吐(tps)和标准差(std)等,其他都比较直观,标准差稍微复杂一点,大家自己可以推演一下怎么做增量计算。那集合运算,比如95线(表示95%请求的完成时间),999线(表示99.9%请求的完成时间),DAU(日活用户数)等,则稍微复杂一些,系统开销也更大一点。关系处理则涉及图的运算,这里不细述。
了解增量计算很重要,但最终需要落实到各个不同的报表上。一个报表往往有多个维度,以transaction报表为例,它有5个维度,分别是应用、机器、大类、小类和分布情况。如果全维度建模,虽然灵活,但开销将会非常之大。CAT选择固定维度建模,可以理解成将这5个维度组织成深度为5的树,访问时总是从根开始,逐层往下进行。
CAT为每个报表单独分配一个线程,所以不会有锁的问题,所有报表模型都是非线程安全的,其数据是可变的。这样带来的好处是简单且低开销。
报表代码是使用自研的maven plugin自动生成的。所有报表是可合并和裁剪的,可以轻易地将2个或多个报表合并成一个报表。在报表处理代码中,CAT大量使用访问者模式(visitor pattern)。
消息存储是CAT最有挑战的部分。关键问题是消息数量多且大,像大众点评和携程每天消息数在300-400亿左右,大小有50TB,也就是说每秒消息数在50-60万上下,每秒大小在1GB左右。如果分10台机器处理,则每天每秒需要处理5-6万消息,100MB大小。如果网站流量来点波动的话,挑战就更大了。由于时间关系,这部分今天就不细述了(感兴趣的同学,欢迎加群与吴老师一对一交流)。
CAT在分布式实时方面,主要归结于以下几点因素:
去中心化,数据分区处理;
基于日志只读特性,以一个小时为时间窗口,实时报表基于内存建模和分析,历史报表通过聚合完成;
基于内存队列,全面异步化,单线程化,无锁设计;
全局消息ID,数据本地化生产,集中式存储;
组件化、服务化理念,致力于工具间互通互联。
吴其敏,互联网老兵,软件工匠,开源爱好者,一直深入代码一线,接触java近20年。现在携程网负责框架研发,曾任大众点评网首席架构师、任eBay&易趣资深架构师等。关注分布式系统框架、组件化系统开发,高质量数据建模和代码生成等。
问题:业界类似解决方案,以及与CAT的异同?
业界有很多开源监控系统,但大多是基于日志行的(如ELK),CAT是基于日志树的。其中最主要的差异是监控源数据的质量。
问题:请问吴老师,CAT与应用间是否做了反馈机制,监控报警后是否会有应用重启,服务降级这种操作?点评内部的pigeon是否有这种服务健康检查包括自动降级的功能,能否谈谈您的看法?
监控可以理解为监和控。现阶段CAT的侧重点还是在监上,将来会考虑控的一面。要做到控,光CAT是不够的。
问题:CAT如何做到高实时性,又如何避免对应用本身性能,可用性等产生影响的?
CAT在编码的时候非常的关系性能,每一行代码都经过多次review。消息发送异步化也是避免对主线程造成性能和可用性干扰的重要手段。另外,CAT在设计时就要求做到:不保证可靠,如果后台出现可用性问题和性能问题,客户端会主动丢弃消息,确保应用可用。
问题:怎么解决埋点性能问题?特别是访问量大的应用,千万级的,出现问题很多?
这是个好问题。CAT不会帮你解决业务埋点的问题。监控埋点是一个领域,跟你要解决的问题非常相关,不同应用,不同场合,不同公司的历史阶段,应该采取不同的策略。对于访问量非常大的应用,CAT埋点要做到小而精,适当的时候可以在客户端做一下聚合。
问题:请问这里的消息树是怎么实现的?是自己规定流程自主研发吗?
只要使用CAT API埋点,消息树是自然而然形成的,无需特别处理。CAT中有示例代码,可以参考一下。
问题:请教吴老师cat server端集群部署时,且数据落本地磁盘,报表的统计基于全量数据还是只是开起任务的哪台机器上的数据,如果是全量的,数据是怎么汇总的?
CAT是主张全量日志分析的,全量数据落到每一台消费机上只是一个分片,CAT中所有报表都有内置将分片合并的能力,所有的报表在展示时会合并,做数据汇总。
问题:如果客户端上报大量size很大的日志,CAT有没有自保护?
有。CAT在客户端有保护机制,服务器端一般处理能力很强,有一定的保存措施,如丢弃消息之类的。但如果报表过大,则可能会出现内存问题。
感谢志愿者田光、攀爬的蜗牛、Bendy PAN、qiaoliang、王旭林、cloes对本文的整理和编辑。本文是老X聊架构系列文章的第十篇,聊聊架构社群将会邀请国内顶级的架构师与大家探讨实战中的架构经验,欢迎关注『聊聊架构』公众号并回复『干货』获取入群方式。
为你推荐并呈现
文章来源:公众号:聊聊架构(ID:archtime)
文章作者:吴其敏
友情提示:
若出处标注错误,请联系QQ:及时更正,感谢理解和支持!
少年关注我们的官方微博@产品100和微信订阅号:chanpin100ghsd,有惊喜哦!
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
题主有一些pc端web前端开发的经验,但移动端web前端了解较少且没有实践过。
想了解一些移动端web前端开发的经验。
尤其是关于响应式布局和性能问题。
有哪些需要注意的问题?
有哪些好的框架推荐?
与设计团队,产品团队,后端开发团队的对接方面有什么需要注意的?
忘记提很重要的一点:Hybrid App 和 移动版网站会有需要分别注意什么?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这里推荐一些关于移动端开发的博文:
希望对需要了解或者准备开发手机端页面的朋友有所帮助
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Hybrid App
js方面:zepto.js jquery-mobile
CSS方面:jquery-mobile boostrap
hybrid app其实就是在写网页,不过最后用cordva进行封装
不过性能方面还是没有单纯的安卓应用好。
一般现在市场上的应用都是在安卓里调用H5+JS这样。
项目DEMO你可以参考下:
因为这个是正在做的项目,所以只公开了刚开始构建的时候的一点静态页面。可作为入门参考。
这里是一个完整的DEMO:
求星星~~用jquery-mobile构建的前端页面,后来用phonegap封装了一下。
不过目前只上传了完整的前端静态页面……采纳我,我上传完整版本。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Hybrid App其实就是在做网页,只是本地的功能是通过JS调用,所有出错调试比较麻烦,移动网站开发,看你兼容哪些设备,是否需要响应式布局,ios的的浏览器兼容性就不用说了。主要是android的浏览器兼容,国内主流的那几个主流浏览器做好测试就行。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
说说webApp开发的注意事项:
2、首屏加载时间
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要举报该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 大众点评cat监控解析 的文章

 

随机推荐