暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

基于ELK搭建mysql慢查询、错误日志监控平台

Elastic之家 2022-05-21
846

0. 引言

因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。

普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。

那么我们今天就来一步步搭建这样的一个平台

2. 下载

首先关于ELK的搭建就不再累述了,不清楚的同学可以看看往期博客: ELK搭建(一):实现分布式微服务日志监控[1]

因为我的ELK环境是7.13.0的,所以我们需要下载对应版本的filebeat filebeat官方下载地址[2]

3. filebeat介绍

filebeat是elastic官方提供的一个轻量级的日志采集器,根据名称也能知道,主要用于文件的数据采集。基于Golang开发,可以安装到想要日志的服务器或者主机上来定期读取对应的数据,并发送到elasticsearch或者logstash上,甚至数据量大时,我们还可以先输出到kafka、redis等中间件上。

根据官方文档[3]的解释,filebeat 主要包含两个主要组件:input和harvesters。

harvester: harvester用于按行读取单个文件的内容。每个文件都会启动一个harvester,harvester负责打开和关闭文件。filebeat中还有一个Registrar组件用于记录文件的偏移量,即上一次读取的位置,下一次打开文件时会从Registrar读取偏移量然后继续读取数据input:负责管理harvester并且找到所有符合读取条件的文件。如果输入类型为log,则input会在驱动器上找到与定义的路径符合的文件,并会给每个文件都启动一个harvester.

其次再配置Output组件将获取的数据进行输出。


filebeat中支持多种服务的数据采集,包括但不仅限于Mysql,MongoDB,Nginx,Redis,ActiveMQ,PostgreSQL,RabbitMQ,Tomcat等等。更多可查看官方文档[4]

搭配上kibana提供的开箱即用的数据看板,可以快速搭建监控平台。

4. 安装filebeat

以下安装步骤也可以在kibana主页>添加数据>MySQL日志页面中看到


1、解压压缩包(这里以mac版本示例,实际操作时请根据需要下载对应系统及版本的filebeat)

    tar -zxvf filebeat-7.13.0-darwin-x86_64.tar.gz
    复制

    2、修改filebeat.yml配置文件

      setup.template.settings:
      index.number_of_shards: 1
      # 因为es是单节点,所以将副本分片设置为0.否则会报黄
      index.number_of_replicas: 0
      output.elasticsearch:
      hosts: ["192.168.244.11:9200"]
      username: "elastic"
      password: "elastic"
      setup.kibana:
      host: "192.168.244.11:5601"
      复制

      3、启用mysql模块

        ./filebeat modules enable mysql
        复制

        4、修改mysql module配置文件

          vim modules.d mysql.yml
          复制

          修改内容,这里直接采用了默认配置,即采集错误日志和慢日志

            - module: mysql
            # Error logs
            error:
            enabled: true
            # 日志路径,如果不配置,filebeat将按照操作系统选择日志路径.
            var.paths: ["/opt/homebrew/var/mysql/MacBook-Pro.local.err*"]


            # Slow logs
            slowlog:
            enabled: true
            # 日志路径,如果不配置,filebeat将按照操作系统选择日志路径.
            var.paths: ["/opt/homebrew/var/mysql/MacBook-Pro-slow.log*"]


            复制

            如果不知道错误日志和慢日志位置的,可以通过以下两个指令查询

               show variables like 'log_error';
              show variables like '%slow_query_log%';
              复制

              5、加载kibana仪表盘

                ./filebeat setup
                复制

                6、运行filebeat,注意这里不要把上述的指令中断后再执行,直接新开窗口执行,否则可能生成面板失败

                  ./filebeat -e
                  复制


                  7、kibana主页>添加数据>MySQL日志中点击检查数据,如果出现成功提示则说明配置成功。



                  或者可以在dev-tool中查询filebeat-7.13.0索引,如果有索引且有数据则说明配置成功


                    GET filebeat-7.13.0/_search
                    复制


                    8、点击MySQL日志仪表盘生成仪表盘

                    直接跳转到Filebeat MySQL数据看板。如果这里图形没有加载的话,检查一下filebeat-7.13.0索引是否有数据


                    测试

                    1、在mysql中执行以下指令,因为阈值设置的是3,所以设置睡眠5s会被判定为慢查询

                      select sleep(5);
                      复制



                      2、查看面板,可以看到慢日志已经更新上来了

                      到此,我们的mysql日志监控平台就搭建完成了,当然你也可以根据自己的需要来创建自定义图表。如果不知道怎么创建可以查看我往期的博客。


                      5. mysql开启慢日志

                      如果mysql没有开启慢日志的,要先开启:

                      1、 登陆mysql,查看mysql是否开启慢日志

                        show variables like '%slow_query_log%';
                        复制

                        如图所示是没有开启的

                        2、开启慢查询日志,修改配置文件my.cnf


                          sudo vim /etc/my.cnf
                          复制

                          添加内容

                            [mysqld]
                            # 开启慢日志
                            slow_query_log=1
                            # 日志位置
                            slow_query_log_file=/opt/homebrew/var/mysql/MacBook-Pro-slow.log
                            # 设置阈值
                            long_query_time=3
                            # 输出形式
                            log_output=FILE
                            复制

                            3、重启mysql

                              sudo mysql.server restart
                              复制

                              4、再次登陆查询,已经开启


                              扫码加入学习交流群


                              参考博文

                              https://zhuanlan.zhihu.com/p/141439013

                              References

                              [1]
                               ELK搭建(一):实现分布式微服务日志监控: https://blog.csdn.net/qq_24950043/article/details/122291125
                              [2]
                               filebeat官方下载地址: https://www.elastic.co/cn/downloads/past-releases#filebeat
                              [3]
                               官方文档: https://www.elastic.co/guide/en/beats/filebeat/8.2/how-filebeat-works.html
                              [4]
                               官方文档: https://www.elastic.co/guide/en/beats/filebeat/7.13/filebeat-modules.html

                              文章转载自Elastic之家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                              评论