抓取tcp包解析出mysql语句,将查询信息打印在屏幕上或者发送到Kafka。

1. Architecture

架构设计:

本项目采用模块化设计,主要分为四大模块:TCP抓包模块,协议解析模块,输出模块,心跳模块

2. Parse Protocol

sniffer-agent采用模块化结构,支持用户添加自己的解析模块,只要实现了统一的接口即可

MySQL

PostgreSQL

Redis

Mongodb

GRPC

详细输出格式查看

sniffer-agent可以动态设置抓包率,详情查看文档

4. Exporter

输出模块主要负责,将解析的结果对外输出。默认情况下输出到命令行,可以通过指定export_type参数选择kafka,这时候会直接将解析结果发送到kafka。

同样只要实现了export接口,用户可以自定义自己的输出方式。

5. Install:

环境:

golang:1.12

libpcap包

测试脚本运行在python3环境下

1.安装依赖,目前自测支持Linux系列操作系统,其他版本的系统有待验证

CentOS:

yum install libpcap-devel

Ubuntu:

apt-get install libpcap-dev

2.执行编译命令 go build

6. Demo

目前只支持MySQL协议的抓取,需要将编译后的二进制文件上传到MySQL服务器上

1.最简单的使用

./sniffer-agent

2.指定log级别,可以指定的值为debug、info、warn、error,默认是info

./sniffer-agent --log_level=debug

默认会监听 网卡:eth0,端口3306

3.指定网卡和监听端口

./sniffer-agent --interface=eth0 --port=3358

4.指定输出到kafka,为了将ddl和select、dml区分处理,这里使用了两个topic来生产消息

./sniffer-agent --export_type=kafka --kafka-server=$kafka_server:$kafka_server --kafka-group-id=sniffer --kafka-async-topic=non_ddl_sql_collector --kafka-sync-topic=ddl_sql_collector

5.指定严格模式,通过查询获取长连接的用户名和数据库

./sniffer-agent --strict_mode=true --admin_user=root --admin_passwd=123456

7. 题外话

在做这个功能之前,项目组调研过类似功能的产品,最有名的是mysql-sniffer

和go-sniffer

,这两个产品都很优秀,不过我们的业务场景要求更多。

我们需要将提取的SQL信息发送到kafka进行处理,之前的两个产品输出的结果需要进行一些处理然后自己发送,在QPS比较高的情况下,这些处理会消耗较多的CPU;

另外mysql-sniffer使用c++开发,平台的适用性较差,后期扩展较难。

开发的过程中也借鉴了这些产品的思想,另外在MySQL包解析的时候,参考了一些Vitess

和TiDB

的内容,部分私有变量和函数直接复制使用,这里向这些优秀的产品致敬,如有侵权请随时联系。

8. 结果分析

在压测的过程中和mysql-sniffer进行了结果对比,压测执行28万条语句,mysql-sniffer抓取了8千条,sniffer-agent抓取了30万条语句(其中包含client自动生成的语句)

9. 风险提示

1.sniffer-agent使用了pacp抓包,根据pacp抓包原理,在IO较高的时候有一定的概率丢包;

2.sniffer-agent提供了Prepare语句的支持,但是如果sniffer-agent在prepare语句初始化之后启动,就无法抓取prepare语句;

mysql 3358端口_好用的MySQL抓包工具:sniffer-agent相关推荐

  1. MySQL抓包工具:MySQL Sniffer

    简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端的请求,并格式化输出.输出内容包访问括时间.访问用户.来源 IP.访问 Database. ...

  2. MySQL抓包工具:MySQL Sniffer【转】

    本文来自:https://github.com/Qihoo360/mysql-sniffer 简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer ...

  3. mysql抓包_mysql抓包工具

    简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端或 Client 端请求,并格式化输出.输出内容包括访问时间.访问用户.来源 IP.访问 ...

  4. mysql sniffer 源码_MySQL 抓包工具 - MySQL Sniffer 使用小结 (含带general_log日志)

    在mysql运维工作中,一般会使用tcpdump做一些分析(直接读分析日志比较难以看明白,在数据库连接值高时使用):对于mysql实时的连接监控分析,通常会使用"mysqladmin/sho ...

  5. vc mysql sniffer_MySQL抓包工具:MySQL Sniffer

    简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端的请求,并格式化输出.输出内容包访问括时间.访问用户.来源 IP.访问 Database. ...

  6. 工具|MySQL、Redis、MongoDB网络抓包工具

    点击关注公众号,利用碎片时间学习 简介 go-sniffer 可以抓包截取项目(MySQL.Redis.MongoDB)中的请求并解析成相应的语句,并格式化输出.类似于在之前的文章 MySQL抓包工具 ...

  7. linux端口抓包工具下载,linux下的抓包工具tcpdump

    linux下的抓包工具. 抓包工具比较好用的有两个,一个是snort,一个是tcpdump,这次不说snort了,觉得这个工具虽然很强大,但是比较复杂,还是tcpdump比较简单.tcpdump wi ...

  8. python抓包工具_「docker实战篇」python的docker爬虫技术-fiddler抓包软件详细配置(七)...

    挑选常用的功能给各位老铁介绍下. fiddler第一次进入fiddlerfiddler会请求fiddler的官网,检查更新操作布局分布 工具栏File -capture traffic开启爬虫File ...

  9. fiddler实现模拟器抓吧_使用Fiddler对手机抓包

    简介 Fiddler 是一款非常流行实用的http抓包工具,原理是在本机开启一个http的代理服务器,然后它会转发所有的http请求和响应,因此它比firebug和chrome自带的抓包工具要好用和灵 ...

最新文章

  1. linux socket文件数限制,Linux下高并发socket最大连接数所受的限制问题
  2. The Simple Life
  3. 用Python发送邮件[zt]
  4. 英语语法---名词详解
  5. 华为平板wps语音朗读_华为隐藏的这五大功能,个个都很实用,如果你不知道,钱就白花了...
  6. mysql起止时间怎么写_【Mysql 学习】日期函数函数
  7. hdu 1253 胜利大逃亡 (广搜)
  8. 笔记:Chrome 对浏览器的改进
  9. winFrom窗体样式
  10. APT***实例研究与企业现有防御体系缺陷分析
  11. 3月2日 雾霾图像清晰化处理,第1人称相机世界的坐标系,焦距、焦点、调焦、超焦距、视场角、滑动变焦Dolly zooming,相机内参
  12. 【备战秋招系列-3】Java高频知识点——排序、设计模式、JavaSE、JVM
  13. Laravel学习记录--数据填充
  14. 【路在脚下】----成长的感觉
  15. 建模年纪大了怎么办,建模是吃青春饭的嘛?
  16. 固定资产取消月末结账时报错,提示:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录...
  17. 晨光计算机里的铃声是什么歌曲,soul app里的音乐有哪些?soul app里的铃声有哪些?[图]...
  18. weblogic增大线程数
  19. window系统杀死进程方法
  20. localhost:8080打不开本地网页

热门文章

  1. 31-三色旗问题(荷兰国旗问题)
  2. java写pdf中文不显示_java – iText pdf在使用NOTO字体或Source Hans时不显示中文字符...
  3. 使用layer打开新页面
  4. 用endnote9往word中插入参考文献
  5. 简易考试系统(java、头歌实验)
  6. Ugui中使用Image完成动态连线
  7. 线程池 (通俗易懂)
  8. 入手评测:i9 11900K和r9 5900x 区别 i911900K和r95900x选哪个
  9. proteus各个版本下载
  10. 网盘企业,免费用户是不是不配下载?