filebeat使用module收集mysql慢查询日志(十一)
filebeat使用module收集mysql日志
mysql主要收集慢查询日志和error日志
1.安装mysql
1.安装mysql
[root@mysql ~]# yum -y install mariadb-server
2.修改配置文件制定数据存放路径
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
3.创建数据目录并赋权
[root@mysql ~]# mkdir /data/mysql
[root@mysql ~]# chown -R mysql:mysql /data/mysql/
4.启动mysql
[root@mysql ~]# systemctl start mariadb
2.模拟mysql慢查询
2.1.开启mysql慢查询日志
这是临时开启的,想要永久开启需要修改配置文件,临时开启每次重启数据库都会关闭
1.查询慢sql时长(多长时间内没执行完就表示是慢sql,这是时10秒)
MariaDB [(none)]> show variables like 'long_query_time%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
2.查询慢sql是否开启
MariaDB [(none)]> show variables like 'slow_query%';
+---------------------+----------------+
| Variable_name | Value |
+---------------------+----------------+
| slow_query_log | OFF |
| slow_query_log_file | mysql-slow.log |
+---------------------+----------------+
2 rows in set (0.00 sec)
3.开启慢sql
MariaDB [(none)]> set global slow_query_log=ON;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show variables like 'slow_query%';
+---------------------+----------------+
| Variable_name | Value |
+---------------------+----------------+
| slow_query_log | ON |
| slow_query_log_file | mysql-slow.log |
+---------------------+----------------+
2 rows in set (0.00 sec)
2.2.模拟mysql慢查询
sleep命令就执行每一条数据查询使用多少秒,这样一来就可以产生慢日志了
MariaDB [(none)]> select sleep(5),user,host from mysql.user;
+----------+------+-----------+
| sleep(5) | user | host |
+----------+------+-----------+
| 0 | root | 127.0.0.1 |
| 0 | root | ::1 |
| 0 | | localhost |
| 0 | root | localhost |
| 0 | | mysql |
| 0 | root | mysql |
+----------+------+-----------+
6 rows in set (30.00 sec)
[root@mysql ~]# tail -f /data/mysql/mysql-slow.log 查询慢日志
3.配置filebeat module收集mysql日志
3.1.明确收集日志的路径
- 全部日志:/var/log/mariadb/mariadb.log
- 包含正确日志和错误日志
- 慢sql日志:/data/mysql/mysql-slow.log
3.2.配置module收集mysql日志
1.开启mysql modules配置
[root@mysql /data/mysql]# filebeat modules enable mysql
Enabled mysql
2.修改mysql modules配置文件
[root@mysql ~]# vim /etc/filebeat/modules.d/mysql.yml
- module: mysql
error:
enabled: true
var.paths: ["/var/log/mariadb/mariadb.log"]
slowlog:
enabled: true
var.paths: ["/data/mysql/mysql-slow.log"]
3.重启filebeat
[root@mysql ~]# systemctl restart filebeat
3.3.产生慢sql日志
MariaDB [(none)]> select sleep(2),user,host from mysql.user;
+----------+------+-----------+
| sleep(2) | user | host |
+----------+------+-----------+
| 0 | root | 127.0.0.1 |
| 0 | root | ::1 |
| 0 | | localhost |
| 0 | root | localhost |
| 0 | | mysql |
| 0 | root | mysql |
+----------+------+-----------+
6 rows in set (12.00 sec)
MariaDB [(none)]> select sleep(5),user,host from mysql.user;
+----------+------+-----------+
| sleep(5) | user | host |
+----------+------+-----------+
| 0 | root | 127.0.0.1 |
| 0 | root | ::1 |
| 0 | | localhost |
| 0 | root | localhost |
| 0 | | mysql |
| 0 | root | mysql |
+----------+------+-----------+
6 rows in set (30.01 sec)
3.4.查看es上产生的mysql索引数据
已经生成了索引,由于我们没有指定索引名,所以是默认的,第一次做mysql日志收集,可以先不指定索引库,首先等索引库数据生成后,看里面的json字段,根据字段信息来确定在filebeat中做匹配规则
打开数据浏览的时候已经可以确定根据那个字段去做匹配规则,最终自定义索引名了
fileset.name这个字段就是module配置文件中的的不同日志区分的关键点,也可以拿这个作为匹配规则
3.5.配置filebeat指定mysql module收集来的日志使用自定义索引名
1.配置filebeat
[root@mysql ~]# vim /etc/filebeat/filebeat.yml
- index: "mysql-error-%{+yyyy.MM.dd}"
when.contains:
fileset.name: "error"
- index: "mysql-slowlog-%{+yyyy.MM.dd}"
when.contains:
fileset.name: "slowlog"
2.重启filebeat
[root@mysql ~]# systemctl restart filebeat
3.6.查看指定的索引名是否在es上创建
4.在kibana上关联es索引
4.1.关联索引
mysql-error索引
mysql-slowlog索引
4.2.查看收集来的数据是否是json格式
点击Discovery—选择mysql-error索引—查看数据
点击小三角即可看到数据的详细内容
已经全部是json格式
4.3.统计mysql 慢sql都执行了什么sql
5.导入mysql模板
[root@mysql ~]# mkdir /data/kibana_module/kibana_module_mysql/
[root@mysql ~]# cd /data/kibana_module/kibana_module_mysql/
[root@mysql /data/kibana_module/kibana_module_mysql]# cp -r /usr/share/filebeat/kibana/6/* .
[root@mysql /data/kibana_module/kibana_module_mysql]# find dashboard/ -type f ! -name "*mysql*" |xargs rm -rf
[root@mysql /data/kibana_module/kibana_module_mysql]# sed -i 's#filebeat\-\*#mysql\-\*#g' dashboard/Filebeat-mysql.json
[root@mysql /data/kibana_module/kibana_module_mysql]# sed -i 's#filebeat\-\*#mysql\-\*#g' index-pattern/filebeat.json
[root@mysql ~]# filebeat setup --dashboards -E setup.dashboards.directory= /data/kibana_module/kibana_module_mysql/
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
导入成功
查看图形,只有少量有数据
目录 返回
首页