虚拟化容器,大数据,DBA,中间件,监控。

filebeat使用module收集mysql慢查询日志(十一)

15 11月
作者:admin|分类:大数据

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

导入成功

在这里插入图片描述

查看图形,只有少量有数据

在这里插入图片描述

浏览381 评论0
返回
目录
返回
首页
ELK收集多个docker容器日志(十二) kibana绘制日志收集系统仪表盘大屏(九)