将MySQL的日志可视化
这篇文章是Retty Advent Calendar的第一篇。
您是否在运行数据库时遇到过数据库负载或I/O问题?
最近,我在正式的数据库复制和其他数据库之间遇到了严重的复制延迟问题,一直让我很困扰。
因此,這次我們打算從query_log中使用Kibana將執行時間和重複查詢可視化以進行分析,以確定其原因。
順便一提,我們還會提到使用RDS的MySQL的方法。
请将以下内容用中文进行意义相同的重新表述:
途径
-
- 在中文中,将以下内容的原意进行一个改写:
将MySQL的query_log和slow_query的设置导出到文件
使用filebeat + ElasticSearch + Kibana对日志进行可视化。
请用中文完成以下的同义转述,只需要一个选项:
MySQL的配置
查询日志设置
登录MySQL后,执行以下命令。
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/log/mysql/query.log';
再启动时,为了保持持续性,将以下设置添加到my.cnf文件中。
general_log = 1
general_log_file = /var/log/mysql/query.log
将slow_query配置设定。
登录MySQL并执行以下命令。
SET GLOBAL slow_query_log = 1;
SET GLOBAL slow_query_log_file = '/var/log/mysql/query.log';
另外,为了在重新启动后继续进行,将以下设置追加到my.cnf文件中。
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow_query.log
long_query_time = 3
请以中文原生态语言改写以下内容,只需提供一个版本:
请进行中文改写,只需提供一个版本。
对于RDS-MySQL来说
查询日志的设置
在RDS控制台中选择参数组。
选择目标参数组,并按以下方式更改参数。
虽然general_log_file也可以更改,但更改后需要重新启动,所以不建议更改。
general_log = 1
慢查询的设置
在RDS控制台中选择参数组。
选择目标参数组,并按以下方式更改参数。
slow_query_log_file与query_log类似,可以进行更改,但需要重新启动。
slow_query_log = 1
long_query_time = 3
请给我一个明确的选项,让我用中文进行本地化改写。
对日志进行可视化
对于每个工具的安装,我们按照以下参考步骤进行了安装。
参考链接:http://acro-engineer.hatenablog.com/entry/2016/10/27/165342
建议您使用一台配置充足的计算机,因为在此情况下,尝试在本地搭建测试环境时,发现需要比预想更高的配置,内存和CPU资源不足,导致花费了很长时间。
安装OpenJDK
由于Elasticsearch版本相关性,需要Java8或更高版本。
sudo yum update -y
sudo yum remove -y java-1.7.0-openjdk
sudo yum install -y java-1.8.0-openjdk-devel
sudo yum install -y java-1.8.0-openjdk-debuginfo --enablerepo=*debug*
添加存储库
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo vim /etc/yum.repos.d/elastic.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
安装Elasticsearch
sudo yum install -y elasticsearch
sudo vi /etc/elasticsearch/elasticsearch.yml
如果想将默认权限设置为public,可以追加以下内容。
network.host: _local_, _site_
Kibana的安装
sudo yum install -y kibana
sudo vi /etc/kibana/kibana.yml
如果希望将Kibana公开访问,需要添加以下内容,因为Kibana目前只允许本地访问。
server.host: "0.0.0.0"
启动Elasticsearch和Kibana。
sudo service elasticsearch start
sudo service kibana start
安装Filebeat。
执行以下操作,添加存储库。
sudo vim /etc/yum.repos.d/beats.repo
[beats]
name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1
执行以下操作并安装
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
sudo yum install filebeat
日志的设置
/etc/filebeat/filebeat.yml
paths:
#- /var/log/*.log
- /var/log/mysql/*query.log
执行以下操作以启动。
sudo service filebeat start
确认通信
Elasticsearch 可以进行重述 as Elasticsearch 搜索引擎.
执行以下操作,以确认是否存在filebeat-*。
[ec2-user@ip-172-19-76-160 ~]$ curl 'localhost:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana bGUIEfzeSNWFB9yZ1Ra-zg 1 1 151 88 376kb 376kb
yellow open filebeat-2016.11.30 1uNJrdFuReW2RAdUpkvN_w 5 1 133284 0 12.3mb 12.3mb
yellow open metricbeat-2016.11.30 dFmHhQBJTaK7fIDexqvjRw 5 1 142470 0 59.9mb 59.9mb
yellow open kibana_access-2016.11.30 AzOrJDMrSWqIMHeM4DrekA 5 1 1139 0 1.3mb 1.3mb
yellow open packetbeat-2016.11.30 Z8vmYh92R6-OwhP93MWbcg 5 1 19978 0 6.6mb 6.6mb
[ec2-user@ip-172-19-76-160 ~]$
可视化结果
总结
由于投稿的时间关系,在本来希望更准确地记录并进行分析的情况下,我只能中途停止。在轮到我再次写作之前,我会把它整理得更有条理,并补充相关内容。
请以中文将以下内容复述一遍,只需要提供一种选项:
I enjoyed my vacation in China last year.
后记
我写了一篇关于如何通过RDS可视化慢查询的方法,并且还写了这篇文章的续篇。