相关文章推荐
年轻有为的双杠  ·  sql ...·  5 月前    · 
绅士的牛肉面  ·  cmake_could not find ...·  11 月前    · 
风度翩翩的丝瓜  ·  Container Lifecycle ...·  1 年前    · 
ELK搭建(四):监控mysql慢查询、错误日志日志

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

0. 引言

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

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

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

2. 下载

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

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

3. filebeat介绍

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

根据 官方文档 的解释,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等等。更多可查看 官方文档

    搭配上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、再次登陆查询,已经开启

    关注公众号 Elasticsearch之家,了解更多新鲜内容

    zhuanlan.zhihu.com/p/141439013

    分类:
    后端
    标签: