写点什么

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:22695

评论

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

数字先锋| 让群众健康更有“医靠”,天翼云为喀什中医院开出“上云妙方”!

天翼云开发者社区

云计算 大数据

每日一题:LeetCode-297. 二叉树的序列化与反序列化

Geek_4z9ami

面试 算法 LeetCode 二叉树 DFS

SD-WAN企业组网场景深度解析

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

腾讯云ES RAG最佳实践:向量+文本混合搜索的相关性调优

腾讯云大数据

ES

给科研人的 ML 开源发布工具包

EquatorCoco

开源 ML 工具包 安装包

FeatInsight: 基于 OpenMLDB 的特征平台助力高效的特征管理和编排

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Unity3D代码混淆方案详解

雪奈椰子

你不知道的vue3:使用runWithContext实现在非 setup 期间使用inject

快乐非自愿限量之名

Java 前端 前端开发 Vue3

语音数据集在智能语音助手中的应用与挑战

来自四九城儿

使用函数计算,数禾如何实现高效的数据处理?

阿里巴巴云原生

阿里云 Serverless 云原生

智能语音助手在医疗行业的应用与挑战

来自四九城儿

数字先锋| 向“新”而生!天翼云携手中化信息按下化工行业变革加速器

天翼云开发者社区

云计算 数字化转型 云平台

数字生态系统的演进与企业API管理的关键之路

幂简集成

API API 管理 API Hub

聚道云如何助力企业破解审批困境,开启高效工作?

聚道云软件连接器

案例分享

自助式可视化开发,ETLCloud的集成之路

RestCloud

可视化 ETL

打破束缚,重塑软件定制开发效率与质量

SoFlu-JavaAI开发助手

【干货分享】常用的Python开发工具比较

快乐非自愿限量之名

Python 开发 开发语言

供应链共舞:数字化协同推动服装企业商品计划的无缝衔接

第七在线

SD-WAN组网设计原则:灵活、安全、高效

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

如何正确利用Google开辟海外市场

九凌网络

构建坚固网络,SD-WAN网络配置指南

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

语音数据集在智能语音搜索中的应用与挑战

来自四九城儿

文心一言 VS 讯飞星火 VS chatgpt (181)-- 算法导论13.4 4题

福大大架构师每日一题

福大大架构师每日一题

0.o?让我看看怎么个事儿之SpringBoot自动配置

不在线第一只蜗牛

spring 后端 springboot 后端开发

Milvus 上新:支持上万个 Collection、新增 Accesslog 功能……

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

美的楼宇科技携手火山引擎,共筑边缘云新型生态圈

火山引擎边缘云

边缘计算 智慧园区 智慧建筑 边缘云

1688商品数据API接口的数据分析与挖掘技巧

Noah

Google推广之关键字匹配类型

九凌网络

左耳听风 - 编程的本质「读书打卡 day 10」

Java 工程师蔡姬

读书笔记 程序员 个人成长 编程的本质 职业发展

可视化大屏是什么?大屏数据可视化设计指南

2D3D前端可视化开发

数据可视化 大屏可视化 可视化大屏 可视化设计

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