目录正文监控MySQL Server安装过程docker compose 部署
正文
Apache SkyWalking 在本月初发布了 SkyWalking Backend、UI 的9.2.0 版本 以及SkyWalkingJavaAgent 8.12.0 版本,其中就有笔者贡献的hutool-http client 5.x 插件,以后大家通过 hutool 工具发送的http 请求也可以出现在分布式链路中了。
另外,社区宣布计划在 2022 年 11 月 30 日结束所有 v8 版本,v9 可以在生产环境中提供稳定和更高性能的 APM,具体声明见SkyWalking官网。
了解 SkyWalking 的朋友都知道,它可以监控我们的应用程序中执行的 SQL语句,监控到的 SQL 大概像下图这样,看起来是不是很酷!
监控MySQL Server
上面展示的是在 MySQL 客户端层面的监控,那如果想要监控MySQL Server 该怎么做呢,SkyWalking 发布的9.2.0 版本升级了许多内容,其中一项就是开始支持MySQL Server Monitoring。
SkyWalking 是如何监控 MySQLServer 程序的呢,SkyWalking社区并没有重复造轮子,而是利用了已有的开源实现来采集MySQLServer 的 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_exporter\’;GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO \’mysql_exporter\’@\’%\’ WITH MAX_USER_CONNECTIONS 3;flush privileges;
准备OpenTelemetryCollector 组件的配置文件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: showcaseprocessors: batch:exporters: otlp: endpoint: SkyWalking OAP 地址:11800 tls: insecure: trueservice: 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 composeup -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的资料请关注悠久资源网其它相关文章!