У меня в системе syslog-ng отправляет сообщения, полученные на порту syslog в pipe, а из pipe их читает скрипт, производящий дальнейшую обработку.
Всё работает хорошо, но иногда на сервер падает пачка сообщений, которая не помещается в pipe и часть теряется. В целом, ничего страшного в этом нет, но хотелось бы знать о таких моментах. Самое простое, что приходит на ум - нумеровать все сообщения при размещении в pipe и в скрипте проверять, нет ли в последовательности дыр.
Однако, не понятно как это реализовать. Есть макрос ${RCPTID}, который нумерует сообщения. Но проблема в том, что он нумерует их для всех источников в системе, обрабатываемых syslog-ng. Т.е. в номерах образуются дыры: 456, 473, 489 и т.д.
Вопрос: можно ли внедрить монотонно возрастающий (до рестарта сервиса) счётчик сообщений для конкретно destination или заставить ${RCPID} считать только в пределах destination?
Макросы в template вроде получается использовать и даже доставать переменные. Не разобрался как инкрементировать переменные при поступлении пакета.