Upload
others
View
41
Download
0
Embed Size (px)
Citation preview
! CAT���(Central Application Tracking)
⼤大众点评、架构组、尤勇 微博:DP尤勇
⼤大纲! CAT背景
! CAT介绍
! CAT报表
! CAT设计
! CAT案例
! CAT总结
⼤大纲
! CAT背景 ! CAT介绍
! CAT报表
! CAT设计
! 实际案例
! CAT总结
小米+步枪
! Java迁移初期,2009-2010年
! Cacti、Nagios ...
! Bug Email
! Error Logs
趟过的坑! SOA之后多个应用同时报错,不知道是哪个出错了
! ⼤大量报错,需要花很久时间才能定位 ! 很多问题最终都说可能是⽹网络问题 ! 项目出现⼀一堆异常根本不关⼼心
! Mobile⼀一开始上线⼀一天就⼏几⼗十到上百万异常 ! 调用缓存、数据库基本是⿊黑盒⼦子
! ⼀一次将线上的库配置到了Beta,花了整个通宵排错
监控背景
! Hawk监控
! 典型基于Key-Value的日志监控模型
! 完成了异常,cache,sql等监控
! CAT监控
! eBay的CAL取得了巨⼤大成功
监控分层
! 业务监控 ! 通过⼏几个核⼼心指标来确定业务正常
! 应用监控 ! 通过监控应用运⾏行指标来确定应用健康状况(URL\CALL\Cache\SQL等)
! 系统监控 ! 监控系统的运⾏行指标 ! CPU、Memory、IO ! Zabbix,Cacti
监控作用
减少线上故障发现时间(OP) 减少线上故障定位时间(OP) 帮助应用程序进⾏行优化(PD)
⼤大纲! CAT背景
! CAT介绍 ! CAT报表
! CAT设计
! CAT案例
! CAT总结
CAT简介
! CAT(Central Application Tracking)是基于Java开发的实时应用监控平台,为⼤大众点评⽹网提供了全面的监控服务和决策支持。
! CAT作为⼤大众点评⽹网基础监控组件,它已经在中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等)中得到⼴广泛应用,为点评各业务线提供系统的性能指标、健康状况、基础告警等。
CAT现状! 集成中间件产品(RPC、SQL、Cache等)
! 5台CAT物理监控集群
! 200+ 业务应用(包括部分.net以及Job)
! 900+ 应用服务器
! ~6TB 消息⼤大小,~50亿消息(每天)
! ~800GB 存储(每天,压缩后)2013-09
CAT的Logview ! 消息头
! 版本号,消息ID,所属业务,IP,所在线程,根消息ID
! 消息体
可视化的Logview
分布式Logview
⼤大纲
! CAT背景
! CAT介绍
! CAT报表 ! CAT设计
! CAT案例
! CAT总结
CAT报表! Transaction
! ⼀一段代码运⾏行时间、次数,比如URL、Cache、SQL执⾏行次数和响应时间
! Problem ! 系统可能出现的异常,包括访问较慢的程序等
! Heartbeat ! JVM内部⼀一些状态信息,Memory,Thread等
! Dependency ! 系统之间实时调用数据信息,包括远程服务、数据库、缓存等
! Metric ! 业务监控报表
! Matrix ! ⼀一个请求调用链路统计
! Event ! 记录程序中⼀一个时间执⾏行的次数,比如异常等
! Cross ! SOA系统用关于RPC调用的报表
! State ! CAT自身状态监控,包括处理消息数、丢失消息
! ...
Transaction报表
具体URL报表
URL趋势! 时间分布
! 响应时间分布
! 访问量分布
! 错误量分布
Problem报表
Heartbeat报表
Matrix报表
! 远程调用、sql调用、缓存调用最多排⾏行
! ⼀一次的页面中,最多调用远端服务14791次,这个是需要优化的地⽅方。
Cross报表! 统计粒度支持项目、具体某⼀一IP、具体的服务⽅方法
! 客户端调用
! 客户端会调用Swallow,UserBaseService,SmsServer,MailServer
Cross报表
Dependency报表
! 圆形->服务
! ⽅方框->数据库
! 菱形->缓存
! 红⾊色-> Error
! 黄⾊色-> warning
! 绿⾊色-> OK
应用监控⼤大盘
业务监控⼤大盘v1.0
⼤大纲! CAT背景
! CAT介绍
! CAT报表
! CAT设计 ! CAT案例
! CAT总结
CAT设计! 监控系统指标
! 监控API
! 客户端设计
! 服务端设计
! 物理部署
! 数据建模
监控系统指标
! 对应用⽆无影响(服务端上线、宕机等)
! 实时性(消息尽快到达服务端)
! 吞吐量(服务端⾼高的吞吐量)
! 开销低(客户端尽可能开销低)(开销2%以内)
! 可靠性(消息100%到达服务端)
! 服务端处理100%的到达消息
监控领域建模
⼀一段代码执⾏行时间
⼀一段代码执⾏行次数
定期执⾏行某些代码
⼀一个指标的变化值
url/sql响应时间
Exception出现次数
分钟粒度Cpu,IO
监控销售额
Transaction
Event
Heartbeat
Metric
监控API
客户端设计
开始
HttpThread
结束
Call
SQL Cache
e ......
创建消息树
ThreadContext
创建Call节点
加⼊入SQL节点
加⼊入Cache节点
.....
消息构建结束
Sender
threads
Message Queue
Sender Sender
Server Server
Server
客户端需要注意问题! 内存开销
! 不恰当埋点⽅方式,消息⾜足够⼤大
! CPU开销
! 构建消息⾜足够轻量
! 异步发送消息
! 异常状况
! ⽹网络问题
! 服务端宕机
服务端设计
监控消息 异步发送
消息消费机
Receiver
threads
File 消息转储 异步线程
统计报表
Queues
将多线程任务转换单线程处理模型
应用A
应用B
应用C
Receiver
Receiver
Analyzer
threads
Analyzer
Analyzer
服务端注意的问题
! 消息处理速度,每秒处理5w+消息 ! Calendar,SimpleDateFormat ! Line95计算 ! List的转化为Map
! 复杂任务异步化 ! 消息存储,消息压缩,消息传输
! 自身监控,容量评估
部署
应用A
应用B
应用C
TCP
消费机
消费机
控制台
控制台
Logview Report
实时数据查询
历史数据查询
Consumers Consoles
数据建模
! 目标模型定义
! 访问、转换和合并
! 模型持久化
! XML, JSON, Binary...
! 代码⽣生成
⼤大纲! CAT背景
! CAT介绍
! CAT报表
! CAT设计
! CAT案例 ! CAT总结
故障定位
! 收到告警
! tuangou-web logscan 发出⼤大量告警
! zabbix review-service FGC 告警
! zabbix tuangou-web error 告警
! zabbix mobile-api error 告警
第⼀一步:监控⼤大盘! V0.1时候的监控⼤大盘
第⼆二步:点击TuanGouWeb
第三步:点击Review
! 发现依赖调用ReviewServer的所有项目都报错
! cache-server和dianpingcomm库的调用异常,可能是cache有关操作引起的。root case也确实如此
⼤大纲! CAT背景
! CAT介绍
! CAT报表
! CAT设计
! CAT案例
! CAT总结
CAT项目总结! 1年半时间,2-3个⼈人
! 持续集成,持续发布,不断监控
! 单机开发和调试
! Everything Fails
! 尽可能的减少配置
! 关注客户,快速响应
CAT Future
! Open Source(http://github.com/dianping/cat)
! Code Clean
! Remove Dependency
! Document
! TestCase
QA
! Thanks
业务
应用
系统