Какой Serilog поглощает для отправки в Logstash?

Мы начали использовать Serilog в сочетании с Elasticsearch, и это очень эффективный способ хранения данных журнала структуры (а затем визуализировать их с помощью таких инструментов, как Kibana). Однако я вижу преимущество не записывать данные журнала непосредственно в бэкэнд, а вместо этого настраивать брокер журналов, например Logstash, который может взять на себя ответственность за добавление тегов для регистрации сообщений, выбора индексов и т.д. С помощью этих приложений настройки не требуется знание распределения данных журнала.

С помощью Logstash в середине вопрос заключается в том, как лучше использовать Serilog, поэтому Logstash может импортировать свои данные без применения передовых и мощных фильтров. Я видел, как Redis упоминается как хороший компаньон для Logstash, но у Serilog нет раковины Redis. Любые рекомендации для Serilog о том, какие данные могут быть легко перенесены Logstash в индекс Elasticsearch?

Существует даже подход к использованию утилиты Elasticsearch, а затем завершайте его снова в Elasticsearch после некоторых аранжировок и применения дополнительных тегов.

Ответы

Ответ 1

Я получил предложение от Николаса Блумхардта (создателя Serilog) использовать RollingFileSink с JsonFormatter.

Ответ 2

Принятый ответ был написан до раковины Serilog.Sinks.Http.

Вместо того, чтобы регистрироваться в файле и Filebeat отслеживать его, можно было бы регистрировать события протокола отправки HTTP в Logstash HTTP-входной плагин. Это означало бы меньшее количество движущихся частей в случаях, где создавались журналы.

Ответ 3

Я создал приемник для Serilog, который поддерживает RabbitMQ, который очень хорошо связан с logstash, используя logstash rabbitmq input-plugin:

https://www.nuget.org/packages/Serilog.Sinks.RabbitMQ

Если вы запускаете экземпляр RabbitMQ на своем сервере приложений, вы можете войти с Serilog в этот экземпляр RabbitMQ, используя RabbitMQSink, в конечном счете, минуя сценарии сегрегации/отключения сети.

Logstash затем заберет сообщения в очереди, когда сеть будет восстановлена.

Обновление: Мойка теперь в V2.0 и поддерживает ASP.NET Core 1.0

Ответ 4

Возможно, самый актуальный ответ будет:

Используйте раковину ElasticSearch.

Он включает режим долговечности, поэтому журналы не теряются, если приложение находится в автономном режиме.