Apache SkyWalking 监控 MySQL Server 实战解析
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 大概像下图这样,看起来是不是很酷!
上面展示的是在 MySQL 客户端层面的监控,那如果想要监控 MySQL Server 该怎么做呢,SkyWalking 发布的 9.2.0 版本升级了许多内容,其中一项就是开始支持 MySQL Server Monitoring。
SkyWalking 是如何监控 MySQL Server 程序的呢,SkyWalking 社区并没有重复造轮子,而是利用了已有的开源实现来采集 MySQL Server 的 metrics 数据,并将 metrics 发送到 SkyWalking OAP,由 MAL 引擎去分析、计算、聚合和存储,具体流程如下:
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_exporterGRANT 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.8services:
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 启动了多长时间,单位是秒。
mysqld-exporter 和 otel-collector 服务能正常采集数据之后,我们可以访问 SkyWalking UI,可以查看到 MySQL Sever 端的监控信息了。
图中每一项指标的具体含义大家可以访问官网查看,这里就不一一赘述了 skywalking.apache.org/docs/main/v
刚刚演示的 SkyWalking 中 MySQL Server 的监控功能是一名大三学生贡献的!,具体贡献过程可以看下issue 链接 github.com/apache/skyw 。之前看到过一句话,对技术有追求的开发者都应该去参与开源项目。
相关链接
github.com/prometheus/ opentelemetry.io/docs/concep skywalking.apache.org/docs/main/v以上就是Apache SkyWalking 监控 MySQL Server 实战解析的详细内容,更多关于Apache SkyWalking监控MySQL的资料请关注其它相关文章!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Apache SkyWalking 监控 MySQL Server 实战解析
相关文章
- dz论坛ucenter打不开mysql_Discuz论坛搬家 ucenter info:can not connect to MySQL server解决办法…「建议收藏」
- Mysql数据库报错2003 Can't connect to MySQL server on 'localhost' (10061)解决
- MysqL错误之_ERROR! MySQL server PID file could not be found!详解数据库
- swoole结合php的pdo mysql模式出现MySQL server has gone away详解编程语言
- MySQL导出:轻松获取你的查询结果(mysql导出查询结果)
- MySQL单表查询:从浅入深(mysql单表查询语句)
- MySQL到SQL Server的数据迁移指南(mysql转sqlserver)
- MySQL 数据库禁用 UDF 函数的方法简析(mysql禁用udf)
- 「MySQL官方下载」:快速上手MySQL的正确方式(mysql官方下载教程)
- SQL Server和MySQL:功能对比(sqlserver和mysql区别)
- MySQL数据库如何迁移至MS SQL Server(mysql转化mssql)
- MySQL如何检查线程的活动情况(mysql 查看线程)
- MySQL如何删除已授权的用户(mysql删除授权用户)
- 以Apache、MySQL和PHP组成的最强技术栈(apache mysql php)
- 中国大陆 通过CND进入MySQL实现畅通连接(cnd进入mysql)
- 忘记求助!本地MySQL数据库忘记密码了(本地mysql数据库密码)
- 检查MySQL本地安装情况使用CMD(cmd检查mysql安装)
- MySQL执行超时之恶果BAT无能为力(bat执行mysql超时)
- MySQL函数的使用方法与调用技巧分享(mysql中函数调用)
- MySQL漏洞下载文件提权攻击(mysql下载文件提权)