写点什么

UAVStack 的慢 SQL 数据库监控功能及其实现

  • 2020-02-11
  • 本文字数:2578 字

    阅读完需:约 8 分钟

UAVStack的慢SQL数据库监控功能及其实现

UAVStack 是一个全维监控与应用运维平台。UAV.Monitor 具备监控功能,包含基础监控、应用/服务性能监控、日志监控、业务监控等。在应用监控中,UAV 可以根据应用实例画像;其中应用实例组件可以对日志、服务、客户端等进行画像;基于客户端的画像又分为 Http、Dubbo、MQ、Kafka、JDBC、Redis、MongoDB 等等。


一、背景


作为一个工作多年的程序员或运维人员,相信你一定遇到过以下情况:


· 场景一:系统出现异常情况,运维人员没能在第一时间发现,反而是业务方在使用过程中反馈系统崩溃、页面点不开。查看系统日志,发现一直在报连接数据库异常;


· 场景二:新功能上线稳定运行一段时间后,用户反馈页面响应越来越慢,打开一个页面要等好久。排查问题,发现是一个慢 SQL 影响了整个功能的体验。


为此,UAVStack 开发了数据库监控功能。最初,数据库监控功能只是对数据源、数据库连接池进行了指标采集,通过客户端画像可以查看实时的数据库连接池信息以及操作计数。最近 UAVStack 又解锁了一项新功能——慢 SQL 监控,使数据库监控功能更加完善。


今天小编就向大家介绍一下数据库监控的具体实现。文章中出现的以下关键字全部用简称代替:


· 中间件增强框架:英文 MonitorFramework,简称 MOF


· 健康管理服务:英文 HealthManager,简称 HM


· 监控代理程序:英文 MonitorAgent,简称 MA


二、关键技术 &UAV 自研框架


· MOF Agent 注入机制:MOF Agent 的注入机制以 Java agent 以及 Javaassit 技术作为基础支撑。Java agent 负责拦截和转换字节码流,转换过程中使用 Javaassist 进行解析和修改,在应用服务器生命周期的关键位置注入切点,为 MOF 框架初始化、应用的画像信息和实时监控数据信息捕获提供基础。


· InterceptFramework 框架:在应用启动的特定生命周期内改写字节码,植入特定的逻辑处理代码,即画像数据采集,采集的数据包含服务画像以及客户端画像;客户端画像包含 Http、Dubbo、MQ、Kafka、JDBC、Redis、MongoDB 等常见的开源组件,系统中调用的第三方服务都会被列为是客户端的对象,比如系统中调用了第三方系统的接口都属于客户端的范畴。


· CaptureFramework 框架:通过 InterceptFramework 框架在特定的生命周期改写字节码植入特定的逻辑代码,在植入的逻辑代码中可以通过 CaptureFramework 画像的 Monitor 捕获体系的能力采集数据以及数据存储。具体实现为采用 doCapture 来实现在特定的捕获点执行抓取数据行为,采用 doPreStore 来实现在存储数据结构之前的一些捕获动作,对抓取的数据进行特殊数据的处理,获取到处理完成后的数据再通过 UAVServer 调用具体的 Supporter,最后实现数据落地。


三、组成部分


慢 SQL 监控的实现分为四个组成部分:


· 慢 SQL 的动态启停:慢 SQL 的监控启/停依赖于 MOF 的 Global Filter 机制。在应用初始化时,UAV 对应用的 Filter 进行了改写,提供了向 MOF 下发指令的接口。只要调用接口传入规定的参数便可以实现对慢 SQL 监控的动态启停。UAV 系统中并不存在其它服务直接调用 MOF 的操作,都是通过 MA 来完成的。大家可以把 MA 理解为服务请求方与 MOF 之间的媒介。


· 慢 SQL 数据采集:依赖 InterceptFramework 框架在特定的生命周期改写字节码植入特定逻辑,同时采用 MOF 的 CaptureFramework 框架进行数据抓取并生成抓取结果。MA 会对生成结果的文件进行定时采集并封装成固定的数据结构发送至 MQ。


· 数据存储:在 HM 中创建独立的 feature 进行数据处理,消费 MA 推送至 MQ 中的数据,完成数据清洗再存储至 ES。由于数据采集的结果进行了特殊的约定,从 MQ 拿到的数据并不能直接转换成相应的结果,需要进行相应的解析处理才能进行存储(由于采集的数据中字段较多、可能含有特殊的字符会影响对数据的解析,在生成数据结果时有规则约束才能实现数据的正确解析)。数据库监控的 feature 还提供了查询、统计慢 SQL 操作的相关接口。


· 页面展示:操作页面可自主启停数据库监控,设置慢 SQL 的时间阈值。启停以及时间阈值的设置依赖于 MA 向 MOF 发送指令。页面展示的 SQL 统计、追踪等信息则通过 HM 的接口获取。


四、功能展示


数据库监控目前已实现的功能有 SQL 分类统计、数据库连接池监控、慢 SQL 耗时分布统计、慢 SQL 统计、慢 SQL 追踪以及调用链/日志关联功能。


