将日志文件写入慢速磁盘或将 Tomcat 访问日志发送到 ElasticSearch?
Write Logfiles to Slow Disk or sending Tomcat Access Logs to ElasticSearch?
- 我的服务 (tomcat/java) 运行 在 kubernetes 集群 (AKS) 上。
- 我想将日志文件(tomcat 访问日志、带有 logback 的应用程序日志)写入 AzureFile 卷。
- 我不想将访问日志写入标准输出,因为我不想将访问日志与应用程序日志混合。
问题
我希望所有日志记录都是异步完成的,因此写入缓慢的 AzureFile 卷应该不会影响性能。
这是正确的吗?
更新
最后我想收集日志文件,以便我可以将所有日志发送到 ElasticSearch。
特别是我需要一种收集访问日志的方法。
是的,你是对的,但仍然在这里取决于你如何编写日志。如果你正在编写异步的长进程,那么你的文件系统就会很慢。如果是 NFS 还有可能出现网络延迟等问题
如果将 NFS 和存储桶卷直接附加到多个 PODs。
,我已经看到性能问题
如果您的编写速度很慢,异步线程可能需要一些时间才能完成工作并占用更多资源,但这仍然取决于代码和编写代码的方式。
理想情况下,人们使用存储在 Elasticsearch 中以便于快速检索和管理。
人们根据需求使用不同的技术栈,但大多数都由 Elasticsearch 支持,例如 Graylog、ELK。
为了向这些堆栈发送或写入日志,人们使用 UDP,我个人更喜欢 GELF UDP,并在 Graylog 上抛出日志并忘记。
如果您想将访问日志发送到 Elastic Search,只需扩展 AbstractAccessLogValve
并实现 log
方法即可。
AbstractAccessLogValve
已经包含格式化消息的逻辑,因此您只需添加发送格式化消息的逻辑。
- 我的服务 (tomcat/java) 运行 在 kubernetes 集群 (AKS) 上。
- 我想将日志文件(tomcat 访问日志、带有 logback 的应用程序日志)写入 AzureFile 卷。
- 我不想将访问日志写入标准输出,因为我不想将访问日志与应用程序日志混合。
问题
我希望所有日志记录都是异步完成的,因此写入缓慢的 AzureFile 卷应该不会影响性能。 这是正确的吗?
更新
最后我想收集日志文件,以便我可以将所有日志发送到 ElasticSearch。
特别是我需要一种收集访问日志的方法。
是的,你是对的,但仍然在这里取决于你如何编写日志。如果你正在编写异步的长进程,那么你的文件系统就会很慢。如果是 NFS 还有可能出现网络延迟等问题
如果将 NFS 和存储桶卷直接附加到多个 PODs。
,我已经看到性能问题如果您的编写速度很慢,异步线程可能需要一些时间才能完成工作并占用更多资源,但这仍然取决于代码和编写代码的方式。
理想情况下,人们使用存储在 Elasticsearch 中以便于快速检索和管理。
人们根据需求使用不同的技术栈,但大多数都由 Elasticsearch 支持,例如 Graylog、ELK。
为了向这些堆栈发送或写入日志,人们使用 UDP,我个人更喜欢 GELF UDP,并在 Graylog 上抛出日志并忘记。
如果您想将访问日志发送到 Elastic Search,只需扩展 AbstractAccessLogValve
并实现 log
方法即可。
AbstractAccessLogValve
已经包含格式化消息的逻辑,因此您只需添加发送格式化消息的逻辑。