当前位置 博文首页 > 江晓龙的博客:filebeat使用module收集mysql慢查询日志(十一)

    江晓龙的博客:filebeat使用module收集mysql慢查询日志(十一)

    作者:[db:作者] 时间:2021-07-14 18:42

    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
    

    导入成功

    在这里插入图片描述

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

    在这里插入图片描述

    cs
    下一篇:没有了