日志收集架构

cluster-level-logging:日志独立于节点、Pod 或容器的生命周期,即完全独立于 Kubernetes 系统,需要自己提供单独的日志后端系统、分析和查询工具。

[TOC]

日志收集

  • 在节点上运行一个 agent 来收集日志

  • 在 Pod 中包含一个 sidecar 容器来收集应用日志

  • 直接在应用程序中将日志信息推送到采集后端

节点日志收集

node agent

每个节点运行一个 Agent 采集日志数据。

  1. 使用 DaemonSet 控制器控制,在每个 Node 上部署。

  2. 只适用于收集输出到 stdout 和 stderr 的日志。

以 sidecar 收集日志

sidecar agent

日志是输出到容器中的日志文件。

  1. 在 Pod 中启动另外一个 sidecar 容器,将应用程序的日志通过这个容器重新输出到 stdout。

    • 存储两份日志,占用磁盘空间

  2. 在 Pod 中启动一个 Agent 容器。

    • 导致资源消耗

    • 不受 kubectl logs 控制

直接从应用程序收集

log from app

在应用程序中显示的将日志推送到日志后端,但是这种方式需要代码层面的实现。

Last updated

Was this helpful?