加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

java – 从一个在docker容器中运行的JVM应用程序将日志发送到gr

发布时间:2020-12-16 03:35:04 所属栏目:安全 来源:网络整理
导读:我正在使用graylog作为中央日志服务器,我正在使用gelf log4j2-appender将日志消息发送到graylog.这很好用.现在我创建了我的应用程序的docker镜像,我可以将我的软件作为docker容器运行. 使用docker我还会登录到stdout(console-appender)以将应用程序日志导入d

我正在使用graylog作为中央日志服务器,我正在使用gelf log4j2-appender将日志消息发送到graylog.这很好用.现在我创建了我的应用程序的docker镜像,我可以将我的软件作为docker容器运行.

使用docker我还会登录到stdout(console-appender)以将应用程序日志导入docker(docker logs {containerId}).

现在我问自己,我可以在gelf log4j2-appender上使用,而是使用一个docker日志驱动程序/插件来支持gelf. (见https://docs.docker.com/engine/admin/logging/overview/)

这里的最佳做法是什么?我认为使用docker log插件会将整个字符串消息发送到graylog,而graylog需要从该字符串中提取元信息(因此我需要在日志消息中提供此元数据,例如log_level).这可能会导致graylog端的资源消耗更多,并且也无法将docker配置为仅向graylog发送错误消息.这会导致更多的网络流量.使用log4j2 gelf-appender我能够提供日志消息之外的一些元数据,而不将其包含在主日志消息中,并且在graylog端不需要提取.也可以通过log_level配置应该将哪些消息发送到graylog.还是我错了?什么是最佳解决方案或每种方式将日志发送到graylog的优缺点是什么?

最佳答案
我建议将现有的GELF appender用于您正在使用的日志框架(例如logstash-gelf),而不是将所有内容记录到stdout并使用Docker的GELF日志记录驱动程序.

使用具有本机Java日志记录框架的正确GELF appender,您可以使用MDC之类的高级功能,使用有价值的结构化信息丰富日志消息,而无需在服务器端接收这些消息后重新解析这些消息.使用Docker GELF日志记录驱动程序,您只能接收每行一行的日志消息,尤其是Java应用程序可能很难处理(想想多行堆栈跟踪).

大多数日志记录框架都支持静态字段,因此您可以“注入”Docker容器的ID.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读