简介

go-sniffer 可以抓包截取项目(MySQL、Redis、MongoDB)中的请求并解析成相应的语句,并格式化输出。类似于在之前的文章 MySQL抓包工具:MySQL Sniffer【转】中介绍的mysql-sniffer。而 go-sniffer 可以对更多数据库进行抓包分析,现在来介绍在什么情况下会使用该工具的。

使用

下载:

github 地址:https://github.com/40t/go-sniffer

安装:

1)安装依赖包:

Centos

yum -y install libpcap-devel

Ubuntu:

apt-get install libpcap-dev

另外还需要安装golang,并且版本需要在1.10.3以上。

wget https://golang.org/dl/go1.10.3.linux-amd64.tar.gz

设置好相关的环境变量。如果不想要go环境 ,则可以直接在其他地方安装好go-sniffer之后,复制到目标服务器上直接使用。

2)下载安装

-- 安装好go环境的服务器上:
go get -v -u github.com/40t/go-sniffer
cp -rf $(go env GOPATH)/bin/go-sniffer /usr/local/bin --安装到设置好的go环境变量的目录里
go-sniffer

参数说明: go-sniffer --help

=======================================================================
[使用说明] go-sniffer [设备名] [插件名] [插件参数(可选)] [例子]
go-sniffer en0 redis 抓取redis数据包
go-sniffer en0 mysql -p 3306 抓取mysql数据包,端口3306 go-sniffer --[命令]
--help 帮助信息
--env 环境变量
--list 插件列表
--ver 版本信息
--dev 设备列表
[例子]
go-sniffer --list 查看可抓取的协议 =======================================================================
[设备名] : lo0 : 127.0.0.1
[设备名] : en0 : x:x:x:x:x5:x 192.168.1.3
[设备名] : utun2 : 1.1.11.1
=======================================================================

语法:

$ go-sniffer lo0 mysql
$ go-sniffer en0 redis
$ go-sniffer eth0 http -p 8080
$ go-sniffer eth1 mongodb

使用场景

一 Redis :审计、发现热点key

关于Redis的知识点就不说了,主要来说明如何使用go-sniffer来抓包分析。如果想发现哪个key的操作比较多或则是否存在热点key,在Redis4.0之前没有什么好办法(4.0之后的LFU可以查看hotkey),只有通过统计各个客户端发来的命令进行统计。虽然monitor可以看到某一刻的key操作,但是该命令消耗巨大,可能会造成客户端缓冲区溢出。并且也没有合适的插件来进行实现。即使有的话,对Redis的性能肯定有一定的损耗,所以只有监控其网络来分析操作是对Redis服务的影响最小的。如对一个实例进行监控:

go-sniffer eth0 redis -p 6379 >> out.log

对通过eth0网卡的客户端访问端口为6379的Redis服务进行抓包,并把信息写到文件中。该文件的日志格式:

tcp and port 6379 get abc
get abc
get abc
get abc
get opq
get opq
get opq
get opq
get xyz
get xyz
get xyz

可以看到,该文件的信息就是操作日志,最后可以通过使用awk来分析,也可以把该日志文件写入到数据库的表里进行统计分析:

# grep -avEi "^#|^$|^tcp|^ INFO|^ AUTH|^ REPLCONF ACK|^ CONFIG GET" out.txt |awk '{print $1,$2}'|sort| uniq -c | sort -nr |head -n 10
5 get abc
4 get opq
3 get xyz

注意:go-sniffer也需要消耗一定的资源,大致的消耗可以看以下表格:

OPS Redis CPU sniffer CPU
1.2W 20% 30%
5.5W 80% 140%
7.5W 98% 180%

从上面看到,go-sniffer所需要的CPU资源是Redis的2倍左右。所以,在使用该工具之前,先判断本身服务器的资源是否够用。

二 MySQL:审计

go-sniffer eth0 mysql -p 3306 >> out.log

三 MongoDB:审计

go-sniffer eth0 mongodb -p 27017 >> out.log

