Доброе время суток. Подскажите как сделать правильно ротацию pcap файлов. Кажется уже перепробовал все варианты в конфиг-файлах. но не выходит так как хочется.
А хочется так:
1) tcpdump сутками напролет записывает логи, желательно разбивать по часово, чтобы было удобнее разбирать текущий инцидент
2) за сегодня и вчера можно не архивировать файлы .pcap
3) а количество архивов нужно за последние 7 дней
С 1 и 2 все вышло хорошо. tcpdump -G 3600 -w /faile.pcap и logrotate с daily, compress справились на ура.
Но с 3 почемуто logrotate rotate не справился. И не понял почему :(
Centos7x64
/etc/systemd/system/tcpdumpd.service[Unit]
After=network.target
[Service]
Restart=always
RestartSec=30
Environment="TCPDUMP_FORMAT=%%Y-%%m-%%d__%%H-%%M"
ExecStartPre=/bin/mkdir -p /var/log/tcpdumpd/
ExecStart=/sbin/tcpdump -nqU -s 0 -A -i eth0 port 5060 or port 5160 -G 3600 -w '/var/log/tcpdumpd/sipdump_${TCPDUMP_FORMAT}.pcap'
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
/etc/logrotate.d/tcpdumpd/var/log/tcpdumpd/*.pcap {
daily
missingok
rotate 48
compress
ifempty
nocreate
}
с такой конфигурацией вышел список файлов:
spoiler~~ Тут примерно 800 файлов .gz т.е. не удалился во время ротации ни один файл
-rw-r--r-- 1 tcpdump tcpdump 268692 Jul 4 20:00 sipdump_2018-07-04__19-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 269453 Jul 4 21:00 sipdump_2018-07-04__20-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 1824929 Jul 4 22:00 sipdump_2018-07-04__21-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 258716 Jul 4 23:00 sipdump_2018-07-04__22-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 255119 Jul 4 23:59 sipdump_2018-07-04__23-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 257657 Jul 5 00:59 sipdump_2018-07-05__00-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 259304 Jul 5 01:59 sipdump_2018-07-05__01-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 302674 Jul 5 03:00 sipdump_2018-07-05__02-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 331481 Jul 5 04:00 sipdump_2018-07-05__03-00.pcap-20180706.gz
-rw-r--r-- 1 tcpdump tcpdump 2565612 Jul 5 05:00 sipdump_2018-07-05__04-00.pcap
-rw-r--r-- 1 tcpdump tcpdump 2465601 Jul 5 06:00 sipdump_2018-07-05__05-00.pcap
-rw-r--r-- 1 tcpdump tcpdump 2429670 Jul 5 07:00 sipdump_2018-07-05__06-00.pcap
-rw-r--r-- 1 tcpdump tcpdump 2414568 Jul 5 08:00 sipdump_2018-07-05__07-00.pcap
-rw-r--r-- 1 tcpdump tcpdump 2579105 Jul 5 09:00 sipdump_2018-07-05__08-00.pcap
-rw-r--r-- 1 tcpdump tcpdump 2788131 Jul 5 10:00 sipdump_2018-07-05__09-00.pcap
~~
Появилось подозрение что logrotate считает каждый файл sipdump_${TCPDUMP_FORMAT}.pcap новым, и соответственно создает только один архив .gz
Сменил /etc/systemd/system/tcpdumpd.service
spoiler[Unit]
After=network.target
[Service]
Restart=always
RestartSec=30
ExecStartPre=/bin/mkdir -p /var/log/tcpdumpd/
ExecStart=/sbin/tcpdump -nqU -s 0 -A -i eth0 port 5060 or port 5160 -G <b>86400 </b> -w '/var/log/tcpdumpd/<b>sipdump.pcap'</b>
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
И сменил опции logrotate /etc/logrotate.d/tcpdumpd
spoiler/var/log/tcpdumpd/*.pcap {
hourly
start 0
missingok
rotate 3
compress
shred
shredcycles 3
copytruncate
dateext
dateformat -%Y-%m-%d__%H-00
}
И теперь сам файл sipdump.pcap записывается, logrotate ротирует файл и остаются 3 архива, но при просмотре pcap файла получаю ошибку "Couldn't open pcap file sipdump.pcap-2018-07-07__15-00: unknown file format"
Собственно как все это по человечески сделать?