MySQL、Redis、MongoDB 網(wǎng)絡(luò)抓包工具
以下內(nèi)容來自公眾號逆鋒起筆,關(guān)注每日干貨及時送達(dá)
來源:https://www.cnblogs.com/zhoujinyi/p/15343188.html
簡介
go-sniffer?可以抓包截取項(xiàng)目(MySQL、Redis、MongoDB)中的請求并解析成相應(yīng)的語句,并格式化輸出。類似于在之前的文章 MySQL抓包工具:MySQL Sniffer中介紹的mysql-sniffer。而 go-sniffer 可以對更多數(shù)據(jù)庫進(jìn)行抓包分析,現(xiàn)在來介紹在什么情況下會使用該工具的。
使用
下載:
github 地址:https://github.com/40t/go-sniffer
安裝:
安裝依賴包:
yum -y install libpcap-devel
apt-get install libpcap-dev
wget https://golang.org/dl/go1.10.3.linux-amd64.tar.gz
下載安裝
go get -v -u github.com/40t/go-sniffer cp -rf $(go env GOPATH)/bin/go-sniffer /usr/local/bin
[使用說明]
????go-sniffer?[設(shè)備名]?[插件名]?[插件參數(shù)(可選)]
????[例子]
??????????go-sniffer?en0?redis??????????抓取redis數(shù)據(jù)包
??????????go-sniffer?en0?mysql?-p?3306??抓取mysql數(shù)據(jù)包,端口3306
????go-sniffer?--[命令]
???????????????--help?幫助信息
???????????????--env??環(huán)境變量
???????????????--list?插件列表
???????????????--ver??版本信息
???????????????--dev??設(shè)備列表
????[例子]
??????????go-sniffer?--list?查看可抓取的協(xié)議
=======================================================================
[設(shè)備名]?:?lo0?:???127.0.0.1
[設(shè)備名]?:?en0?:?x:x:x:x:x5:x??192.168.1.3
[設(shè)備名]?:?utun2?:???1.1.11.1
語法:
$?go-sniffer?lo0?mysql?
$?go-sniffer?en0?redis?
$?go-sniffer?eth0?http?-p?8080
$?go-sniffer?eth1?mongodb
使用場景
一 Redis :審計(jì)、發(fā)現(xiàn)熱點(diǎn)key
關(guān)于Redis的知識點(diǎn)就不說了,主要來說明如何使用go-sniffer來抓包分析。如果想發(fā)現(xiàn)哪個key的操作比較多或則是否存在熱點(diǎn)key,在Redis4.0之前沒有什么好辦法(4.0之后的LFU可以查看hotkey),只有通過統(tǒng)計(jì)各個客戶端發(fā)來的命令進(jìn)行統(tǒng)計(jì)。雖然monitor可以看到某一刻的key操作,但是該命令消耗巨大,可能會造成客戶端緩沖區(qū)溢出。并且也沒有合適的插件來進(jìn)行實(shí)現(xiàn)。即使有的話,對Redis的性能肯定有一定的損耗,所以只有監(jiān)控其網(wǎng)絡(luò)來分析操作是對Redis服務(wù)的影響最小的。如對一個實(shí)例進(jìn)行監(jiān)控:
go-sniffer eth0 redis -p 6379 >> out.log 對通過eth0網(wǎng)卡的客戶端訪問端口為6379的Redis服務(wù)進(jìn)行抓包,并把信息寫到文件中。該文件的日志格式:
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
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
二 MySQL:審計(jì)
go-sniffer eth0 mysql -p 3306 >> out.log
三 MongoDB:審計(jì)
go-sniffer eth0 mongodb -p 27017 >> out.log
逆鋒起筆專注于程序員圈子,你不但可以學(xué)習(xí)到java、python等主流技術(shù)干貨,還可以第一時間獲悉最新技術(shù)動態(tài)、內(nèi)測資格、BAT大佬的經(jīng)驗(yàn)、精品視頻教程、副業(yè)賺錢經(jīng)驗(yàn),微信搜索readdot關(guān)注!
