我正在尝试在整个生命周期中收集我的应用程序容器的日志。这些容器在 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)收集所有内容并进一步发送。
Kubernetes 中的 FluentBit daemonset 正是实现了这种架构。更多关于 FluentBit 的文档:https://docs.fluentbit.io/manual/concepts/data-pipeline
关于docker - 收集 kubernetes 的 pods 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63915748/