• 用ELK分析每天4亿多条腾讯云MySQL审计日志(3)--下载日志


       当初分析日志,麻烦的是腾讯云的SQL审计日志下载,有下列限制:

         1,单次最多1000万条下载

         2,单个实例最多生成5条日志文件,多的要先删除以前文件才能生成

      腾讯云日志文件生成界面:

        

        一开始用手工下载,想想也不多,可以忍受,弄了一段时间后,研发的要求越来越高,不能一直这样手工,刚好旁边的运维小伙用GO实现了

    程序单实例下载日志---filebeat--kafka--ELK, 给了我很大信心,后来就用Python3重新开发一套下载日志的小系统。弄了2周终于可用:

       1,数据配置放到表里      

    CREATE TABLE `audit_server` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `instance_id` varchar(200) DEFAULT NULL COMMENT '机器id',
      `slow_name` varchar(300) DEFAULT NULL COMMENT '慢日志名称',
      `status` tinyint(255) DEFAULT '0',
      `difftime` int(255) DEFAULT NULL COMMENT '间隔分钟',
      `dept` varchar(300) DEFAULT NULL,
      `ordernum` decimal(6,1) DEFAULT NULL COMMENT '1-10 排序
    10-30 各业务主库排序
    30以后会随机,排序降序asc输出',
      `ld_time` datetime DEFAULT NULL COMMENT '上次下载时间',
      `type` tinyint(255) DEFAULT NULL COMMENT '分类',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=110 DEFAULT CHARSET=utf8mb4
    
    CREATE TABLE `audit_log` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `instance_id` varchar(100) DEFAULT NULL,
      `filename` varchar(300) DEFAULT NULL,
      `starttime` datetime DEFAULT NULL,
      `endtime` datetime DEFAULT NULL,
      `is_down` tinyint(255) DEFAULT '0' COMMENT '是否已经完成下载,0:刚创建 1:正在下载  2:下载完成',
      `is_deleted` tinyint(255) DEFAULT '0' COMMENT '是否删除文件 0,未删除,1:已经删除',
      `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
      `ds_time` datetime DEFAULT NULL COMMENT '开始下载时间',
      `de_time` datetime DEFAULT NULL COMMENT '结束下载时间',
      `del_time` datetime DEFAULT NULL COMMENT '文件删除时间',
      `filesize` int(10) DEFAULT NULL COMMENT '文件大小,MB',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=65509 DEFAULT CHARSET=utf8mb4
    View Code

       程序实现:

          1,  audit_server表配置时间(字段difftime),不同实例,每次生成不同的时间日志,如30分钟,60分钟,240分钟等,保证每次能生成文件

          2,audit_server表上次已下载时间(字段ld_time),  生成新日志文件: ld_time+difftime,  成功后,更新ld_time,实现增量不停循环抽取

          3,  下载的日志文件记录在audit_log, 可以分析每次的下载时间,生成时间等,

          4,python脚本,配置每2分钟执行一次,兼容不停抽取,如果下载完成,自动删除腾讯云的审计日志文件

          5,audit_server表配置多机器并行下载日志(字段type),目前配置3台云主机(type为1,2,3),不同机器同时下载不同的实例日志,并可以动态调整。

          6,配置截止抽取时间,先保证按天完成,减少对共用的ELK影响,默认是当天0点

     

     记录的audit_log审计日志:

      

      

  • 相关阅读:
    textarea中的空格与换行
    js判断微信内置浏览器
    关于express4不再支持body-parser
    html5 geolocation API
    屏幕密度与分辨率
    nodebeginer
    手机浏览器下IScroll中click事件
    iphone手机上的click和touch
    AngularJS学习笔记一
    不用bootstrap实现居中适应
  • 原文地址:https://www.cnblogs.com/zping/p/15132665.html
Copyright © 2020-2023  润新知