Данные логов iptables можно хранить в базе данных при помощи ulogd2, а вот как удалять устаревшие данные? То есть, там данные хранятся в базе в виде нескольких связанных таблиц, их структура в целом понятна, то есть, удалить вручную в целом можно, но хотелось бы какой-то штатный способ, может он есть, а я его пропустил?
Если погуглить, то появляются советы вроде удаления данных в базе запросом типа:
DELETE FROM ulog2 WHERE timestamp < (NOW() - INTERVAL '24 hours');
При этом мешают ограничения, связанные с другими таблицами:
ERROR: update or delete on table "ulog2" violates foreign key constraint "tcp_id_fk" on table "tcp"
DETAIL: Key (_id)=(1) is still referenced from table "tcp".
Понятно, что вопрос решаемый (удалить в транзакции сначала устаревшие данные из связанных таблиц, а потом из основной), но может не стоит делать велосипед и готовое решение уже есть? Может я не вижу всей картины, и чистка базы от старых записей делается каким-либо приложением для управления ulogd2?
