9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

从 0 到 1 搭建技术中台之慢日志系统

  • 2020-07-20
  • 本文字数:2248 字

    阅读完需:约 7 分钟

从0到1搭建技术中台之慢日志系统

自去年开始,中台话题的热度不减,很多公司都投入到中台的建设中,从战略制定、组织架构调整、协作方式变动到技术落地实践,每个环节都可能出现各种各样的问题。技术中台最坏的状况是技术能力太差,不能支撑业务的发展,其次是技术脱离业务,不能服务业务的发展。前者是能力问题,后者是意识问题。在本专题中,伴鱼技术团队分享了从 0 到 1 搭建技术中台的过程及心得。

1. 背景

伴鱼少儿英语是目前飞速成长的互联网在线英语教育品牌之一,特别在疫情这段时间内,业务量增长近 3-4 倍。这期间,伴鱼慢日志系统对于帮助我们及时发现数据库性能问题、预防数据库性能风险和维护线上服务稳定性起到了很大的作用。


目前,伴鱼有 10 套 TiDB 数据库,20+套 MongoDB 数据库,近 200+数据库实例。日常数据库性能问题处理,需要分析数据库慢日志,由于慢日志分散在多台机器,我们面临日志查询/分析/统计等各种不便。因此,我们设计了伴鱼慢日志系统并满足以下几个要求:


  • 慢日志集中准实时收集

  • 日志查询/分析/统计可视化

  • 慢日志定时报表

  • 慢日志灵活告警


下面详细介绍下伴鱼慢日志系统设计以及系统给我们带来的实实在在的效果。

2. 慢日志系统详解

我们认为数据库的性能问题,绝大部分原因都是由慢 SQL 导致的,当然像数据库 bug、业务异常流量等情况,在伴鱼还是比较少见的。所以,伴鱼慢日志系统主要围绕如何准实时收集分布式 TiDB 的慢日志、如何快速的做分析统计、定时向业务推送慢日志报表以及如何灵活的告警等方面进行设计。

2.1 准实时集中收集慢日志

我们采用了业界比较成熟的开源日志采集、分析、存储和展示架构,如下图所示。



其中,每个组件的功能如下:


  • filebeat 负责增量收集 TiDB 产生的慢日志,由于 filebeat 比较轻量,对线上性能基本无影响。

  • kafka 负责缓冲存储 filebeat 采集的原始日志

  • logstash 负责把原始日志解析成我们想要的键值对

  • es 负责存储经过 logstash 加工后的数据

  • kibana 负责数据的查询/分析/统计的可视化


filebeat 采集 TiDB 的慢日志配置,如下图所示。



原始慢日志经过 filebeat 采集阶段简单处理后存储到 kafka,原始慢日志如下图所示。



存储到 kafka 的慢日志部分内容格式,如下图所示。



日志存储到 kafka 后,logstash 负责读取其中的慢日志并进行解析,转换成我们想要的 kv 键值对,如下图所示。



对于 TiDB 的慢日志,我们重点关注慢日志中的某些字段,比如:


index_name: 语句执行过程中是否用到索引DB:表示执行语句时使用的databasequery_time:表示执行这个语句花费的时间total_keys:表示Coprocessor扫过的key的数量process_keys:表示Coprocessor处理的key的数量sql:执行的sql语句
复制代码


解析后的数据最终存储到到 es,供 kibana 查询、分析以及统计使用。

2.2 慢日志查询分析统计的可视化

慢日志通过 logstash 解析入到 es 后,通过 kibana,我们可以把解析的字段作为查询和聚合的条件,很方便的对慢日志数据进行分析统计。



比如我们经常有如下操作:


  • 5 分钟内,慢请求分别按照 db 和 table 聚合

  • 5 分钟内,Process_keys 大于 5000 的慢请求

  • 5 分钟内,query_time 大于 200ms 的请求


通过近似数据库表查询操作,我们能对慢日志进行多维度的分析,及时探究线上的性能问题。当然操作远不止这些,研发同学还可以在 kibana 平台上定制所属业务 db 慢日志的趋势图、配置告警等。

2.3 定时发送慢日志报表

在伴鱼,通常一个服务对应一个 DB,并且要求 db 名和服务名相同,每个服务有明确的业务负责人(owner) 和服务等级以及所属的具体的业务组,如下图所示。所以根据 DB,可以将慢日志告警和报表推送给具体的业务负责人。



基于加工后的慢日志数据,从多种维度,比如集群、库、表、操作类型、慢日志数量、执行总时间、平均响应时间以及最大耗时等维度对慢日志进行分析统计,并生成报表定时发送给研发同学。


2.4 慢日志灵活告警

在伴鱼,一个 db 对应一个服务,所以告警都是在特定 db 下设置规则。目前,我们告警时间粒度默认是一分钟(粒度可以灵活控制),主要基于以下三类规则进行告警。


  • 某个 db 下的请求时间达到 100ms 且慢日志达到一定数量则告警

  • 某个 db 下的请求时间达到 500ms 且慢日志达到一定数量则告警

  • 某个 db 下的请求 Process_keys 大于 5000 且慢日志达到一定数量则告警



告警规则的设置不是一蹴而就的,需要根据不同的业务场景,dba 和研发不断的调整,最终达到一个比较合理的阀值。

3. 慢日志系统给带来的收益

目前,我们 10 个生产 TiDB 集群,有 6 个核心集群请求过万,如下图所示。



慢日志系统主要给我们线上服务带来 3 个收益。


  • 响应延时低,6 个请求过万核心集群,999 线基本维持在 16ms 左右,如下图所示

  • 慢日志越来越少,tidb 所有集群的慢日志(大于 200ms),30 分钟内,高峰期条数基本维持在 1000 以内

  • 故障少,除一次 tidb 优化器 bug 导致大表查询故障,影响线上近 15 分钟外。近半年没有 tidb 引发的线上故障。


4. 总结

目前,伴鱼慢日志系统在性能问题发现和预防数据库性能风险等方面发挥了很重要的作用。未来,我们将继续挖掘慢日志里的信息,丰富慢日志系统的功能,为伴鱼数据库保驾护航。


相关文章推荐:


《从 0 到 1 搭建技术中台之推送平台实践:高吞吐、低延迟、多业务隔离的设计与实现》


《从 0 到 1 搭建技术中台之技术文化篇》


《从 0 到 1 搭建技术中台之协作方式篇》


《从 0 到 1 搭建技术中台之报警平台实践:匹配器演进》


《从 0 到 1 搭建技术中台之发布系统实践:集泳道、灰度、四端和多区域于一体的设计与权衡》


《从 0 到 1 搭建技术中台之 A / B Testing 平台实践》


《从 0 到 1 搭建技术中台之组织架构篇》


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-07-20 11:493670

评论

发布
暂无评论
发现更多内容

堡垒机价格与什么有关?价格差别大吗?

行云管家

云计算 堡垒机

如果用柔性屏做雨伞,那雨伞就不仅仅是雨伞了

船医特拉法尔加

开发者工具

2021 年最新版,阿里巴巴 / 今日头条 / 京东 Java 面经大合集(含答案)

Java 编程 面试 IT 计算机

Java书单-比较全的一篇

汤圆学Java

程序员

企业上云之前选择服务器类型的几点建议

九河云安全

保险=诈骗?区块链赋予保险的“四个机会”

旺链科技

区块链 保险业 信任构建

2021 年云安全:基本工具和最佳实践业务指南

九河云安全

站在巅峰的阿里面试参考指南!居然能让我成功拿下 12 家大厂 offer?

Java 程序员 架构 面试 IT

企业架构概述

涛哥 数字产品和业务架构

IOS技术分享| 互动连麦场景实现

anyRTC开发者

ios 音视频 移动开发 视频直播 直播连麦

针对不同场景的Python合并多个Excel方法

Python研究者

Python Excel 8月日更

总结分析组件化漏洞产生的原理

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞分析

我是一个下「笨功夫」的人

非著名程序员

个人成长 认知提升 个人提升 8月日更

从平台到生态,钉钉、飞书和企业微信的巨头之争

ToB行业头条

钉钉 企业微信 飞书

涨薪 150%,从小厂逆袭,坐上美团 L8 技术专家(面经 + 心得)

Java 编程 程序员 架构 IT

支付通道接口异常统计上报

try catch

Java 失败上报

同事吃透了这份“阿里 Java 面试核心知识手册”6月份居然斩获 11 张大厂 Offer!

Java 编程 架构 面试 IT

阿里 Java 面试爆出内幕?十万字内部面试题总结(2021合格版)全网开源!

Java 编程 程序员 架构 IT

在小厂工作三年的程序员喊话大厂:Java 中高级岗面试为何越来越难?

Java 程序员 架构 面试 IT

FastApi-09-模型嵌套

Python研究所

FastApi 8月日更

七牛云霍锴:实时音视频 SDK 设计实践

七牛云

七牛云存储 音视频 ECUG

我终于在六月份实现了跳槽九连杀:字节跳动 Java 研发岗

Java 编程 面试 IT 计算机

网络攻防学习笔记 Day101

穿过生命散发芬芳

态势感知 网络攻防 8月日更

浪潮云洲智造直播间,继续开讲!

浪潮云

云计算

快速发展的互联网通信,站在开发者背后的融云

融云 RongCloud

【等保测评】江西等保测评机构只有3家吗?都在哪里?

行云管家

等保 等级保护 等保测评 等保评测

前端性能优化|什么是防抖和节流?

青云技术社区

JavaScript 大前端 防抖节流 函数防抖

高防服务器在使用过程中可以做到高效、稳定的防止钓鱼攻击

九河云安全

入职那天“直接起飞”!双非渣本后端,两个月逆袭字节?

Java 编程 程序员 面试 计算机

神啦!最全“Java面试宝典+Java核心知识集”,一箭双雕杠秋招

Java 程序员 架构 面试 IT

三年豹变!拥抱Z时代,UDE迈向消费电子国际大展

科技热闻

  • 扫码添加小助手
    领取最新资料包
从0到1搭建技术中台之慢日志系统_数据库_伴鱼技术团队_InfoQ精选文章