ELK搭建(四):监控mysql慢查询、错误日志日志

简介: 因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。

0. 引言

因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。

普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。

那么我们今天就来一步步搭建这样的一个平台

2. 下载

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

因为我的ELK环境是7.13.0的,所以我们需要下载对应版本的filebeat
filebeat官方下载地址

3. filebeat介绍

filebeat是elastic官方提供的一个轻量级的日志采集器,根据名称也能知道,主要用于文件的数据采集。基于Golang开发,可以安装到想要日志的服务器或者主机上来定期读取对应的数据,并发送到elasticsearch或者logstash上,甚至数据量大时,我们还可以先输出到kafka、redis等中间件上。

根据官方文档的解释,filebeat 主要包含两个主要组件:input和harvesters。

  • harvester: harvester用于按行读取单个文件的内容。每个文件都会启动一个harvester,harvester负责打开和关闭文件。filebeat中还有一个Registrar组件用于记录文件的偏移量,即上一次读取的位置,下一次打开文件时会从Registrar读取偏移量然后继续读取数据
  • input:负责管理harvester并且找到所有符合读取条件的文件。如果输入类型为log,则input会在驱动器上找到与定义的路径符合的文件,并会给每个文件都启动一个harvester.

其次再配置Output组件将获取的数据进行输出。
在这里插入图片描述

filebeat中支持多种服务的数据采集,包括但不仅限于Mysql,MongoDB,Nginx,Redis,ActiveMQ,PostgreSQL,RabbitMQ,Tomcat等等。更多可查看官方文档

搭配上kibana提供的开箱即用的数据看板,可以快速搭建监控平台。

4. 安装filebeat

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

1、解压压缩包(这里以mac版本示例,实际操作时请根据需要下载对应系统及版本的filebeat)

tar -zxvf filebeat-7.13.0-darwin-x86_64.tar.gz

2、修改filebeat.yml配置文件

setup.template.settings:
  index.number_of_shards: 1
  # 因为es是单节点,所以将副本分片设置为0.否则会报黄
  index.number_of_replicas: 0
output.elasticsearch:
  hosts: ["192.168.244.11:9200"]
  username: "elastic"
  password: "elastic"
setup.kibana:
  host: "192.168.244.11:5601"

3、启用mysql模块

./filebeat modules enable mysql

4、修改mysql module配置文件

vim modules.d/mysql.yml

修改内容,这里直接采用了默认配置,即采集错误日志和慢日志

- module: mysql
  # Error logs
  error:
    enabled: true
    # 日志路径,如果不配置,filebeat将按照操作系统选择日志路径.
    var.paths: ["/opt/homebrew/var/mysql/MacBook-Pro.local.err*"]

  # Slow logs
  slowlog:
    enabled: true
    # 日志路径,如果不配置,filebeat将按照操作系统选择日志路径.
    var.paths: ["/opt/homebrew/var/mysql/MacBook-Pro-slow.log*"]

如果不知道错误日志和慢日志位置的,可以通过以下两个指令查询

 show variables like 'log_error';
 show variables like '%slow_query_log%';

5、加载kibana仪表盘

./filebeat setup

6、运行filebeat,注意这里不要把上述的指令中断后再执行,直接新开窗口执行,否则可能生成面板失败

./filebeat -e

在这里插入图片描述
7、kibana主页>添加数据>MySQL日志中点击检查数据,如果出现成功提示则说明配置成功。
在这里插入图片描述

在这里插入图片描述
或者可以再dev-tool中查询filebeat-7.13.0索引,如果有索引且有数据则说明配置成功

GET filebeat-7.13.0/_search

在这里插入图片描述
8、点击MySQL日志仪表盘生成仪表盘
在这里插入图片描述
直接跳转到Filebeat MySQL数据看板。如果这里图形没有加载的话,检查一下filebeat-7.13.0索引是否有数据
在这里插入图片描述

测试

1、在mysql中执行以下指令,因为阈值设置的是3,所以设置睡眠5s会被判定为慢查询

select sleep(5);

在这里插入图片描述

2、查看面板,可以看到慢日志已经更新上来了
在这里插入图片描述
到此,我们的mysql日志监控平台就搭建完成了,当然你也可以根据自己的需要来创建自定义图表。如果不知道怎么创建可以查看我往期的博客。

5. mysql开启慢日志

如果mysql没有开启慢日志的,要先开启:

1、 登陆mysql,查看mysql是否开启慢日志

show variables like '%slow_query_log%';

如图所示是没有开启的
在这里插入图片描述
2、开启慢查询日志,修改配置文件my.cnf

sudo vim /etc/my.cnf

添加内容

[mysqld]
# 开启慢日志
slow_query_log=1
# 日志位置
slow_query_log_file=/opt/homebrew/var/mysql/MacBook-Pro-slow.log
# 设置阈值
long_query_time=3
# 输出形式
log_output=FILE

3、重启mysql

sudo mysql.server restart

4、再次登陆查询,已经开启
在这里插入图片描述

关注公众号Elasticsearch之家,了解更多新鲜内容

参考博文

https://zhuanlan.zhihu.com/p/141439013

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
1004 122
基于docker搭建监控系统&日志收集
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
1004 1
日志收集和Spring 微服务监控的最佳实践
|
监控 测试技术 Go
告别传统Log追踪!GOAT如何用HTTP接口重塑代码监控
本文介绍了GOAT(Golang Application Tracing)工具的使用方法,通过一个Echo问答服务实例,详细展示了代码埋点与追踪技术的应用。内容涵盖初始化配置、自动埋点、手动调整埋点、数据监控及清理埋点等核心功能。GOAT适用于灰度发布、功能验证、性能分析、Bug排查和代码重构等场景,助力Go项目质量保障与平稳发布。工具以轻量高效的特点,为开发团队提供数据支持,优化决策流程。
1067 90
|
12月前
|
存储 缓存 监控
用 C++ 红黑树给公司电脑监控软件的日志快速排序的方法
本文介绍基于C++红黑树算法实现公司监控电脑软件的日志高效管理,利用其自平衡特性提升日志排序、检索与动态更新效率,并结合实际场景提出优化方向,增强系统性能与稳定性。
268 4
|
12月前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
390 6
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
1025 23
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
693 9
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1530 55

推荐镜像

更多