EFK环境收集MySQL慢日志

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: EFK环境收集MySQL慢日志

本文通过EFK(Elasticsearch、Fluentd、Kibana)来收集MySQL慢日志,当前系统环境基于Centos7,MySQL基于wlnmp一键包安装。本文由吴昊博客全网首发。

注意文中软件版本,版本不同可能会影响最终结果,本文未在新版中进行测试。

1、安装Fluentd

方法一:使用官方推荐的安装方式

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh

方法二:直接下载rpm包安装

wget https://s3.amazonaws.com/packages.treasuredata.com/3/redhat/7/x86_64/td-agent-3.8.1-0.el7.x86_64.rpm

yum install td-agent-3.8.1-0.el7.x86_64.rpm

2、修改fluentd启动用户

sed -i s#User=td-agent#User=root# /usr/lib/systemd/system/td-agent.service

sed -i s#Group=td-agent#Group=root# /usr/lib/systemd/system/td-agent.service

systemctl daemon-reload

3、安装fluent一些插件

安装mysql慢查询插件

td-agent-gem install fluent-plugin-mysqlslowquery

Fetching: myslog-0.1.1.gem (100%)

Successfully installed myslog-0.1.1

Fetching: fluent-plugin-mysqlslowquery-0.0.9.gem (100%)

Successfully installed fluent-plugin-mysqlslowquery-0.0.9

Parsing documentation for myslog-0.1.1

Installing ri documentation for myslog-0.1.1

Parsing documentation for fluent-plugin-mysqlslowquery-0.0.9

Installing ri documentation for fluent-plugin-mysqlslowquery-0.0.9

Done installing documentation for myslog, fluent-plugin-mysqlslowquery after 0 seconds

2 gems installed

安装elasticsearch插件

td-agent-gem install fluent-plugin-elasticsearch

Fetching: faraday-em_http-1.0.0.gem (100%)

Successfully installed faraday-em_http-1.0.0

Fetching: faraday-em_synchrony-1.0.0.gem (100%)

Successfully installed faraday-em_synchrony-1.0.0

Fetching: faraday-excon-1.1.0.gem (100%)

Successfully installed faraday-excon-1.1.0

Fetching: faraday-httpclient-1.0.1.gem (100%)

Successfully installed faraday-httpclient-1.0.1

Fetching: faraday-multipart-1.0.4.gem (100%)

Successfully installed faraday-multipart-1.0.4

Fetching: faraday-net_http-1.0.1.gem (100%)

Successfully installed faraday-net_http-1.0.1

Fetching: faraday-net_http_persistent-1.2.0.gem (100%)

Successfully installed faraday-net_http_persistent-1.2.0

Fetching: faraday-patron-1.0.0.gem (100%)

Successfully installed faraday-patron-1.0.0

Fetching: faraday-rack-1.0.0.gem (100%)

Successfully installed faraday-rack-1.0.0

Fetching: faraday-retry-1.0.3.gem (100%)

Successfully installed faraday-retry-1.0.3

Fetching: ruby2_keywords-0.0.5.gem (100%)

Successfully installed ruby2_keywords-0.0.5

Fetching: faraday-1.10.2.gem (100%)

Successfully installed faraday-1.10.2

Fetching: fluent-plugin-elasticsearch-5.2.4.gem (100%)

Successfully installed fluent-plugin-elasticsearch-5.2.4

Parsing documentation for faraday-em_http-1.0.0

Installing ri documentation for faraday-em_http-1.0.0

Parsing documentation for faraday-em_synchrony-1.0.0

Installing ri documentation for faraday-em_synchrony-1.0.0

Parsing documentation for faraday-excon-1.1.0

Installing ri documentation for faraday-excon-1.1.0

Parsing documentation for faraday-httpclient-1.0.1

Installing ri documentation for faraday-httpclient-1.0.1

Parsing documentation for faraday-multipart-1.0.4

Installing ri documentation for faraday-multipart-1.0.4

Parsing documentation for faraday-net_http-1.0.1

Installing ri documentation for faraday-net_http-1.0.1

Parsing documentation for faraday-net_http_persistent-1.2.0

Installing ri documentation for faraday-net_http_persistent-1.2.0

Parsing documentation for faraday-patron-1.0.0

Installing ri documentation for faraday-patron-1.0.0

Parsing documentation for faraday-rack-1.0.0

Installing ri documentation for faraday-rack-1.0.0

Parsing documentation for faraday-retry-1.0.3

Installing ri documentation for faraday-retry-1.0.3

Parsing documentation for ruby2_keywords-0.0.5

Installing ri documentation for ruby2_keywords-0.0.5

Parsing documentation for faraday-1.10.2

Installing ri documentation for faraday-1.10.2

Parsing documentation for fluent-plugin-elasticsearch-5.2.4

Installing ri documentation for fluent-plugin-elasticsearch-5.2.4