SQL 分类统计:


· 数据来源:OpenTSDB(通过画像采集指标)


· 针对插入、删除、更新、查询、批量操作进行分类统计


· 根据时间分布展示数据库的访问情况,根据时间分布展示数据库的访问情况,展示所选时间段的总访问计数(累计值)


· 可以自定义时间条件查询历史数据



数据库连接池监控:


· 数据来源:OpenTSDB(通过画像采集指标)


· 可以查看连接池总连接数、活动连接数、空闲连接数的变化曲线



慢 SQL 耗时分布统计:


· 数据来源:ES


· 慢 SQL 统计可根据分类进行展示统计


· 针对慢 SQL 的耗时分布统计,最多查询 100 条


· 根据时间分布展示数据库慢 SQL 的访问情况,展示当前时间点的慢 SQL 访问时间、SQL、耗时


· 可以根据设置查询历史数据



慢 SQL 统计:


· 数据来源:ES


· 针对所有类型的 SQL


· 根据时间分布展示数据库某时间段的慢 SQL 统计


· 可以根据设置查询历史数据



慢 SQL 追踪:


· 数据来源:ES


· 查询条件为:关键字、是否慢 SQL 追踪、时间范围


· 根据搜索条件查询 SQL 追踪列表,列表展示内容为:SQL 语句、总执行次数、执行总时间、平均执行时间、操作-可查看详情



慢 SQL 追踪-详情查看:


· 数据来源:ES


· 慢 SQL 详情:点击某一条慢 SQL 统计可查看详情:包含开始执行时间、执行时长、入参、执行结果、影响条数



慢 SQL 追踪-调用链关联:


· 应用监控中需开启轻度调用链


· 点击某一行详细的执行时间,可以跳转至调用链页面,查看调用链的详细内容(相关的调用链高亮显示)



慢 SQL 追踪-日志关联:


· 应用监控中需开启日志归集


· 点击某一行详细的调用链内容的日志关联,可查看相应的日志信息,相关的日志行数高亮显示



五、总结


数据库监控是不容忽视的,好的数据库监控可以帮助优化系统并进行实时预警。通过文中介绍的数据库连接池监控,运维人员可以随时关注数据库连接池的状态,有效防止系统出现连接池活动连接数占满无法连接数据库的情况;而慢 SQL 监控功能可以动态展示一个系统的 SQL 情况,帮助优化 SQL 语句,让系统更稳定。


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/228


2020-02-11 20:22727

评论

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

Java基础:线程的三种创建方式

不在线第一只蜗牛

Java 线程 JVM

SD-WAN组网:跨国企业网络互联解决方案

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

当心!不要在SpringBoot中再犯这样严重的错误

秃头小帅oi

通义灵码入选 2024 世界人工智能大会最高荣誉「镇馆之宝」

阿里云云效

阿里云 云原生 通义灵码

灾难恢复中的异步复制和同步复制

天翼云开发者社区

网络安全 灾难恢复 异步复制 同步复制

面试官:Java类是如何被加载到内存中的?

快乐非自愿限量之名

Java 面试 内存

龙蜥技术认证携手成都东软学院,证书与学分互认互通

OpenAnolis小助手

开源 操作系统 龙蜥技术认证

win版4K Video Downloader(高清视频下载软件) v4.31特别版

iMac小白

win版Adobe After Effects 2023(Ae2023)v23.6.6.2 (x64) 直装版

iMac小白

win版n-Track Studio Suite(音频录制和编辑软件) v10.1.0.8705 (x64)特别版

iMac小白

如何把域名解析到自己的网站?一文读懂域名解析那些事

国科云

低代码平台在企业数字化转型中的关键角色与应用

EquatorCoco

低代码 数字化 企业转型

Galaxy Digital Q2 加密风投报告:反弹仍在持续,与上一轮牛市还有差距

TechubNews

win版Topaz Gigapixel AI(图像无损放大工具) v7.2.3 绿色便携版

iMac小白

大学生必备!GitHub星标破千的matlab教程(从新手到骨灰级玩家)

我再BUG界嘎嘎乱杀

Python 大数据 数据分析 数据可视化 matlab

AutoCAD 2022 for Mac/Win版 安装包下载

你的猪会飞吗

AutoCAD2022 AutoCAD2022序列号 cad2022Mac版 cad2022下载

如何确保海外社媒账号的安全稳定——海外云手机

Ogcloud

云手机 海外云手机 云手机海外版 海外云手机推荐 海外社媒运营

通义灵码入选 2024 世界人工智能大会最高荣誉「镇馆之宝」

阿里巴巴云原生

阿里云 云原生 通义灵码

线上观看人次3万+!「系统安全技术沙龙-龙蜥社区走进浪潮信息专场」圆满结束

OpenAnolis小助手

操作系统 系统安全 国产操作系统 龙蜥meetup

win版Adobe Photoshop 2023(PS2023) v24.7中文版

iMac小白

UAVStack的慢SQL数据库监控功能及其实现_数据库_王林林_InfoQ精选文章