【最佳实践】Filebeat实现MySQL日志轻量化发送至Elasticsearch

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 在今天的文章中,我们来详细地描述如果使用Filebeat把MySQL的日志信息传输到Elasticsearch中。

在今天的文章中,我们来详细地描述如果使用Filebeat把MySQL的日志信息传输到Elasticsearch中。

环境准备

1、准备centos7.4版本 ECS 环境,关闭 selinux、firewall。
2、准备阿里云elasticsearch 6.7 版本环境,并使用创建的账号密码登录Kibana
3、安装 Filebeat 版本为 6.7.0
4、安装 MySQL 版本为 5.6.48

安装 MySQL

我们需要通过以下命令,来对 MySQL 进行安装。

# yum install mysql-server
# systemctl start mysqld
# systemctl status mysqld
####通过mysqladmin设置root密码#####
# mysqladmin -u root password "123456"

下一步在my.cnf中配置error日志文件和慢速查询日志文件,默认情况下这些配置禁用状态,需要手动开启;也可通过mysql命令开启临时慢日志。

# vim /etc/my.cnf
[mysqld]
log_queries_not_using_indexes = 1
slow_query_log=on
slow_query_log_file=/var/log/mysql/slow-mysql-query.log
long_query_time=0

[mysqld_safe]
log-error=/var/log/mysql/mysqld.log

注: MySQL 不会主动创建日志文件,所以需要手动添加,添加完后赋予所有用户可读可写权限,如chmod 777 slow-mysql-query.log。

配置 Filebeat

在 Centos 上安装 Filebeat 是非常直接的,可以打开 Elasticsearch - Kibana 控制台,进入概览页,选择“ add log data”

image.png


image.png

我们按照上面的要求一步一步地进行安装和修改。在修改filebeat.yml文件时,我们需要注意以下:

一、配置 Filebeat modules 动态加载。

filebeat.config.modules:
  # Glob pattern for configuration loading
  path: /etc/filebeat/modules.d/mysql.yml

  # Set to true to enable config reloading
  reload.enabled: true

  # Period on which files under path should be checked for changes
  reload.period: 1s

由于 MySQL 需要分别检测错误日志及慢日志,通过模块分别指定所在路径,动态加载模块,所以path指定模块所在路径。

二、 填入 Kibana 地址。

setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  host: "https://es-cn-0p11111000zvqku.kibana.elasticsearch.aliyuncs.com:5601"

三、填入 Elasticsearch 地址及端口号:

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["es-cn-0p11111000zvqku.elasticsearch.aliyuncs.com:9200"]
  # Optional protocol and basic auth credentials.
  #protocol: "https"
  username: "elastic"
  password: "elastic@333"

四、启用 MySQL 模块,并进行配置:

# sudo filebeat modules enable mysql
# vim /etc/filebeat/modules.d/mysql.yml
- module: mysql
  # Error logs
  error:
    enabled: true
    var.paths: ["/var/log/mysql/mysqld.log"]
    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

  # Slow logs
  slowlog:
    enabled: true
    var.paths: ["/var/log/mysql/slow-mysql-query.log"]
    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

我们需要运行如下的命令来把相应的 Dashboard,Pipeline 及 Template 信息上传到 Elasticsearch 和 Kibana 中。

# sudo filebeat setup
# sudo service filebeat start

Kibana Dashboard

对 MySQL 数据库做重启及做查询,会生产对应的慢日志及错误日志。
部分慢查询日志

image.png


部分error日志

image.png


进入Kibana dashboard “[Filebeat MySQL] Overview ECS”,观察采集到的数据,至此,我们可以看到所有的关于MySQL的信息,这里包括以下queries及error logs等。

image.png

总结

如本教程所示,Filebeat 是用于 MySQL 数据库和 Elasticsearch 集群的出色日志传送解决方案。 与以前的版本相比,它非常轻巧,可以有效地发送日志事件。 Filebeat支持压缩,并且可以通过单个 yaml 文件轻松配置。 使用Filebeat,您可以轻松地管理日志文件,跟踪日志注册表,创建自定义字 K 段以在日志中启用细化过滤和发现,以及使用 Kibana 可视化功能立即为日志数据供电。

声明:本文由“Beats:如何使用Filebeat将MySQL日志发送到Elasticsearch”基于阿里云服务环境授权改编

原文作者:Elastic 中国社区布道师——刘晓国
合作编辑:Lettie/大禹
出处链接:https://elasticstack.blog.csdn.net/.


image.png

阿里云Elastic Stack】100%兼容开源ES,独有9大能力,提供免费X-pack服务(单节点价值$6000)

相关活动


更多折扣活动,请访问阿里云 Elasticsearch 官网

阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费


image.png

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
17天前
|
存储 安全 关系型数据库
Mysql 的binlog日志的优缺点
MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它包含了所有对数据库执行的更改操作,如INSERT、UPDATE和DELETE等。binlog的主要目的是复制和恢复。以下是binlog日志的优缺点: ### 优点: 1. **数据恢复**:当数据库出现意外故障或数据丢失时,可以利用binlog进行点恢复(point-in-time recovery),将数据恢复到某一特定时间点。 2. **主从复制**:binlog是实现MySQL主从复制功能的核心组件。主服务器将binlog中的事件发送到从服务器,从服务器再重放这些事件,从而实现数据的同步。 3. **审计**:b
|
26天前
|
存储 自然语言处理 关系型数据库
ElasticSearch索引 和MySQL索引那个更高效实用那个更合适
ElasticSearch索引 和MySQL索引那个更高效实用那个更合适
37 0
|
27天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
28天前
|
关系型数据库 MySQL
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
21 0
|
1月前
|
消息中间件 存储 关系型数据库
【微服务】mysql + elasticsearch数据双写设计与实现
【微服务】mysql + elasticsearch数据双写设计与实现
68 2
|
26天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
74 0
|
1月前
|
存储 SQL 关系型数据库
[MySQL]事务原理之redo log,undo log
[MySQL]事务原理之redo log,undo log
|
1月前
|
自然语言处理 关系型数据库 MySQL
Elasticsearch与mysql使用注意点总结
Elasticsearch与mysql使用注意点总结
41 2
|
1月前
|
SQL 缓存 关系型数据库
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
66 0
|
1月前
|
存储 机器学习/深度学习 关系型数据库
为什么Elasticsearch/Lucene检索可以比MySQL快?
为什么Elasticsearch/Lucene检索可以比MySQL快?
26 2

相关产品

  • 检索分析服务 Elasticsearch版