滚动抓包解决什么
间歇性故障的关键难点是等它出现,这要求抓包能长时间运行而不把磁盘写满。滚动抓包的做法是让抓包程序按大小或按时间自动切分文件,并限制保留的文件数量,写满后覆盖最旧的一份,形成固定容量的环形缓冲。文件名里嵌入时间占位符后,事后可以根据故障发生时刻直接定位到对应的那个文件,不必在巨大的单一文件里翻找。
基本信息
| 适用场景 | 间歇性故障、长时间观察、留档取证 |
|---|---|
| 按大小滚动 | 每个文件到达指定兆字节数就换文件 |
| 按时间滚动 | 每经过指定秒数换文件,文件名支持时间占位符 |
| 限制数量 | 配合数量上限,超出后从头覆盖,防止写满磁盘 |
| 收尾工作 | 配合定时清理策略与磁盘监控 |
典型使用场景
- 偶发故障等待复现:长时间挂机抓包并限制占用空间
- 变更窗口观测:按时间切分,便于与变更时刻对齐
- 带宽受限环境:限制快照长度,降低单文件体积与写入压力
- 合规留档:按天切分并保留固定天数
- 跨时段分析:文件名带时间,便于按故障时间点直接取文件
滚动抓包
滚动抓包
# 每个文件 100MB,最多保留 20 个(共 2GB):
tcpdump -i eth0 -nn -s 128 -C 100 -W 20 -w /var/log/net/cap.pcap 'tcp port 443'
# 每 300 秒一个文件,文件名带时间:
tcpdump -i eth0 -nn -G 300 -w '/var/log/net/cap-%Y%m%d-%H%M%S.pcap' 'host 10.0.0.5'
# 定时清理(crontab):
find /var/log/net -name 'cap-*.pcap' -mtime +1 -delete
df -h /var/log | tail -1 # 抓包前先确认剩余空间参数与效果
| 参数 | 作用 | 注意点 |
|---|---|---|
| 按大小滚动 | 每文件到达上限就换文件 | 与快照长度配合决定单文件时长 |
| 按时间滚动 | 每经过指定秒数换文件 | 文件名需带时间占位符才便于定位 |
| 数量上限 | 限制文件总数,超出覆盖最旧 | 不加此项长期运行必然写满磁盘 |
| -s 快照长度 | 限制每包抓取字节数 | 太大显著增加占用 |
| 清理策略 | 按时间删除历史文件 | 与保留期限需求匹配 |
滚动抓包务必配合磁盘监控与数量限制:不限量抓包是生产环境常见的磁盘写满事故源。