MySQL、Redis、MongoDB网络抓包工具的更多相关文章

  1. 跨平台网络抓包工具-Microsoft Message Analyzer

    Microsoft Message Analyzer (MMA 2013)是微软最受欢迎的Netmon的最新版本. 在Netmon网络跟踪和排除故障功能的基础上提供了更强大的跨平台网络分析追踪能力.园 ...

  2. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...

  3. 网络抓包工具-Wireshark学习资料

    wireshark一个非常牛逼的网络抓包工具.转载一系列博文 一站式学习Wireshark(一):Wireshark基本用法 一站式学习Wireshark(二):应用Wireshark观察基本网络协议 ...

  4. HttpWatch网络抓包工具的使用

    HttpWatch网络抓包工具是专为IE浏览器集成的一款网络拽包工具.   是一款强大的网页数据分析软件,是最好用的抓包工具,httpwatch可以抓到上传视屏图片的包,一般的抓包软件是抓不到的.打开 ...

  5. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布 来自官方日志的喜悦 被誉为全新开始的消息分析器 ...

  6. 网络抓包工具 Fiddler

    网络抓包工具 Fiddler 下载网址 http://www.telerik.com/fiddler 简单介绍 Fiddler是一个http协议调试代理工具,它能够记录并检查全部你的电脑和互联网之间的 ...

  7. [工具]Mac平台开发几个网络抓包工具(sniffer)

    Cocoa Packet Analyzer http://www.tastycocoabytes.com/cpa/ Cocoa Packet Analyzer is a native Mac OS X ...

  8. Charles for Mac(HTTP 监视器和网络抓包工具)破解版安装

    1.软件简介    Charles 是在 Mac.Linux 或 Windows 下常用的 http 协议网络包截取工具,在平常的测试与调式过程中,掌握此工具就基本可以不用其他抓包工具了.Charle ...

  9. Charles 网络抓包工具

    1.Charles 简介 Charles 是在 Mac.Linux 或 Windows 下常用的 http 协议网络包截取工具,在平常的测试与调式过程中,掌握此工具就基本可以不用其他抓包工具了.Cha ...

随机推荐

  1. [转]C# 互操作性入门系列(一):C#中互操作性介绍

    传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...

  2. 传统表单提交文件上传,以及FormData异步ajax上传文件

    传统的文件上传: 只用将form表单的entype修改成multipart/form-data,然后就可以进行文件上传,这种方式常用并且简单. 以下是另一种方式FormData,有时候我们需要ajax ...

  3. 解决servlet中get方式中中文乱码问题(二):装饰者模式使用

    注意,这里是针对Tomcat容器中get方式提交的servlet中获得参数,参数中有中文的时候乱码的问题: 之前我已经讲过,Tomcat8.0及以上URIEncoding都是utf-8的默认编码,不会 ...

  4. jdbc操作mysql(一)

    java.sql包 在使用jdbc之前,我们先看看有关操作jdbc会用到的几个类和接口,通过查看官方文档可知 DriverManager:用于管理一组JDBC驱动程序的基本服务,即管理数据库中的所有驱 ...

  5. Linux基于Docker的Redis主从复制、哨兵模式搭建

    本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...

  6. Intel® QAT加速卡之加密、哈希操作流程和示例

    Intel QAT 加密API介绍 文章主要讲述了Intel QAT 加密API接口的说明,以及多种应用场景下的使用方法. 文章目录 Intel QAT 加密API介绍 1. 概述 1.1 会话(se ...

  7. node.js一头雾水

    开始学习node.js,一头雾水,谁可以告诉我怎么学......欢迎评论留言怎么学node.js的,谢谢 node,node,node,给自己加油 放一张自己设计的日历图鼓励一下:):):),加油.. ...

  8. MobaXterm - 渗透之旅的终端神器

    一.背景 1.SSH概念 如果想要连接Linux服务器来进行文件之间的传送,那就需要一个Secure Shell软件(简称SSH的)来完成.从概念上来讲,SSH其实是一个网络协议,允许通过网络连接到L ...

  9. [第六篇]——云服务器之Spring Cloud直播商城 b2b2c电子商务技术总结

    云服务器 云服务器(Elastic Compute Service, ECS)是一种简单高效.安全可靠.处理能力可弹性伸缩的计算服务. 云服务器管理方式比物理服务器更简单高效,我们无需提前购买昂贵的硬 ...

  10. 珠峰2016,第9期 vue.js 笔记部份

    在珠峰参加培训好年了,笔记原是记在本子上,现在也经不需要看了,搬家不想带上书和本了,所以把笔记整理下,存在博客中,也顺便复习一下 安装vue.js 因为方便打包和环境依赖,所以建意npm  init  ...