当初分析日志,麻烦的是腾讯云的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

   程序实现:

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审计日志:

    相关文档:
 

用ELK分析每天4亿多条腾讯云MySQL审计日志(3)--下载日志的更多相关文章

  1. jquery的$.extend和$.fn.extend作用及区别/用span实现进度条/腾讯云IIS端口号修改

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); 虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便. ...

  2. 使用Docker快速部署ELK分析Nginx日志实践(二)

    Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...

  3. 4:ELK分析tomcat日志

    五.ELK分析tomcat日志 1.配置FIlebeat搜集tomcat日志 2.配置Logstash从filebeat输入tomcat日志 3.查看索引 4.创建索引

  4. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  5. Python脚本收集腾讯云CDN日志,并入ELK日志分析

    负责搭建公司日志分析,一直想把CDN日志也放入到日志分析,前些日志终于达成所愿,现在贴出具体做法: 1.收集日志 腾讯云CDN日志一般一小时刷新一次,也就是说当前只能下载一小时之前的日志数据,但据本人 ...

  6. 腾讯云EMR大数据实时OLAP分析案例解析

    OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过QQ音乐与腾 ...

  7. 服务质量分析:腾讯会议&腾讯云Elasticsearch玩出了怎样的新操作?

    导语 | 腾讯会议于2019年12月底上线,两个月内日活突破1000万,被广泛应用于疫情防控会议.远程办公.师生远程授课等场景,为疫情期间的复工复产提供了重要的远程沟通工具.上线100天内,腾讯会议快 ...

  8. MySQL调优系列_日志分析

    前言 本篇主要总结一下MySQL数据库的几种日志,用于日常维护过程中问题解决和性能优化等,稍显基础,日常积累之用. 文章的部分内容会将MySQL数据库和SQL Server数据库部分内容做一个对比,非 ...

  9. 日吞吐万亿,腾讯云时序数据库CTSDB解密

    一.背景 随着移动互联网.物联网.大数据等行业的高速发展,数据在持续的以指数级的速度增长,比如我们使用手机访问互网络时的行为数据,各种可穿戴设备上报的状态数据,工厂中设备传感器采集的指标数据,传统互联 ...

  10. 一条SQL语句在MySQL中如何执行的

    本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构, ...

随机推荐

  1. PHPCMS V9安装出现DNS解析失败的解决方法-不支持采集和保存远程图片

    目前因为phpcms官网停止解析后,很多人安装phpcms v9出现如下错误:     这是因为检测dns解析的域名是phpcms官网的域名,官网域名停止解析后肯定检测失败.解决方法如下:   打开/ ...

  2. 44从零开始用Rust编写nginx,命令行参数的设计与解析及说明

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...

  3. [转帖]Web技术(五):HTTP/2 是如何解决HTTP/1.1 性能瓶颈的?

    文章目录 一.HTTP/2 概览 二.HTTP/2 协议原理 2.1 Binary frame layer 2.1.1 DATA帧定义 2.1.2 HEADERS帧定义 2.2 Streams and ...

  4. 【构造,树】【Loj】Loj6669 Nauuo and Binary Tree

    2023.7.3 Problem Link 交互库有一棵 \(n\) 个点的二叉树,你每次可以询问两个点之间的距离,猜出这棵二叉树.\(n\le 3000\),询问次数上限 \(30000\). 首先 ...

  5. 模块化Common.js与ES6

    为什么要模块化开发 1. 依赖关系(a文件依赖b文件中的方法,b文件必须在a文件之前引入) 2. 命名问题 (多个文件变量名,方法名相同会出现覆盖) 3. 代码组织(后期不好维护) 模块化规范有 1. ...

  6. js中数组reduce的使用原来这么简单

    reduce 的学习方法 array.reduce(callback(prev, currentValue, index, arr), initialValue) //简写就是下面这样的 arr.re ...

  7. vue中$once的使用

    $once 可以给组件实例绑定一个自定义事件,但该事件只能被触发一次,触发之后随即被移除 $once的简单使用 <template> <div> <button @cli ...

  8. vue中使用refs出现undefined的解决方法

    最近遇见一个情况, 在methods:{}中的某个方法, 通过父组件去调用子组件的一个方法:this.$refs.xxx 打印出来的却是undefined? 因为: 是如果在DOM结构中的某个DOM节 ...

  9. 通杀无限 debugger,目前只有 1% 的人知道!

    前言 相信很多小伙伴在进行 web 逆向的时候,都遇到过无限 debugger.最简单的方法,在 debugger 位置,点击行号,右键 Never pause here,永远不在此处断下即可.但是这 ...

  10. Jupyter Notebook支持Go

    在执行下列命令之前,请确保你已经安装了Go和Jupyter. gophernotes是针对Jupyter和nteract的Go内核,它可以让你在基于浏览器的笔记本或桌面app上交互式地使用Go.下面介 ...