我有一个托管在azure平台上的web应用程序和一个托管在虚拟机上的ELK堆栈,也在azure (相同的订阅)中,我正在努力寻找一种方法来将日志从应用程序发送到logstash。
web应用程序将其所有文件存储在只能通过FTP访问的存储上,而logstash没有针对该存储的输入插件。
人们使用什么将日志从web应用程序发送到ELK?如果它是作为VM运行的,我会使用NXlog,但对于Web应用程序来说这是不可能的。
我还使用了Log4Net,并尝试了一个UDP转发器,它可以在我的本地ELK栈上工作,但不能在azure托管的栈上工作,尽管我添加了公共UDP端点。
发布于 2015-12-03 22:22:23
目前,我正在使用Serilog将我的应用程序日志消息(成批地)推送到一个Redis queue,然后由Logstash读取,以丰富这些消息并将它们推送到Elasticsearch中。这将导致可靠的分布式设置,除非超过redis最大队列长度,否则不会丢失任何应用程序日志。增加了额外的好处;Serilog会发出json,因此您的logstash配置可以保持相当简单。示例代码可以在这里找到:https://gist.github.com/crunchie84/bcd6f7a8168b345a53ff
发布于 2016-05-11 02:12:25
Azure现在在GitHub上有一个名为azure-diagnostics-tools的项目,其中包含用于从blob和表存储读取数据的LogStash插件。
大概,您可以只启用诊断日志记录到您的WebApp的blob/表存储,并使用LogStash插件将其导入ElasticSearch。
关于如何将log4net文件写入blob存储-您可以使用log4net.Appender.TraceAppender写入跟踪系统,当在WebApp中启用该选项时,这将导致将其收集到Blob/表存储中。
对于本地文件,也有一种替代FTP的方法--你可以使用Kudu REST VFS API来访问(和修改)文件。我发现这比FTP要快得多,也更可靠。
https://stackoverflow.com/questions/33753981
复制相似问题