12Factor App: захват логов stdout/stderr с помощью Fluentd
Читая следующий пост от 12factor, я задал вопрос, который я хотел бы проверить, как вы, ребята, справляетесь с этим.
По сути, приложение должно писать напрямую в stdout / stderr. Есть ли способ перенаправить эти потоки напрямую на fluentd (не привязанный к rsyslog/syslog)? По мере того, как я становлюсь более осведомленным о fluentd, я считаю, что это был бы отличный инструмент для агрегирования журналов из нескольких приложений / платформ.
Основная причина этого заключается в том, что если приложение является кроссплатформенным, rsyslog / syslog может быть недоступен, и, как я понимаю, использование каркасов журналирования (для работы которых требуется требуемая конфигурация) было бы нарушением фактора 12.
Спасибо!
2 ответа
Вам необходимо настроить диспетчер процессов на использование fluentd.
По сути, идея заключается в том, что перенаправление журналов является задачей менеджера процессов. Upstart, например, обычно полагается на регистратор, который имеет опцию (-u
) для записи в Unix Domain Socket. В свою очередь, вы можете настроить fluentd для использования того же сокета в качестве входного потока.
Fluentd поддерживает множество входных потоков (они называют их источниками данных), которые должны предоставить решение практически для любой среды и менеджера процессов, которые вы можете использовать (что нам необходимо знать, чтобы предоставить более полное решение).
Это все еще экспериментальная программа, но вы можете взглянуть на stdout-hook.
Эта программа читает выходные данные STDOUT дочернего процесса и публикует записи во Fluentd.