Загрузка logstash из веб-приложения Azure. Как?

У меня есть веб-приложение, размещенное на платформе Azure, и стек ELK, размещенный на виртуальной машине, также в лазурном (та же подписка), и я изо всех сил пытаюсь найти способ отправить журналы из приложения в logstash.

Веб-приложение хранит все свои файлы в хранилище, доступном только через FTP, для которого logstash не имеет подключаемого модуля ввода.

Что люди используют для отправки журналов в ELK из веб-приложений? Если бы он работал как виртуальная машина, я бы использовал NXlog, но это невозможно для веб-приложения.

Я также использую Log4Net и пробовал перенаправитель UDP, который работал с моим локальным стеком ELK, но не с размещенным в лазурном стеке, несмотря на то, что я добавил общедоступную конечную точку UDP.


person Sheff    schedule 17.11.2015    source источник
comment
Веб-приложение хранит все свои файлы в хранилище, доступном только через FTP - это неправда. Веб-приложения не ограничиваются использованием своего локального хранилища. Они прекрасно работают с хранилищем Azure (например, с большими двоичными объектами), файловой службой Azure, базами данных и т. Д.   -  person David Makogon    schedule 17.11.2015
comment
@DavidMakogon - Это правда. Я рассматривал хранилище BLOB-объектов как вариант, но не очевидно, как получить журналы сервера и файлы log4net для сохранения в них. Мне интересно, сделал ли кто-нибудь это и настроил ли logstash для использования хранилища BLOB-объектов в качестве входного канала?   -  person Sheff    schedule 18.11.2015


Ответы (2)


В настоящее время я использую Serilog, чтобы отправлять сообщения журнала моего приложения (в пакетном режиме) на очередь Redis, которая, в свою очередь, читается от Logstash, чтобы обогатить их и отправить в Elasticsearch. Это приводит к надежной распределенной настройке, которая не теряет журналы приложений, если не превышена максимальная длина очереди redis. Добавлен бонус; Serilog испускает json, поэтому ваша конфигурация logstash может оставаться довольно простой. Пример кода можно найти здесь: https://gist.github.com/crunchie84/bcd6f7a8168b345a53ff

person Mark van Straten    schedule 03.12.2015
comment
Привет, Марк, почему бы вам не передать журнал Serilog напрямую в Elasticsearch? От Serilog до Redis, от Logstash до ES выглядят сложными. проверьте этот git: github.com/serilog/serilog-sinks-elasticsearch - person Chan; 15.09.2017
comment
это был вопрос развязки; На лазурном сервере был размещен Redis, и он очень быстро принимает данные. elasticsearch не был размещенным решением, и, поскольку он должен обрабатывать отправленный json, может стать узким местом, потенциально влияющим на приложение для создания журналов - person Mark van Straten; 15.09.2017

У Azure теперь есть проект на GitHub под названием azure-Diagnostics-tools, который содержит плагины LogStash для чтения. из хранилища BLOB-объектов и таблиц, среди прочего.

Предположительно, вы можете просто включить ведение журнала диагностики в хранилище BLOB-объектов / таблиц для своего WebApp и использовать плагин LogStash, чтобы перенести их в ElasticSearch.

Что касается того, как получить файлы log4net в хранилище BLOB-объектов - вы можете использовать log4net.Appender.TraceAppender для записи в систему Trace, что приведет к их накоплению в хранилище BLOB-объектов / таблиц, когда этот параметр включен в WebApp.

Также существует альтернатива FTP для локальных файлов - вы можете использовать Kudu REST VFS API для доступа (и изменения) файлов по HTTP. Я обнаружил, что это значительно быстрее и надежнее, чем FTP.

person makhdumi    schedule 10.05.2016
comment
В итоге я рассказал, как это делает Марк, но использовал Serilog для прямого экспорта в Elasticsearch. Библиотеки Azure Ruby незрелые, и чтение из хранилища Azure плохо масштабируется. - person makhdumi; 06.04.2017