1
滴滴出行监控演化之路
俞进秋
About Me
2010 – 2014 百度
业务运维(文库, 知道, 百科, …)
消息中间件运维研发
2014 – Now
Devops 团队
运维平台建设
提供统一运维解决方案
Agenda
滴滴业务和监控演进
当前架构介绍
监控实践分享
见证 (机器从百 -> 千 -> 万) 发展
目前监控的架构
监控上做的比较好地方进行分享
4
原始时代
时间: 2012 年
运维: 0
流量: < 10 w
机器规模: 1台 -> 2台
环境: 公有云 -> 租用 IDC
监控: 基本上没有
5
石器时代
时间: 2013 年
运维: 1人 -> 2 人
流量: 3kw ~ 2亿
机器规模: 2台 -> 100台
环境: 租用 IDC
监控: nagios 监控
监控主要内容: 硬盘, 端口存活
铁器时代
时间: 2014 年
运维: 2人 -> 7人
流量: 5亿
机器规模: 2k
监控: 平台萌芽
监控平台萌芽
背景:
业务服务组件多样, 当时监控需求急剧增长
基础监控 ( CPU, Mem, IO, 网卡带宽, 进程存活)
Nginx 流量, 状态码
Php-Fpm (活跃进程数, error log, slow log)
MySQL 连接数, 主从延迟, slow log
Memcached 连接数, 命中率
…
监控系统
抽象存储模型:
time-series = [datapoint1, datapoint2, datapoint3, datapointN ]
datapoint = {
“name” : “”,
“value” : ${value},
“timestamp” ; 1460461800,
“tags” : {
“host” : ${host1},
“core” : 0
}
}
监控系统 架构
OpenTsdb
Hbase
Riemann
Logtail(日志)
Tcollect(系统)
SRE Script
10
监控系统 问题
Api
mis
出租车
Api
mis
专车
Api
mis
……
业务快速增长, 产品线增加
多个产品线节点空间隔离, 监控项冲突
出租车 ( ) 和 专车 冲突
采集配置在本地, 机器调整监控无法联动
11
监控系统 架构
OpenTsdb
Hbase
Riemann
Logtail
Tcollect
SRE Script
空间隔离( WorldTree)
UI
12
监控系统 问题
机器规模急剧增加, 采集指标指数级增长
监控数据统一放在一个篮子 ( hbase 集群 )
数据存储上没有逻辑空间隔离(集群聚合实现困难)
日志监控添加 OP 人工写脚本, 成本较高, 差异化较大
13
监控系统 架构
1: 监控前面增加 Queue, 避免流量直接打死后端服务
2: 逻辑空间在展示和写入的时候都提供
14
监控系统新挑战
国际化异地多机房监控
一个区域一套?
传输到统一区域处理?
15
监控系统架构
Region 3
Region 1
Region 2
Gateway
Gateway
Region 内部集中收集
非中心 Region 数据传输到中心 Region
中心 Region 统一存储, 报警, 展示
监控采集策略分发到各个 Region
传输安全性和效率
安全性: Region 间传输https+白名单
效率: 发送窗口 + 压缩
16
监控实践分享
集群模式( 流量:求和, 耗时:均值, Max, Min)
17
监控实践分享
多维度对比(时间对比, Tag 对比)
18
监控实践分享
监控回调(故障自动处理)
19
监控实践分享
监控 dashboard(服务监控沉淀)
20
监控实践分享
监控标准
程序内嵌 lib
Lib 限定上报名称
服务描述在 Tag 实现
服务报警自动添加
21
Q&A
22