当您需要查看并分析MySQL的日志信息(例如慢日志、error日志等)时,可通过Filebeat采集MySQL日志并发送到阿里云Elasticsearch中,然后在Kibana控制台中完成可视化查询、分析和展示。本文介绍具体的实现方法。
操作流程
- 准备工作创建阿里云Elasticsearch和ECS实例。Elasticsearch实例用来接收Filebeat采集的MySQL日志,并提供一个Kibana控制台进行可视化查询、分析与展示;ECS实例用来安装MySQL和Filebeat。
- 步骤一:安装并配置MySQL安装MySQL,并在MySQL的配置文件中开启error和慢查询日志文件配置。开启后,Filebeat才可采集到对应的日志。
- 步骤二:安装并配置Filebeat安装Filebeat,用来将MySQL中的日志采集到阿里云Elasticsearch集群中。需要启用Filebeat的MySQL模块,并在配置文件中指定Kibana和阿里云Elasticsearch的访问地址。
- 步骤三:使用Kibana Dashboard展示MySQL日志进行查询测试,并通过Kibana Dashboard展示对应的error和慢查询日志。
准备工作
- 创建阿里云Elasticsearch实例。
具体操作步骤请参见创建阿里云Elasticsearch实例,本文以通用商业版6.7.0版本为例。
- 创建阿里云ECS实例。
具体操作步骤请参见使用向导创建实例,本文以CentOS操作系统为例。
步骤一:安装并配置MySQL
- 连接ECS实例。具体操作步骤请参见通过VNC远程连接登录Linux实例。
- 下载并安装MySQL源。
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm
- 安装MySQL。
yum install mysql-server
- 启动MySQL并查看服务状态。
systemctl start mysqld systemctl status mysqld
- 在my.cnf文件中配置error日志文件和慢查询日志文件。说明 默认情况下MySQL会禁用日志文件配置,因此您需要手动开启。您也可通过MySQL命令开启临时慢日志。
- 打开my.cnf文件。
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
参数 说明 log_queries_not_using_indexes
是否将未使用索引的查询记录到慢查询日志中。1表示记录,0表示不记录。 slow_query_log
是否开启慢查询日志。on表示开启,off表示关闭。 slow_query_log_file
指定慢查询日志的存储路径。 long_query_time
慢查询阈值,单位为秒。当查询时间超过设定的阈值时,MySQL会将日志写入 slow_query_log_file
指定的文件中。注意 本文为方便测试,将该参数值设置为0,实际情况中请根据业务需要合理设置该参数值。 - 创建日志文件。
mkdir /var/log/mysql touch /var/log/mysql/mysqld.log touch /var/log/mysql/slow-mysql-query.log
注意 MySQL不会主动创建日志文件,所以您需要手动创建对应文件。 - 为所有用户授予日志文件的读写权限。
chmod 777 /var/log/mysql/slow-mysql-query.log /var/log/mysql/mysqld.log
- 打开my.cnf文件。
步骤二:安装并配置Filebeat
- 登录目标阿里云Elasticsearch实例的Kibana控制台。具体操作步骤请参见登录Kibana控制台。
- 在左侧导航栏,单击Logs。
- 单击View setup instructions。
- 在Add Data to Kibana页面,单击MySQL logs。
- 在Self managed页面,单击RPM。说明 由于本文使用的是Linux系统,因此选择RPM。实际情况中,请根据您的操作系统类型选择合适的安装方式。
- 按照页面提示,在ECS中安装Filebeat。
- 修改MySQL模块配置,分别指定待采集的error和slow日志文件。
- 启用MySQL模块。
sudo filebeat modules enable mysql
- 打开mysql.yml文件。
vim /etc/filebeat/modules.d/mysql.yml
- 修改MySQL模块配置。
- 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:
参数 说明 enabled
设置为 true
。var.paths
设置为对应日志文件的路径。需要与MySQL配置文件中设置的路径保持一致,详情请参见步骤一:安装并配置MySQL。
- 启用MySQL模块。
- 配置filebeat.yml文件。
- 打开filebeat.yml文件。
vim /etc/filebeat/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
- 修改Kibana配置。
setup.kibana: host: "https://es-cn-0pp1jxvcl000*****.kibana.elasticsearch.aliyuncs.com:5601"
host
:Kibana的访问地址。可在Kibana配置页面获取,详情请参见查看Kibana公网地址,格式为<Kibana公网地址>:5601
。 - 修改Elasticsearch output配置。
output.elasticsearch: # Array of hosts to connect to. hosts: ["es-cn-0pp1jxvcl000*****.elasticsearch.aliyuncs.com:9200"] # Optional protocol and basic auth credentials. #protocol: "https" username: "elastic" password: "<your_password>"
参数 说明 hosts
阿里云Elasticsearch的访问地址,格式为 <实例的内网或公网地址>:9200
。Elasticsearch实例的内网或公网地址可在实例的基本信息页面获取,详情请参见查看实例的基本信息。说明 如果ECS和Elasticsearch实例在同一专有网络VPC(Virtual Private Cloud)下,请使用内网地址;如果不在同一VPC下,请使用公网地址。使用公网地址需要配置公网地址访问白名单,详情请参见配置ES公网或私网访问白名单。username
阿里云Elasticsearch实例的访问用户名,默认为elastic。 password
对应用户的密码,一般在创建实例时设定。如果忘记,可重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
- 打开filebeat.yml文件。
- 执行以下命令,将Dashboard等信息上传到Elasticsearch和Kibana中,并启用Filebeat服务。
sudo filebeat setup sudo service filebeat start
步骤三:使用Kibana Dashboard展示MySQL日志
- 在ECS中重启MySQL数据库,并查询任意数据进行测试。重启命令如下。
systemctl restart mysqld
- 查看日志内容。本文检测到的日志内容如下。
图 1. 慢日志内容 图 2. error日志内容 - 登录目标Elasticsearch实例的Kibana控制台。具体操作步骤请参见登录Kibana控制台。
- 在左侧导航栏,单击Dashboard。
- 在Dashboards列表中,单击[Filebeat MySQL] Overview。
- 在页面右上角选择查询时间,查看对应时间段内的日志。