13Arhangel
@13Arhangel
тыжпрограммист :)

Как организовать logrotate .pcаp файлов tcpdump-a?

Доброе время суток. Подскажите как сделать правильно ротацию 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"

Собственно как все это по человечески сделать?
  • Вопрос задан
  • 381 просмотр
Пригласить эксперта
Ответы на вопрос 1
13Arhangel
@13Arhangel Автор вопроса
тыжпрограммист :)
Кажется то чтото было с tcpdump-ом. Пересмотрел конфиги, перезапустил сервисы: то файлы создаются как нужно и открываются. :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы