《2019年贝壳找房数据库故障自动诊断实践 贝壳找房任数据库组负责人.pdf》由会员分享,可在线阅读,更多相关《2019年贝壳找房数据库故障自动诊断实践 贝壳找房任数据库组负责人.pdf(32页珍藏版)》请在三个皮匠报告上搜索。
1、中国软件技术大会CHINA SOFTWARE TECHNOLOGY CONFERENCE贝壳找房数据库故障诊断实践主题大纲 人工困局 智能解决 生产实践人工困局报警来了!人工处理故障困境人工处理场景下,运维人员通常选择 7*24 小时值班,接收大量的报警,随时准备在紧急情况下进行响应、决策、操作一系列故障止损动作,尽量挽回服务损失,降低故障影响。但上述解决方案会面临如下问题:响应可能不够迅速:例如夜间报警决策可能不够精确:例如新手经验欠缺,误决策操作可能出现失误:例如止损命令错误输入SLA 要求SLA季度不可用时长99%21.6小时99.9%2.16小时99.95%64.8分钟99.99%12
2、.96分钟刚打开电脑,SLA 就没了行业现状NoahCloudDBAMetis智能解决主动检查报警回调诊断触发DNS-域名绑定CMDB-服务详情信息收集Prometheus数据服务树-关联信息收集-文本Grafana-截图机器学习聚类启发式策略分析诊断分析信息反馈诊断报告报警历史统计故障类型标记报警管理数据库控制台IM(PC+手机)诊断结果故障处理主动防御故障自愈Logan服务架构(Logan)故障诊断效率100%覆盖线上 182 种数据库监控报警策略168 种诊断方案36 种自动恢复工具从人工诊断 5 分钟起减少到自动诊断平均 12.9 秒每日报警 50+次,至少可节省值班人 0.4 人日收
3、到报警不需要再登录服务器、不需要点开各种平台看监控指标,直接决策止损300秒12.9秒人工诊断自动诊断诊断耗时分类分类文档名称文档名称MySQL数据库故障处理预案Long Query 报警分析及处理Seconds_Behind_Master 报警分析及处理Threads_running 报警分析及处理Redis主库故障处理预案内存报警分析及处理网卡报警分析及处理通用SWAP 使用率报警分析及处理基于资源隔离的数据库降级预案常见报警项示例解读故障处理手段故障处理手段预估处理耗时预估处理耗时适用数据库适用数据库SQL 封禁5minMySQLSQL 查杀5minMySQL主库高可用切换5min通用域
4、名变更5min通用扩 SWAP1hour通用数据库资源隔离5min通用Redis 扩内存5minRedisRedis 加从库15minRedis数据库故障预案数据库报警统计减少无效报警发现重复问题优化夜间报警20010数据库专家系统13761871154411711MySQLRedisLinux监控项核心指标可靠的专家系统,摆脱经验限制,研发也能秒懂大浪淘沙,收敛聚合,排除干扰VPN企微+移动运维报警联动报警联动机器人切主库杀连接重启服务重做数据 人将故障处理流程自动化多个止损方案作决策生产实践故障诊断启发式算法故障类型故障类型故障故障诊断诊断套餐套餐检查点检查点Redis内存报警Redis内
5、存检查套餐Redis实例相关各项内存指标(用户数据/客户端缓冲/aof等),服务器内存余量等MySQL主从延迟主从延迟检查套餐线上流量情况,从库慢查询情况,从库的CPU负载/IO负载/网络情况等MongoDB cpu报警MongoDB cpu检查套餐线上流量情况,慢查询情况,服务器上CPU占用进程的TOPN等服务器磁盘报警服务器磁盘检查套餐服务器各关键路径下(数据/日志)的磁盘占用情况,线上流量情况等主动检查主动检查主动检查套餐根据存储类型的不同(MySQL/Redis),检查不同的常规检查项故障诊断启发式算法MySQLRedisMongoDBMySQL_slave_running.yamlM
6、ySQL-Swap_Use.yamlRedis_net_output.yamlRedis_Memory_URate.yamlMongoDB-Net_Out_.yamlMongoDB-Swap.yamlmysql_error_log.shlinux_swap.shlinux_mem.shmysql_show_slave_status.shlinux_iftop.shRedis_mem.pyMongo_net.sh报警相似度关联欧氏距离Levenshtein 距离皮尔逊相关系数余弦相似度Jaccard 系数Tanimo