Apache SkyWalking 监控 MySQL Server 实战解析


Posted in Servers onSeptember 23, 2022

正文

Apache SkyWalking 在本月初发布了 SkyWalking Backend、UI 的 9.2.0 版本 以及 SkyWalking Java Agent 8.12.0 版本,其中就有笔者贡献的 hutool-http client 5.x 插件,以后大家通过 hutool 工具发送的 http 请求也可以出现在分布式链路中了。

另外,社区宣布计划在 2022 年 11 月 30 日结束所有 v8 版本,v9 可以在生产环境中提供稳定和更高性能的 APM,具体声明见 SkyWalking 官网

了解 SkyWalking 的朋友都知道,它可以监控我们的应用程序中执行的 SQL语句,监控到的 SQL 大概像下图这样,看起来是不是很酷!

Apache SkyWalking 监控 MySQL Server 实战解析

监控 MySQL Server

上面展示的是在 MySQL 客户端层面的监控,那如果想要监控 MySQL Server 该怎么做呢,SkyWalking 发布的 9.2.0 版本升级了许多内容,其中一项就是开始支持 MySQL Server Monitoring。

SkyWalking 是如何监控 MySQL Server 程序的呢,SkyWalking 社区并没有重复造轮子,而是利用了已有的开源实现来采集 MySQL Server 的 metrics 数据,并将 metrics 发送到 SkyWalking OAP,由 MAL 引擎去分析、计算、聚合和存储,具体流程如下:

Apache SkyWalking 监控 MySQL Server 实战解析

1)mysqld_exporter 从 MySQL Server 收集 metrics 数据;

2)OpenTelemetry Collector 通过 Prometheus Receiver 从 mysqld_exporter 抓取 metrics 数据;

3)OpenTelemetry Collector 通过 OpenCensus gRPC Exporter 或 OpenTelemetry gRPC exporter 将 metrics 数据 发送给 SkyWalking OAP Server;

4)SkyWalking OAP Server 使用 MAL引擎解析表达式,并对 metrics 数据进行过滤、计算、聚合并存储结果。

其中,mysqld_exporter 是 Prometheus 提供的用于收集 MySQL Server 的metrics 数据,OpenTelemetry Collector 是 OpenTelemetry 提供的用于收集 telemetry 数据,它提供了与厂商无关的实现,用于接收、处理与导出 telemetry 数据。

安装过程

这里假设我们已经部署了 MySQL Server 以及 SkyWalking,现在想要在 SkyWalking 中监控 MySQL Server,我们这里准备一台机器(192.168.56.102),这台机器笔者已经提前安装好了 Docker,接下来我们就在这台机器上安装 mysqld_exporter 和 OpenTelemetry Collector 。

首先我们需要创建一个 MySQL 用户并授权,用于 mysqld_exporter 收集 metrics 使用,操作如下:

create user 'mysql_exporter'@'%' identified by 'mysql_exporter';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'%' WITH MAX_USER_CONNECTIONS 3;
flush privileges;

准备 OpenTelemetry Collector 组件的配置文件 otel-collector-config.yaml

receivers:
  prometheus:
    config:
     scrape_configs:
       - job_name: 'mysql-monitoring'
         scrape_interval: 5s
         static_configs:
           - targets: ['mysqld-exporter:9104']
             labels:
               host_name: showcase
processors:
  batch:
exporters:
  otlp:
    endpoint: SkyWalking OAP 地址:11800
    tls:
      insecure: true
service:
  pipelines:
    metrics:
      receivers:
      - prometheus
      processors:
      - batch
      exporters:
      - otlp

对以上配置做个简要说明:

1)receivers 用于配置 Collector 的数据来源,这里是从 prometheus 的 mysqld_exporter 抓取数据;

2)exporters 用于配置要将接收到的数据发送到哪里,这里是发送到 SkyWalking OAP ;

3)processors 指定如何处理接收到的数据;

4)service 配置将整个 pipelines 串起来。

docker compose 部署

我们这里使用 docker compose 部署,docker-compose.yml 完整配置如下:

version: '3.8'
services:
  mysqld-exporter:
    image: prom/mysqld-exporter:v0.14.0
    container_name: mysqld-exporter
    ports:
      - 9104:9104
    environment:
      - DATA_SOURCE_NAME=mysql_exporter:mysql_exporter@(mysql地址:3306)/
      - TZ=Asia/Shanghai
  otel-collector:
    image: otel/opentelemetry-collector:0.50.0
    container_name: otel-collector
    command: [ "--config=/etc/otel-collector-config.yaml" ]
    volumes:
      - /opt/data/otel-collector-config.yaml:/etc/otel-collector-config.yaml
    expose:
      - 55678

将 docker-compose.yml 和otel-collector-config.yaml 配置文件上传到服务器并放到 /data/opt/ 目录下,执行 docker compose up -d 即可启动 mysqld-exporter 和 otel-collector 服务。

启动完成之后,我们可以通过访问 mysqld-exporter 服务http://192.168.56.102:9104/metrics 查看  mysqld-exporter 采集了 MySQL 的哪些 metrics 数据,比如下图中的 mysql_global_status_uptime 指标表示 MySQL Server 启动了多长时间,单位是秒。

Apache SkyWalking 监控 MySQL Server 实战解析

mysqld-exporter 和 otel-collector 服务能正常采集数据之后,我们可以访问 SkyWalking UI,可以查看到 MySQL Sever 端的监控信息了。

Apache SkyWalking 监控 MySQL Server 实战解析

图中每一项指标的具体含义大家可以访问官网查看,这里就不一一赘述了 skywalking.apache.org/docs/main/v…

刚刚演示的 SkyWalking 中 MySQL Server 的监控功能是一名大三学生贡献的!,具体贡献过程可以看下issue 链接 github.com/apache/skyw… 。之前看到过一句话,对技术有追求的开发者都应该去参与开源项目。

相关链接

以上就是Apache SkyWalking 监控 MySQL Server 实战解析的详细内容,更多关于Apache SkyWalking监控MySQL的资料请关注三水点靠木其它相关文章!

Servers 相关文章推荐
Nginx同一个域名配置多个项目的实现方法
Mar 31 Servers
解决Nginx 配置 proxy_pass 后 返回404问题
Mar 31 Servers
nginx配置proxy_pass中url末尾带/与不带/的区别详解
Mar 31 Servers
Nginx本地目录映射实现代码实例
Mar 31 Servers
Nginx配置80端口访问8080及项目名地址方法解析
Mar 31 Servers
Apache POI的基本使用详解
Nov 07 Servers
Nginx动静分离配置实现与说明
Apr 07 Servers
Linux下使用C语言代码搭建一个简单的HTTP服务器
Apr 13 Servers
解决IIS7下无法绑定https主机的问题
Apr 29 Servers
使用Apache Camel表达REST服务的方法
Jun 10 Servers
服务器SVN搭建图文安装过程
Jun 21 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
服务器nginx权限被拒绝解决案例
Sep 23 #Servers
Fluentd搭建日志收集服务
Sep 23 #Servers
Flink 侧流输出源码示例解析
Sep 23 #Servers
修改Nginx配置返回指定content-type的方法
Sep 23 #Servers
Nginx如何配置多个服务域名解析共用80端口详解
Sep 23 #Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
zabbix如何添加监控主机和自定义监控项
Aug 14 #Servers
You might like
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
js调用flash的效果代码
2008/04/26 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
KTV的创业计划书范文
2014/02/02 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
2014小学年度工作总结
2014/12/20 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS