草庐IT

用SkyWalking监控MySQL(一)工具与方案

GreatSQL 2023-03-28 原文

本文适用于SkyWalking v9.1.0。

SkyWalking简介

SkyWalking是一个分布式系统的应用程序性能监视(APM)工具,专为微服务、云原生架构和基于容器(K8s)架构而设计。当前版本具备了全路径跟踪、指标采集、日志记录等功能,并对多种编程语言及平台(Java/C/C++/Go/Rust/Node/PHP等)提了采集代理(agent),并对service mesh(stio + Envoy )提供支持。

SkyWalking的对比其他常用监控工具 Zabbix、Prometheus、ELK、Zipkin、Jaeger等有以下特点:

优点

1,一站式全功能的解决方案,支持全路径跟踪、指标采集和日志记录。
当前版本仍需依赖外部存储组件(H2/MySQL/PostgreSQL/Elasticsearch)。项目自带的BanyanDB正在积极研发中,正式发布后可不再依赖外部存储。

2,非侵入式为主的指标采集方式,一般不需要代码级的调整,对几十种主流java组件都有官方插件支持。Java程序通过javaagent+bytebuddy实现动态生成监控插件,Native应用则通过ebpf实现类似功能。

3,标准协议的支持,支持OpenTelemetry、Kafka、estapi、Zabbix多种行业规范或者事实标准的接入,方便各种应用的对接。

4,微服务和云原生的支持,对基于容器(K8s+Java)的全链路监控,支持ebpf agent 通过sidecar注入。

缺点

1 agent不够完善,OpenTelemetry采集方式目前需要用Prometheus node expoter采集,再通过Opentelemetry collector转换后导出传导SkyWalking oap.

2 比Zabbix等传统监控工具缺少自动探测和资产管理功能,增加自定义监控指标需要手工修改MAL配置文件,不能通过UI配置。

3 官方文档不完善,只是相当于参数手册加功能列表,但缺乏各种监控场景的配置指引。

4 ebpf agent虽然是亮点但实现很初级,最新发布版(0.2.0)只支持cpu profiling。git最新代码已增加network profiling。功能均为go和c混合的硬编实现,用户自行扩展不便。硬编码的ebpf代码也导致对linux内核的兼容性差。gcc4.5+在不同的优化级别(O?)产生的符号命名不一样,会导致ebpf启动失败。

MySQL的监控方案

监控项类别 监控项 监控方式
主机或vm的OS指标 cpu 内存 磁盘 Zabbix agent/Prometheus exporter + otl collect
MySQL 日志 日志文件 Filebeat httpoutput + SkyWalking http json api
ebpf cpu/network profile, sql query, fs profile(etx4/xfs) ebpf agent( skeywalking ravor), 除cpu profile外要自行扩展
jdbc client virtual db,连接池状态等 Java agent

通过以上各种维度的监控可以全面掌握MySQL的运行状态,并能在出现性能问题时通过ebpf agent(Ravor)远程执行profiling分析。基于ebpf的监控方式在DBaaS-MySQL容器化部署的方式下非常方便而且性能影响也最小。

限于篇幅原因,在后续的文章中会详细讲解每种监控方式的配置和相关扩展代码。

Enjoy GreatSQL ?

文章推荐:

有趣的SQL DIGEST

ulimits不生效导致数据库启动失败和相关设置说明
MGR及GreatSQL资源汇总

GreatSQL MGR FAQ

在Linux下源码编译安装GreatSQL/MySQL

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee:
https://gitee.com/GreatSQL/GreatSQL

GitHub:
https://github.com/GreatSQL/GreatSQL

Bilibili:
https://space.bilibili.com/1363850082/favlist

技术交流群:

微信:扫码添加GreatSQL社区助手微信好友,发送验证信息加群

有关用SkyWalking监控MySQL(一)工具与方案的更多相关文章

  1. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  2. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  3. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  4. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  5. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  6. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  7. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  8. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  9. Ruby 守护进程和 JRuby - 备选方案 - 2

    我有一个应用程序正在从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全支持)。我使用的gem之一是daemons创建后台作业。问题在于它使用fork+exec来创建后台进程,但这对JRuby来说是禁忌。那么-是否有用于创建后台作业的替代gem/wrapper?我目前的想法是只从shell脚本调用rake并让rake任务永远运行......提前致谢,克里斯。更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-scheduler和https://github.com/philostler/acts

  10. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

随机推荐