Требуется создать отказоустойчивую систему логирования. Логи будут писаться в формате JSON. В планах писать отправлять логи в logstash. Напрямую гнать их туда не вариант. По TCP очередь может забиться, по UDP можем что-то потерять.
Отсюда два варианта:
1. Писать все в файл и потом делать сервис который будет перегонять из файла в logstash
2. Писать все в syslog и потом как-то пробрасывать в logstash
Однако я не вижу для себя плюсов\минусов первого и второго подходов. Что скажете?
Да может. А поясни, какой объем памяти может "забить" исходящий буфер? А входящий? При какой полосе пропускания? При каких условиях вообще происходит троттлинг отправки или приема? Ты супер-надежные логи мегабайтами с чайника по зигби слать решил?
по UDP можем что-то потерять
Можем. Механизм гарантии доставки не встроен в протокол и отдан разработчику на откуп. А очередь у UDP уже не может забиться, выходит? При каких условиях происходит потеря пакета? При каких условиях происходит нарушение очередности? При каких условиях начинается traffic shaping?
Это все риторические вопросы, призванные подумать еще раз о необъятной глубине твоих заблуждений. На базе UDP довольно легко делается механизм компенсации потерь. Гленн Фидлер (умный дядька, к нему стоит прислушаться) об этом написал с десяток статей уже.
Ты бы хоть формат своего json-а написал бы, чтобы можно было узнать, насколько он раздут/перегружен или оптимален. Хотя, вообще использовать для этого json, когда тебе нужна надежность, скорость и полоса пропускания - это лютый зашквар. Тут уж или json, или скорость, надежность и полоса пропускания.