ELK搭建(六):搭建mysql性能、执行效率监控平台

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: mysql作为市场的主流数据库,承载了大部分公司的核心业务数据,同时也是大多数业务的底层存储。 针对mysql运行情况的监控必不可少,之前我们讲解了如何搭建mysql慢日志、错误日志的监控平台。那么本期,我们针对mysql集群、性能、各类sql语句执行情况、服务状态等指标来搭建一个可视化的监控平台,方便我们实时了解mysql资源利用率、sql执行效率、访问压力等等。

0. 引言

mysql作为市场的主流数据库,承载了大部分公司的核心业务数据,同时也是大多数业务的底层存储。 针对mysql运行情况的监控必不可少,之前我们讲解了如何搭建mysql慢日志、错误日志的监控平台。

那么本期,我们针对mysql集群、性能、各类sql语句执行情况、服务状态等指标来搭建一个可视化的监控平台,方便我们实时了解mysql资源利用率、sql执行效率、访问压力等等。

1. 下载

我们的平台是基于elasticsearch+kibana来实现的,也就是我们常说的ELK体系。我们采用Metricbeat插件来采集监控mysql的运行数据。

当然我们这里为了保证搭建的便捷性,并没有使用到Logstash,如果大家有需要的话可以把Metricbeat采集到的数据输出到Logstash

首先关于ELK的搭建就不再累述了,不清楚的同学可以看看往期博客:
ELK搭建(一):实现分布式微服务日志监控

因为我的ELK环境是7.13.0的,所以我们需要下载对应版本的Metricbeat
Metricbeat官方下载地址
在这里插入图片描述

2. Metricbeat介绍

metricbeat是elstic官方推出的一款轻量型的采集器,属于beats系列中专门用于各种系统和服务统计的beat。不仅可以统计mysql等数据,也可以统计redis、nginx、服务器cpu、内存、磁盘等服务的相关指标。

metricbeat定时从服务器中通过抓包的方式获取对应指标数据,然后发送到elasticsearch或者logstash中

metricbeat由两个部分组成:

  • 1、module
    所谓module就是针对不同的服务进行采集的模块,比如系统服务就是system module。metricbeat中支持的module有几十种,包括但不仅限于:ActiveMQ module,Apache module,Docker module,HTTP module等,具体可以metricbeat官方文档中的modules部分查看
  • 2、metricset
    采集的内容,以mysql module为例,支持采集的内容包括但不仅限于:
    (1)select、update、insert、update语句速率
    (2)当前mysql线程连接数
    (3)线程连接数趋势
    (4)中止连接率趋势
    (5)线程活动趋势
    (6)缓冲池数据量变化趋势
    (7)缓冲池利用率变化趋势
    (8)缓冲池效率趋势
    (9)mysql网络流量趋势
    (10)IO访问次数趋势

3. 安装Metricbeat

以下的安装步骤也可以在kibana中看到:主页>添加数据>MySQL 指标
在这里插入图片描述

1、将安装包上传到需要mysql所在的服务器上,可以使用FTP软件或者以下指令上传

scp metricbeat-7.13.0-linux-arm64.tar.gz root@192.168.244.18:/var/local 

2、解压压缩包

tar -zxvf metricbeat-7.13.0-linux-arm64.tar.gz 

3、修改配置文件metricbeat.yml中的连接信息

vim metricbeat.yml

修改内容

setup.template.settings:
# 因为我这里es是单节点,所以设置主分片数为1,副本分片数为0.否则会报黄
  index.number_of_shards: 1
  index.number_of_replicas: 0
output.elasticsearch:
# 你的es所在服务器ip
  hosts: ["192.168.244.11:9200"]
  username: "elastic"
  password: "elastic"
setup.kibana:
# kibana所在服务器ip
  host: "192.168.244.11:5601"

4、启动mysql模块,metricbeat会根据modules.d/mysql.yml中的配置项来获取系统数据

./metricbeat modules enable mysql

5、配置要采集的内容,修改modules.d/mysql.yml配置文件

vim modules.d/mysql.yml 

配置文件内容,这里我们将status、galera_status、performance的指标都开启,具体可根据自己的需要进行配置

注意:这里没有开启query指标集,这是因为query用于监控我们自定义查询语句的指标数据的,需要额外配置其他项并且需要自己构建看板,并不能拆箱即用,所以我们在以后单独介绍。如果直接开启query的话,会出现报错

- module: mysql
  metricsets:
    - status
    - galera_status
    - performance
   # - query
  period: 10s
 
  hosts: ["root:123456@tcp(127.0.0.1:3306)/"] 

这里的mysql配置也可以采取如下形式

hosts: ["tcp(127.0.0.1:3306)/"]
username: root
password: 123456

更多关于Metricbeat的配置可查看官方文档

metricbeat-mysql支持4种指标集:
在这里插入图片描述
6、加载kibana仪表盘,如果之前已经设置过就不用再执行了

./metricbeat setup

在这里插入图片描述
7、启动metricbeat(如果上述的指令没有自动退出的话,就新开个窗口执行,不要退出上述指令窗口)

./metricbeat -e

在这里插入图片描述

8、这里可以在kibana的mysql指标部署流程指南中点击“检查数据”进行测试,成功的话如图所示
在这里插入图片描述

9、我们对数据库做一下查询、新增、修改等操作,创造一些数据,然后点击mysql指标仪表板(Metricbeat MySQL)

可以看到mysql的相关指标都显示出来了。
在这里插入图片描述
如果觉得看板太过拥挤可以拖拽调整看板位置和大小

图表详情

为了大家观看方便,单独截取几个图表出来,供大家参考

  • 问题率

在这里插入图片描述

  • select语句速率

在这里插入图片描述

  • insert,update,delete速率

在这里插入图片描述

  • 连接数变化趋势

在这里插入图片描述

  • 线程趋势

在这里插入图片描述

  • 缓冲池效率

在这里插入图片描述

  • 网络流量

在这里插入图片描述

常见报错

1、Exiting: 1 error: missing required field accessing '0.queries'

mysql.yml中使用query metricset需要额外再配置其他属性,如下所示

- module: mysql
  metricsets:
    - status
    - galera_status
    - performance
    - query
  period: 10s

  hosts: ["root:123456@tcp(127.0.0.1:3306)/"]
  # query metricsets 额外配置项
  namespace: "my_namespace"
  queries:
  - query: "select * from user_test.user"
    response_format: "table"
    query_namespace: "user query"
  - query: "select * from order_test.order"
    response_format: "table"
    query_namespace: "order query"

2、点击检查数据一直显示‘未收到数据’

在这里插入图片描述
这是因为metricbeat配置未成功导致的,检查mysql.yml配置文件,以及elasticsearch,kibana,mysql的地址是否正确

参考博文

https://blog.csdn.net/UbuntuTouch/article/details/115294525

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
7月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
490 158
|
7月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
509 156
|
7月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
611 161
|
11月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
690 66
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
900 90
|
10月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
11月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
535 41
|
8月前
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
324 0
|
11月前
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?

推荐镜像

更多