写点什么

MySQL 慢查询日志分析 (Filebeat+Elasticsearch+DataEase)

  • 2022-12-27
    北京
  • 本文字数:2871 字

    阅读完需:约 9 分钟

先看成果,本仪表板使用开源数据可视化分析工具 DataEase 制作,可以通过上方的搜索框过滤查询语句,也可以过滤日志产生的日期范围。



1. Filebeat 介绍

Filebeat 是 Elastic 官方提供的一个轻量级的日志采集器,主要用于文件的数据采集。基于 Golang 开发,可以安装到想要日志的服务器或者主机上来读取对应的数据,并发送到 Elasticsearch 或者 Logstash 上,数据量大时,还可以先输出到 Kafka、Redis 等中间件上。

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

harvester: 用于按行读取单个文件的内容。每个文件都会启动一个 harvester,harvester 负责打开和关闭文件。Filebeat 使用 registry file 记录文件的偏移量,即上一次读取的位置,下一次打开文件时会从 registry file 读取偏移量然后继续读取数据。

input:负责管理 harvester 并且找到所有符合读取条件的文件。如果输入类型为 log,则 input 会在驱动器上找到与定义的路径符合的文件,并会给每个文件都启动一个 harvester。

其次再配置 Output 组件将获取的数据进行输出。



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

2. DataEase 介绍

​DataEase​​​ 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。​​DataEase​​ 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。



3. 配置 MySQL 慢查询日志

在 my.cnf 中添加如下配置


slow_query_log=onslow_query_log_file=/var/log/mysql/slow_query.loglong_query_time=2
复制代码


4. 安装 Elasticsearch、Kibana、Filebeat

1)添加 elastic 的 yum 源

使用如下内容创建文件 /etc/yum.repos.d/elastic.repo


[elastic-7.x]name=Elastic repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md
复制代码


2)使用 yum 命令安装组件

可以使用 yum search elastic --show-duplicates 查看所有可用的组件及版本,此处以安装 7.17.2 版本为例,需保证各组件版本一致。


yum -y install elasticsearch-7.17.2yum -y install kibana-7.17.2yum -y install filebeat-7.17.2
复制代码


5. 配置 Kibana

修改 /etc/kibana/kibana.yml 中的如下内容:


# 允许外部访问server.host: "0.0.0.0"# 服务访问地址server.publicBaseUrl: "http://<你的服务请求地址>"# ElasticSearch 的用户密码elasticsearch.username: "elastic"elasticsearch.password: "password"# 使用中文界面i18n.locale: "zh-CN"
复制代码


6. 配置 Filebeat

1)启用 MySQL 模块


filebeat modules enable mysql
复制代码


2)修改 MySQL 日志文件

修改文件 /etc/filebeat/modules.d/mysql.yml 中的日志路径


# Module: mysql# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.16/filebeat-module-mysql.html
- module: mysql # Error logs error: enabled: true
# Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/var/log/mysql/mysql.err"]
# Slow logs slowlog: enabled: true
# Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/var/log/mysql/slow_query.log"]
复制代码


3)修改 Filebeat 配置文件

在 /etc/filebeat/filebeat.yml 中配置如下内容,此处未列出内容不做修改即可。


filebeat.config.modules:  # Glob pattern for configuration loading  path: ${path.config}/modules.d/*.yml  # Set to true to enable config reloading  reload.enabled: true  # Period on which files under path should be checked for changes  reload.period: 2s
setup.kibana: host: "10.1.1.123:5601"
output.elasticsearch: # elasticsearch 访问地址 hosts: ["10.1.1.123:9200"] # Protocol - either `http` (default) or `https`. protocol: "http" # elasticsearch 用户密码 username: "elastic" password: "password"
复制代码


4)设置初始环境

如果此步骤报错,需解决报错


filebeat setup -e
复制代码


7. 启动服务

全部配置好后,可以使用 systemctl enable <service name> 命令配置开机自启


systemctl enable elasticsearchsystemctl enable kibanasystemctl enable filebeat
复制代码


使用 systemctl start <service name> 命令来启动服务


systemctl start elasticsearchsystemctl start kibanasystemctl start filebeat
复制代码


8. 验证

全部服务启动完成后,可查看 Elasticsearch 中的索引。

Filebeat 默认会生成如下格式的索引,可在配置文件中自行修改,具体修改方式请自行百度。


filebeat-<版本号>-<年>.<月>.<日>
复制代码



9. 接入 DataEase 并制作图表

在 DataEase 中创建 Elasticsearch 数据源,并使用 SQL 创建慢查询分析数据集,SQL 如下:


select DATETIME_FORMAT("@timestamp",'yyyy-MM-dd HH:mm:ss')  as time        ,REPLACE(UCASE(substring("mysql.slowlog.query",0,locate(' ',"mysql.slowlog.query",0))), CHAR(10) ,'') operation        ,"agent.ephemeral_id"        ,"agent.hostname"        ,"agent.id"        ,"agent.name"        ,"agent.type"        ,"agent.version"        ,"container.id"        ,"ecs.version"        ,"event.category"        ,"event.dataset"        ,"event.duration"        ,"event.ingested"        ,"event.kind"        ,"event.module"        ,"event.type"        ,"fileset.name"        ,"host.architecture"        ,"host.containerized"        ,"host.hostname"        ,"host.id"        ,"host.ip"        ,"host.mac"        ,"host.name"        ,"host.os.codename"        ,"host.os.family"        ,"host.os.kernel"        ,"host.os.name"        ,"host.os.name.text"        ,"host.os.platform"        ,"host.os.type"        ,"host.os.version"        ,"input.type"        ,"log.file.path"        ,"log.flags"        ,"log.offset"        ,"mysql.slowlog.current_user"        ,"mysql.slowlog.lock_time.sec"        ,"mysql.slowlog.query"        ,"mysql.slowlog.rows_examined"        ,"mysql.slowlog.rows_sent"        ,"mysql.thread_id"        ,"service.type"        ,"source.ip"        ,"user.name"        ,"user.name.text" from "filebeat-7.16.2-2022.12.15-000001"
复制代码


创建完成后导入模板并切换数据集即可,操作流程可参考视频:


视频封面


好的标题可以获得更多的推荐及关注者

模板自取链接:

链接: ​​https://盘.百度.com/s/1FDqipvITiFZDLt-P0ugbXA?pwd=q59e​​ 提取码: q59e

用户头像

还未添加个人签名 2022-12-26 加入

还未添加个人简介

评论

发布
暂无评论
MySQL 慢查询日志分析(Filebeat+Elasticsearch+DataEase)_MySQL慢查询_搞大屏的小北_InfoQ写作社区