Upload
others
View
14
Download
0
Embed Size (px)
Citation preview
美团点评分布式实时监控平台CAT
美团点评基础架构 孙佳林
目录
CAT介绍
架构与设计
实战经验
CAT介绍
• CAT(Central Application Tracking)
• 基于纯Java开发的分布式实时监控系统• 分布式• 实时 (毫秒)• 近全量• 监控(性能指标、健康状况、基础告警等)
Why?
• 系统指标正常 ≠ 应用健康
• 故障快速发现定位(时间 == 金钱 )
• 用户侧真实访问情况
• 掌握线上的应用健康,扩容、缩容、降级 …
Do what?
• 故障发现
• 性能分析
• 治理
How - 故障发现
• 业务大盘• 报错大盘• 服务大盘• 存储大盘(数据库、缓存)
• 实时告警服务
业务大盘
报错大盘
服务大盘
数据库大盘
How - 性能分析
• 指标• 访问量• 响应时间
• 对象• 应用本身(业务请求量、响应时间)• 客户端(RPC服务、数据库、缓存、消息 …)• 服务端(RPC服务、数据库、缓存、消息 …)
一个case
• 特定业务订单成交的分钟级统计• 成交额总量• 成交数总量
• 成交平均耗时、最大耗时、TP9X …• 执行出错量• 请求落到服务器的分布情况
简单做法
long start = System.currentTimeMillis();
try {int money = myBusinessPayOrder();
System.out.println("myBusinessPayOrder");} catch (Exception e) {
logger.error(e);}
long timeElasped = System.currentTimeMillis() - start;
System.out.println("myBusinessPayOrder_time:"+timeElasped);
CAT APITransaction t = Cat.newTransaction("URL", "PayOrder");
try {int money = myBusinessPayOrder();
Cat.logMetricForCount("myBusinessPayOrder");
Cat.logMetricForCount(“PayMoney", money);
Cat.logEvent("ServerIp", localIpAddress);
t.setStatus(Transaction.SUCCESS);} catch (Exception e) {
Cat.logError(e);t.setStatus(e);
} finally {t.complete();
}
业务监控Metric
Transaction 报表
Transaction报表
• 支持项目、IP、TYPE、NAME 四层统计
• 数据来源:
• API打点:Cat.newTransaction(type, name)
• 框架打点:框架层面 MVC、RPC、SQL、Cache、Message …
Transaction报表
分钟级统计
访问量趋势耗时分布
平均耗时趋势 成功率趋势
Event报表
• 用于一些事件的统计,比如程序异常路径访问、任务执行记录等
• 统计一些QPS分布、SQL长度分布等
• 数据来源:
• API打点:Cat.newEvent(type, name)
• 框架打点:框架层面 MVC、RPC、SQL、Cache、Message …
Event报表
Problem报表
• 实时分析所有transaction\event消息
• 找出存在异常的调用链路
• Exception
• Failed Transaction
• Long Http/SQL/Service/Call/KV
Problem报表
problem logview
Heartbeat报表
• 系统指标
• JVM指标
• 数据库连接池
• 业务实现SPI上报 …
Heartbeat报表
远端调用logview
设计目标
• 可扩展 √• 高可用 √ • 实时性 √ • 全量数据 √ • 高吞吐 √ • 故障容忍 √ • 可靠性 ✘
监控模型
消息组成
CAT整体架构
客户端设计
process in a thread
创建消息树
ThreadContext
Server
…
Server
Sender
…
Sender
长连接
CAT消费机制
应用A
应用B
应用C
Receiver
Receiver
Receiver
消费机
异步发送
Analyzer
Analyzer
Analyzer
异步转存
统计报表
Local
实战
• Mysql 服务端基本没有慢查询,CAT上却有很多long-sql
• CAT统计不对?OR …
CAT规模
• 接入应用数: 6K+
• 接入机器: 40K+
• 消息处理量(每天): 3000亿+
• 消息存储量(每天) : 230T+
• 高峰期QPS可达 : 550万
• 可用性 99.999+
CAT现状
Thanks
Q&A