
4.7 高级日志配置
问题
如何集中管理所有服务的日志?
解决方案
当使用微服务架构和Kubernetes时,日志是一个重要的考虑因素,因为每个服务都有单独的日志输出。但作为开发者或操作者,你可能希望将所有的日志集中到一个地方,这样就可以将日志作为一个整体来使用。
Quarkus日志也支持JSON和GELF输出。
这些日志可以以JSON格式而不是纯文本的形式写入日志处理程序中——通过注册logging-json扩展来实现:
使用GELF扩展来生成GELF格式的日志,并使用TCP或UDP发送日志。
现在使用Graylog扩展日志格式(GELF)的三个集中式的日志系统是:
·Graylog(MongoDB、Elasticsearch、Graylog)
·ELK(Elasticsearch、Logstash、Kibana)
·EFK(Elasticsearch、Fluentd、Kibana)
要以GELF格式进行日志记录,需要添加logging-gelf扩展:
因为示例代码不变,所以使用的是相同的访问路径:
❶创建logger实例
❷子路径设置为/log
❸打印一条info级别的日志
GELF处理系统必须在application.properties中显式配置:
❶启用GELF扩展
❷设置发送日志的地址
❸端点端口设置
如果使用Logstash(ELK),你需要启用能处理GELF格式的输入插件:
如果使用Fluentd(EFK),你需要启用能处理GELF格式的输入插件:
讨论
Quarkus日志默认支持syslog格式,无须添加任何扩展。syslog格式的日志配置(在Fluentd中使用)可以用来替代上面的GELF格式的配置(在Quarkus中使用):
在Fluentd中,你需要启用能够处理syslog格式的输入插件:
如果你使用的是Kubernetes,最简单的方法是登录到控制台,并在集群中安装一个收集所有日志的中央日志管理器。
另见
要了解关于高级日志主题的更多信息,请访问以下网站:
·Logstash/Gelf Loggers(https://oreil.ly/Mj9Ha)