目 录CONTENT

文章目录

k8s | 日志收集 Filebeat

如风
2023-07-20 / 0 评论 / 0 点赞 / 33 阅读 / 1,232 字

k8s | 日志收集 Filebeat

在Kubernetes集群中,有大量的容器运行在不同的节点上,这些容器产生的日志信息非常重要,它们可以帮助我们了解应用程序的运行状态、故障排查、性能优化等。因此,有效的日志收集系统在Kubernetes中至关重要。

日志类型

  1. 容器日志: 容器的启动日志、应用程序输出日志和错误日志
  2. Kubernetes 系统组件日志: 组件的启动日志、操作日志和错误日志
  3. Fluentd 日志: 收集到的日志数据和发送到目标的日志数据等
  4. Sidecar 容器日志:主容器的日志数据和 Sidecar 容器自身的日志数据等
  5. Init 容器日志:初始化任务的日志数据和主容器的启动日志等
  6. 系统日志:节点的运行情况、硬件故障、网络问题等信息

日志系统架构

img

Fluentd

Fluentd是一个开源的日志收集器,它能够从不同的数据源(如应用程序日志、系统日志、文件、TCP等)收集日志,并将日志发送到指定的目标位置,如文件、数据库、消息队列等。Fluentd在Kubernetes中被广泛使用,它可以通过DaemonSet部署在每个节点上,收集节点和容器的日志,并将其转发到中央的日志存储或分析平台。

Filebeat

Filebeat是Elastic公司开源的一个轻量级日志收集工具,专门用于收集日志文件并将其发送到Elasticsearch或Logstash进行存储和分析。Filebeat在Kubernetes中通常用于收集容器的日志,它可以作为一个Sidecar容器部署在每个Pod中,监控容器的日志文件,并将其发送到指定的目标

Fluentd和Filebeat 对比

都是Kubernetes中常用的日志收集工具,它们都能够收集和转发日志数据,但Fluentd更为灵活和功能强大,适用于更复杂的场景,而Filebeat更轻量级,适用于对资源有限制的场景

工作原理

  1. 配置:Filebeat通过配置文件指定要收集的日志文件的路径和目标输出。
  2. 收集:Filebeat启动后,它将持续监视指定路径下的日志文件,并通过内置的Prospector组件来读取文件内容。
  3. 解析:Filebeat支持多种输入格式,它可以解析各种结构化或非结构化的日志数据,如JSON、XML、CSV等。
  4. 发送:解析后的日志数据将被发送到指定的输出目标。Filebeat支持将日志数据直接发送到Elasticsearch或通过Logstash进行转发。

在Kubernetes中,Filebeat通常以Sidecar容器的形式部署在每个Pod中,作为主容器的附属容器运行。。Filebeat的部署方式可以保证每个Pod都有自己的日志收集器,从而实现了容器级别的日志收集。

Sidecar容器是指与主容器(应用容器)运行在同一个Pod中,并共享相同的网络和存储空间的附属容器。Sidecar容器可以提供一种灵活、解耦的方式来实现各种附加功能,从而构建出更加复杂和功能丰富的应用实例。

Filebeat在Kubernetes中的优点

  • 轻量级:Filebeat是一个轻量级的工具,对系统资源消耗较少,适合在资源受限的环境中使用。
  • 灵活性:Filebeat支持多种输入格式和输出目标,可以适应不同的日志收集需求。
  • 容器级别收集:通过将Filebeat部署为Sidecar容器,实现了对每个Pod的日志收集,确保了日志数据的完整性和隔离性。

ELK

ELK是Elasticsearch、Logstash和Kibana三个开源工具的组合,用于构建一个完整的日志存储和分析平台。Elasticsearch用于存储大量的日志数据,Logstash用于收集、处理和转发日志数据,Kibana用于可视化和查询日志数据。ELK在Kubernetes中可以与Fluentd或Filebeat结合使用,实现全面的日志收集、存储和分析。

查看日志

使用 kubectl logs 可以查看日志内容

指定 Pod 的名称和容器的名称

kubectl logs my-pod my-container

可以使用 -c 选项来指定容器的名称

kubectl logs my-pod -c my-container1

-f 参数可以查看最新的日志,-t参数可以显示时间戳

参考链接

0

评论区