19
构构构构构构构构构构构淘淘淘 淘淘淘 http://NinGoo.net 2010-4

构建高可用数据库监控系统

Embed Size (px)

DESCRIPTION

数据库技术大会主题演讲

Citation preview

Page 1: 构建高可用数据库监控系统

构建高可用数据库监控系统

淘宝网 宁海元http://NinGoo.net

2010-4

Page 2: 构建高可用数据库监控系统

DBA 每天面临的问题

•每天都要做一些同样的事情重复工作•无法实时知道数据库的运行情况实时监控•故障后登上服务器时问题已不在了故障重演• 总是故障发生了才想办法解决事后英雄 •拍脑袋的方式决定数据库扩展性扩展评估

Page 3: 构建高可用数据库监控系统

Taobao DBA 面临的挑战

•Oracle/MySQL/AIX/HP-UX/Linux环境复杂•Oracle 30+ / MySQL 200+数量庞大•Oracle 60+ / MySQL 800+增长迅速• 开发 DBA / 系统 DBA / MySQL

DBA分工明细 •一个集群32/64/128台机器分布式架构

Page 4: 构建高可用数据库监控系统

如何解决!!!

?? ?

Page 5: 构建高可用数据库监控系统

数据库监控平台7*24 全方位的数据库监控主机集群性能数据采集分析预警数据库性能数据采集分析预警Alert 日志异常问题实时告警SQL 语句多角度分析及跟踪表 / 段 / 文件系统空间趋势分析预警数据库活动会话 / 连接数跟踪历史监控数据趋势分析任意时间段历史监控数据查询

Page 6: 构建高可用数据库监控系统

数据库监控系统架构

监控

健康检查

异常报警

性能监控

存储监控

展示

运行情况

性能展示

用户定制

专业报告

存储展示

异常展示

agent 数据采集& 分析

Page 7: 构建高可用数据库监控系统

数据库监控部署架构

监控服务器数据库

服务器监控数据库

Agent

数据采集& 分析

监控服务器 ( 备 )

M-M

Replication

Page 8: 构建高可用数据库监控系统

Agent• 采用 Perl/Shell 等脚本语言编写• 基于时间同步的心跳检测• 主机数据监控• Alert 日志实时监控• 统一部署,自动更新

Page 9: 构建高可用数据库监控系统

数据采集 & 分析•在 Monitor 主机上采用 Perl/Shell 脚本实现• 脚本轮询采集 vs c 语言多线程并发采集• Monitor 双主机冗余,故障切换• 监控数据库 MySQL Master-Master Replication•前一天 / 一周内同时刻数据对比• 异常波动积分• 基于积分和集群的阀值预警

Page 10: 构建高可用数据库监控系统

监控告警• 分级告警:旺旺 (IM) ,手机,邮件• 多重校验:异常过滤,瞬间波动过滤• 集群告警:基于集群整体和单点数据对比告警• 定时报告:定期健康检查报告

Page 11: 构建高可用数据库监控系统

数据展示• 采用 PHP/RRDTool/Jpgraph 实现 Web 展示• Oracle 超过 50 种性能数据曲线• MySQL 超过 30 种 Global Status 数据曲线• 同时显示当前 / 前一天 / 一周内对比数据• 可查看 2 天 /1 周 /1 月 /1 年四种时间窗口的状态• 异常曲线图自动置顶• 曲线图模糊查询• 曲线图源数据查询与导出为 Excel

Page 12: 构建高可用数据库监控系统

数据库性能曲线图

Page 13: 构建高可用数据库监控系统

异常曲线自动置顶

Page 14: 构建高可用数据库监控系统

快照统计报表

Page 15: 构建高可用数据库监控系统

快照统计报表 =>top sql report

Page 16: 构建高可用数据库监控系统

top sql report=> 性能曲线

Page 17: 构建高可用数据库监控系统

问题解决

•由程序代替部分人力劳动重复工作•实时对数据库进行扫描实时监控•周期记录重要的历史信息历史重演• 了解数据库的情况,防患于未然事后英雄 •根据监控数据进行决策扩展评估

Page 18: 构建高可用数据库监控系统

问题解决

•统一的Perl脚本Agent环境复杂•多线程数据采集+分布式Agent数量庞大•监控系统水平可扩展增长迅速• 统一的监控管理界面分工明细 •基于集群的分析告警分布式架构

Page 19: 构建高可用数据库监控系统

感谢各位! Show@All