HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

评论

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

新思科技发布《2023年开源安全和风险分析》报告

InfoQ_434670063458

开源 新思科技 软件安全

基于Python+UIautomation的WindowsGUI自动化测试实战(二)-计算器

Python 自动化测试 GUI UIaotumation

软件测试/测试开发 | 一步一步学测试平台开发-Vue restful请求

测试人

软件测试 自动化测试 测试开发 测试平台

Mac应用程序无法打开提示不明开发者或文件损坏的处理方法

理理

Mac软件打不开

Apache IoTDB v1.0.1 发布|修复分区计算,优化集群启停流程

Apache IoTDB

IoTDB

ChatGPT潜能很大,问题也是

引迈信息

人工智能 低代码开发 应用开发 ChatGPT JNPF

Deploy Workshop|DIY部署环境,让OceanBase跑起来

OceanBase 数据库

数据库 oceanbase

类加载机制

Apache IoTDB

IoTDB

数据库革新拐点已来——MatrixOne Beta Program Recap

MatrixOrigin

云原生 分布式数据库 MatrixOrigin MatrixOne

首批!阿里云容器服务 ACK 顺利通过信通院云原生混部项目评估

阿里巴巴中间件

阿里云 容器 云原生

what量化合约系统开发&源码丨clear合约量化系统开发技术(Demo案例)

I8O28578624

ICLR 2023 | 网易伏羲3篇论文入选,含强化学习、自然语言处理等领域

网易伏羲

详细剖析|袋鼠云数栈前端框架Antd 3.x 升级 4.x 的踩坑之路

袋鼠云数栈

前端‘’

使用metrics-server监控k8s的资源指标

tiandizhiguai

DevOps 微服务 云原生 k8s

引领云数仓创新浪潮 HashData闪耀PostgreSQL中国技术大会

酷克数据HashData

敏捷开发工具leangoo时间线视图管理项目

顿顿顿

Scrum 敏捷开发 甘特图 敏捷开发管理 时间线

开源项目的演进会遇到哪些“坑”?KubeVela 从发起到晋级 CNCF 孵化的全程回顾

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

mac无损音乐播放器软件:Audirvana使用设置技巧

理理

Audirvana

重磅通知!OpenAI又放大招:官宣开放API接口-3.5版本 需求大涨,机遇与挑战并存,谁能拔得头筹?

加入高科技仿生人

人工智能 开源 openai ChatGPT

详解基于 Celestia、Eclipse 构建的首个Layer3 链 Nautilus Chain

威廉META

Apache Flink 1.16 功能解读

Apache Flink

大数据 flink 实时计算

瓴羊Quick BI与Power BI之争:数据大屏优势明显

对不起该用户已成仙‖

基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本

自动化测试 GUI UIaotumation

新思科技为三星SDS公司开源使用和风险管理提供自动治理解决方案

InfoQ_434670063458

开源 软件开发 新思科技 软件安全

程序调试利器——GDB使用指南

京东科技开发者

c++ debug gdb 企业号 3 月 PK 榜 程序检测

【云图说】 | 第268期 初识开天企业工作台MSSE

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

Apache IoTDB v0.13.4 发布|优化监控功能

Apache IoTDB

IoTDB

为企业全方位解决进销存管理难题的ERP套件

力软低代码开发平台

k8s 探测方法总结

Geek_f24c45

#k8s

「资源广场」上线|以开发者为中心,打造开放资源共享平台

Jianmu

jenkins CI/CD 镜像仓库 容器镜像 建木

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