docker - 收集 kubernetes 的 pods 日志

标签 docker logging kubernetes fluentd

我正在尝试在整个生命周期中收集我的应用程序容器的日志。这些容器在 Kubernetes pod 中运行,我找到了 Fluentd 之类的解决方案,但我也发现我需要指定后端(Elasticsearch、AWS S3 等),而我想收集具有特定名称的文件中的日志,例如podname_namespace_containername.json 然后使用脚本解析这些文件。这可以用 fluentd 实现吗?

最佳答案

到目前为止,设置日志收集的最快方法是 https://github.com/helm/charts/tree/master/stable/fluent-bit .引用 values.yaml对于所有可用选项。它支持多个后端,如 ES、S3、Kafka。每个日志事件都包含 pod 元数据(pod 名称、命名空间等)并进行了标记,以便您可以在后端单独组织处理。例如。在后端,您只能选择和解析特定命名空间中的特定 pod。
根据 https://kubernetes.io/docs/concepts/cluster-administration/logging/您登录到 stdout/stderr,它被写入底层节点,日志收集器(daemonset)收集所有内容并进一步发送。
enter image description here
Kubernetes 中的 FluentBit daemonset 正是实现了这种架构。更多关于 FluentBit 的文档:https://docs.fluentbit.io/manual/concepts/data-pipeline

关于docker - 收集 kubernetes 的 pods 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63915748/

相关文章:

c# - ASP.NET Core错误:System.TypeLoadException:无法加载类型 'Microsoft.AspNetCore.WebUtilities.FileBufferingWriteStream'

java - 大量的异常日志记录会导致 java.lang.OutOfMemoryError : GC overhead limit exceeded

docker - Windows 10 上出现 "Kubernetes is starting ....."永久错误

amazon-web-services - 适用于kubernetes仪表板的AWS Ubuntu 16.04中的UI

mysql - 获取 SequelizeConnectionRefusedError : when running docker with sequelize

django - 无法在 django 应用程序中使用 docker 运行 celery 和 celerybeat(无法加载 celery 应用程序)

ubuntu - Docker 无法运行

amazon-web-services - 在哪里可以找到 AWS Amplify Logger 日志

node.js - 将标准输出重定向到文件 nodejs

ssl - 为什么需要将客户端的私钥提供给etcd服务器