我们正在运行基于Java的微服务,并且有以下情况
问题是当我们有大量日志要集中分析时,如何解决此问题。我们正在运行此应用程序的20个实例。我们在平面文件中有150GB的日志。以下是问题所在
我们正在尝试评估以下内容,
任何建议都欢迎。
编辑
我们最终在GCP上使用了自定义管道,其中应用程序将日志推送到pub / sub,而数据流则负责聚合和转换信息。
最佳答案
您可以使用运行fluentd或logstash之类的单个Sidecar。
两者都是日志提取工具,可以使用多个插件进行自定义,这使您可以一次路由到所有目的地。
对于logstash,您甚至可能想要使用filebeat。
此外,流利的似乎有一个official plugin from Google that does most of what you want。
使用DaemonSet收集主机上的日志
这是in this k8s blog post about cluster-level logging和this blog post in the fluentd blog描述的过程。
这个想法是运行一个DaemonSet(一组在集群中每个节点上运行的Pod),该容器安装容器日志文件所在的主机路径。
但是,这只会收集您的应用程序生成到stdout的日志。
要收集其他文件,可以使用here描述的技术:运行一个非常轻量级的sidecar,仅尾随日志文件。
关于logging - kubernetes中的集中式应用程序日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44780517/