Done installing documentation for faraday-em_http, faraday-em_synchrony, faraday-excon, faraday-httpclient, faraday-multipart, faraday-net_http, faraday-net_http_persistent, faraday-patron, faraday-rack, faraday-retry, ruby2_keywords, faraday, fluent-plugin-elasticsearch after 1 seconds

13 gems installed

4、配置fluentd

如果你是按照本文方式安装的fluentd,那么默认配置文件在/etc/td-agent/td-agent.conf

cp /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.bak

vi /etc/td-agent/td-agent.conf

将配置文件中原有内容替换成以下配置,/data/mysql/mysql_slow_query.log为mysql慢日志文件路径,es的IP地址按照实际情况进行配置。如果你的es有配置认证,可以增加user fluent和password mysecret两个参数。

<source>

 @type mysql_slow_query

 path /data/mysql/mysql_slow_query.log

 path_key file_path

 tag mysqld.slowlog

 pos_file /var/log/td-agent/mysql-slow.log.pos

 <parse>

    @type none

 </parse>

</source>


<match mysqld.slowlog>

 @type elasticsearch

 host IP

 port 9200

 logstash_format true

 logstash_prefix mysql_slow.${tag}

</match>

5、安装jdk

rpm -ivh https://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm

yum install jdk1.8

6、安装Elasticsearch

cd /usr/local/src

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.rpm

yum install elasticsearch-6.2.3.rpm

vi /etc/elasticsearch/elasticsearch.yml

#设置监听端口为9200,network.hos按需配置

http.port: 9200

network.host: 0.0.0.0

启动服务

/etc/init.d/elasticsearch start

7、安装Kibana

cd /usr/local/src

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-x86_64.rpm

yum install kibana-6.2.3-x86_64.rpm

vi /etc/kibana/kibana.yml

#默认监听端口5601

server.port: 5601

#监听IP地址,这里改成0.0.0.0,即监听所有IP

server.host: "0.0.0.0"

#elasticsearch的地址,如elasticsearch与kibana安装在不同服务器上,需要手动指定地址,按需配置

elasticsearch.url: "http://IP:9200"

启动服务

/etc/init.d/kibana start

8、安装MySQL

我这里MySQL通过wlnmp一键包进行安装的,如果你在前面添加的wlnmp源,那么此处可以不执行

rpm -ivh https://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm

yum install wmysql57

配置/etc/my.conf启动慢日志slow_query_log=on,并重启MySQL服务/etc/init.d/mysql restart

9、启动Fluentd

systemctl daemon-reload

/etc/init.d/td-agent start

注:如果第一次启动报错,可以再试一次

10、造一条慢日志数据

注:MySQL默认密码为空,见官方文档https://www.wlnmp.com/install

mysql -uroot -p

mysql> select sleep(5);

11、访问kibana

你可能不会马上看到一下页面,大概有1~5分钟的延迟

此时MySQL慢日志的数据已经对接进来了。

注:最可能遇到的情况就是在kibana中刷不出来信息,检查配置文件是否配置正常,版本是否与本文一致,如果全部配置正常的情况下,1~5分钟内就会刷新出数据。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
17天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
29天前
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
37 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
|
19天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
53 0
|
19天前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
41 0
|
22天前
|
JavaScript Serverless Linux
函数计算产品使用问题之遇到Node.js环境下的请求日志没有正常输出时,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
26天前
|
存储 关系型数据库 MySQL
深入MySQL:事务日志redo log详解与实践
【8月更文挑战第24天】在MySQL的InnoDB存储引擎中,为确保事务的持久性和数据一致性,采用了redo log(重做日志)机制。redo log记录了所有数据修改,在系统崩溃后可通过它恢复未完成的事务。它由内存中的redo log buffer和磁盘上的redo log file组成。事务修改先写入buffer,再异步刷新至磁盘,最后提交事务。若系统崩溃,InnoDB通过redo log重放已提交事务并利用undo log回滚未提交事务,确保数据完整。理解redo log工作流程有助于优化数据库性能和确保数据安全。
101 0
|
26天前
|
存储 SQL 关系型数据库
MySQL事务日志奥秘:undo log大揭秘,一文让你彻底解锁!
【8月更文挑战第24天】本文深入探讨了MySQL中undo log的关键作用及其在确保事务原子性和一致性方面的机制。MySQL通过记录事务前的数据状态,在需要时能回滚至初始状态。主要介绍InnoDB存储引擎下的undo log实现,包括undo segment和record的结构,而MyISAM则采用redo log保障持久性而非一致性。通过一个简单的SQL回滚示例,展示了undo log如何在实际操作中发挥作用,帮助读者更好地理解并运用MySQL事务管理功能。
100 0
|
27天前
|
SQL 存储 关系型数据库
MySQL日志,你知多少?
MySQL日志,你知多少?
41 0
|
26天前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
|
7天前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。

热门文章

最新文章