需要设置自定义 Kubernetes 日志记录策略
Need to setup a Customized Kubernetes Logging strategy
到目前为止,在我们将 Web 服务部署到 VM 集群的过程中,我们一直在有效地使用基于 Log4j2 的多文件登录到持久卷,日志文件每天都在其中滚动。我们需要维护日志大约 3 个月,然后才能清除它们。
我们正在迁移到 Kubernetes 基础设施,并且一直在努力寻找适应 Kubernetes 集群的最佳日志记录策略。我们不太喜欢将所有日志吐出到 STDOUT/ERROUT 并使用像 Datadog 这样的集中式工具来管理日志的策略。
我们对 Kubernetes 日志记录解决方案的设计要求是:
- 将 Lo4j2 用于多个文件附加程序。
- 我们要维护多文件日志追加器结构。
- 我们希望在存档中保留滚动日志大约 3 个月
- 需要一种方法来轻松访问日志以进行搜索、过滤等
- 用于查看日志的 Kubectrl 设置对于我们的需求来说可能有点太麻烦了。
- 理想情况下,我们希望使用 Datadog 仪表板方法,但使用多文件附加程序。
- 我们 运行 使用的 Datadog 的严重限制是需要将所有内容都输出到 STDOUT。
开始使用容器平台或构建容器意味着作为第一步,我们必须改变我们的思维方式。在容器中创建日志文件不是最佳做法,原因有二:
- 您的容器应该是无状态的,因此不应在其中保存任何内容,因为当它被删除并再次创建时,您的文件将消失。
- 当您使用被动日志记录 (STDOUT/STDERR) 发送输出时,Kubernetes 会为您创建日志文件,fluentd 或 logstash 等平台可以使用此文件来收集这些日志并将其发送到日志聚合工具。
我推荐使用 Passive Logging,这是 Kubernetes 推荐的方式,也是云原生应用程序的标准,也许将来你需要在云服务中使用你的应用程序,它也使用 Passive Logging 来检查应用程序错误
在以下链接中,您将看到一些关于为什么 k8s 推荐使用 Passive Logging 的参考资料:
到目前为止,在我们将 Web 服务部署到 VM 集群的过程中,我们一直在有效地使用基于 Log4j2 的多文件登录到持久卷,日志文件每天都在其中滚动。我们需要维护日志大约 3 个月,然后才能清除它们。
我们正在迁移到 Kubernetes 基础设施,并且一直在努力寻找适应 Kubernetes 集群的最佳日志记录策略。我们不太喜欢将所有日志吐出到 STDOUT/ERROUT 并使用像 Datadog 这样的集中式工具来管理日志的策略。
我们对 Kubernetes 日志记录解决方案的设计要求是:
- 将 Lo4j2 用于多个文件附加程序。
- 我们要维护多文件日志追加器结构。
- 我们希望在存档中保留滚动日志大约 3 个月
- 需要一种方法来轻松访问日志以进行搜索、过滤等
- 用于查看日志的 Kubectrl 设置对于我们的需求来说可能有点太麻烦了。
- 理想情况下,我们希望使用 Datadog 仪表板方法,但使用多文件附加程序。
- 我们 运行 使用的 Datadog 的严重限制是需要将所有内容都输出到 STDOUT。
开始使用容器平台或构建容器意味着作为第一步,我们必须改变我们的思维方式。在容器中创建日志文件不是最佳做法,原因有二:
- 您的容器应该是无状态的,因此不应在其中保存任何内容,因为当它被删除并再次创建时,您的文件将消失。
- 当您使用被动日志记录 (STDOUT/STDERR) 发送输出时,Kubernetes 会为您创建日志文件,fluentd 或 logstash 等平台可以使用此文件来收集这些日志并将其发送到日志聚合工具。
我推荐使用 Passive Logging,这是 Kubernetes 推荐的方式,也是云原生应用程序的标准,也许将来你需要在云服务中使用你的应用程序,它也使用 Passive Logging 来检查应用程序错误
在以下链接中,您将看到一些关于为什么 k8s 推荐使用 Passive Logging 的参考资料: