Redis-traffic-stats的使用方法和tcpdump的回顾

Redis流量统计

    • Redisのクエリーアナライザー “redis-traffic-stats” を書きました

 

    • http://d.hatena.ne.jp/hirose31/20140227/1393470729

 

    • redis-traffic-stats

 

    https://github.com/hirose31/redis-traffic-stats

可以通过键和命令来了解发布数量以及数据的总传输量。
与Redis-faina相比,可知道传输量,这是重点。
由于没有监视器的退化,因此非常适合轻松收集日常数据。

基本 – Ji Ben (Basic)

在连接到redis的客户端上执行。通过-p选项指定的端口是目标端口(默认为6379)。

# tcpdumpを直接行ったあと分析
## 30秒間
./redis-traffic-stats -t 30 -p 6379
## 1000パケット
./redis-traffic-stats -c 1000 -p 6379

# 別途実行したtcpdumpのpcapファイルを分析
redis-traffic-stats -r output.pcap -p 6379

在对pcap文件进行分析时,指定端口号是必需的。
※(附加说明)我原本认为在redis上无法做到,但实际上是可以做到的。

错误 (pinyin:

## Summary
* Duration:
    * 2038-01-19 12:14:08 - 1970-01-01 09:00:00 (1s)
* Total Traffic:
    * 0 bytes (0.00 bytes/sec)
* Total Requests:
    * 0 requests (Avg 0.00 req/sec, Peak 0.00 req/sec)

无论是直接读取文件还是其他情况,在分析数据显示为空的情况下,可能是tcpdump的选项或指定的分析端口号有误(在流中不存在redis数据包)。

抓包

直接获取tcpdump并进行分析会更方便,这样可以进行详细的分析。

    • X分ごとに分析

 

    複数のredisをport番号で使い分けている場合

在后一种情况下,只需分别对每个端口进行多次分析,即可分析包含多个端口数据的单个pcap文件。数据只需获取一次即可。

# 基本
tcpdump -s 65535 tcp port 6379 -w redis.pcap -i eth0
## 1000パケット
tcpdump -s 65535 tcp port 6379 -w redis.pcap -i eth0 -c 1000

# portrangeオプション
tcpdump -s 65535 tcp portrange 6379-6380 -w redis.pcap -i eth0 -c 1000

# 想定ホスト同士の通信に絞る等
tcpdump -s 65535 "tcp port 6379 and (src and dst net 192.168.0.0/16)" -w redis.pcap -i eth0 -c 1000

每隔一段时间执行dump/指定次数进行rotate(-G/-W)。

# 60秒 * 5回 rotateし、%Y%m%d-%H%M形式で保存。
tcpdump -s 65535 tcp port 6379 -w redis.pcap -i eth0 -G 60 -W 5 -w redis_%Y%m%d-%H%M.pcap 

如果rotate后的文件保存位置不是tmp,则可能会出现写入权限问题。您可以将777或tcpdump用户设置为可写入,或使用-Z选项指定root用户。

# 書き込み時のユーザーをrootにする(権限を降格しない)
tcpdump -Z root -s 65535 tcp port 6379 -w redis.pcap -i eth0 -G 60 -W 5 -w redis_%Y%m%d-%H%M.pcap 

执行 postrotate 命令 (-z)

虽然它原本是用于压缩的选项,但也可以用于传递给包括redis-traffic-stats脚本在内的脚本。

# 圧縮
tcpdump -s 65535 tcp 6379 -i bond0 -G 60 -W 5 -w redis_%Y%m%d-%H%M.pcap -z gzip

# 指定コマンドへ引き渡し
tcpdump -Z root -s 65535 tcp 6379 -i bond0 -G 60 -W 5 -w redis_%Y%m%d-%H%M.pcap -z /usr/local/bin/redis-analyse.sh

当执行该命令的用户也会继承-Z选项。

合并分割的dump文件(使用mergecap)

可以将通过旋转分割并保存的pcap文件合并后再进行重新分析。

# install
yum install wireshark

# 結合
mergecap -F modlibpcap -w output.pcap in_cap1.pcap in_cap2.pcap in_cap3.pcap...

如果想要使用redis-traffic-stats进行分析,请将输出格式指定为modlibpcap。

使用tcpdump来捕获Redis流量数据统计。

运用时的备忘录 shí de

    • tcpdumpでrotateする場合、条件に該当するpacketが発生していないとrotateのタイミングが想定通りにならないことがある。

 

    • 複数のclient host上から取得したpcapデータをすべてmergecapして分析することも可能。

 

    • redis-traffic-statsのslowコマンド実行時間はpcapからの値なので、アプリがauth->set->get->quitなどを一つのセッションで行う場合合計値が表示される。

 

    実際に問題のあるクエリを解析する場面ではmonitorログでkeyと突き合わせる等の確認が必要。同じ時間帯でredis-traffic-stats/monitorそれぞれデータを取得し、redis-fainaと適宜使い分ければよい

请参考以下链接

    • tcpdump コマンドの使いかたをまとめてみた

 

    • http://blog.livedoor.jp/sonots/archives/18239717.html

 

    • tcpdumpについて知らない可能性のあるトップ10

 

    http://uni-id.nri.co.jp/ncsirt/2010/0609.html
广告
将在 10 秒后关闭
bannerAds