用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 排序\r\n10-30 各业务主库排序\r\n30以后会随机,排序降序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审计日志:

  

    相关文档:
 
posted @ 2021-08-12 14:41  zping  阅读(140)  评论(0编辑  收藏  举报