Flows 和 ClusterFlows

有关如何配置 FlowClusterFlow 的完整详细信息,请参阅 Logging Operator 文档

有关如何解决 Logging 缓冲区的内存问题,请参阅 Rancher 与 Logging 服务的集成:故障排除

Flows

Flow 定义要收集和过滤哪些日志,以及将日志发送到哪个 Output。

Flow 是一个命名空间资源。换言之,只有部署了该 Flow 的命名空间日志才能被 Flow 收集。

你可以通过在 Rancher UI 中填写表单来配置 Flow

有关 Flow 自定义资源的更多详细信息,请参阅 FlowSpec

Matches

匹配语句用于选择从哪些容器中拉取日志。

你可以指定 match 语句,然后根据 Kubernetes 标签、容器和主机名来选择或排除日志。匹配语句会按照定义和处理的顺序进行评估,直到应用了第一个匹配的选择/排除规则。

你可以通过填写 Rancher UI 中的 FlowClusterFlow 表单来配置匹配。

使用 match 语句的详细示例,请参阅日志路由的官方文档

Filters

你可以在 Flow 中定义一个或多个过滤器。过滤器可以对日志执行各种操作,例如,添加其他数据、转换日志或解析记录中的值。Flow 中的过滤器会按定义的顺序应用。

有关 Logging Operator 支持的过滤器列表,请参阅 Fluentd 过滤器的官方文档

过滤器需要在 YAML 中配置。

Outputs

Output 会接收来自 Flow 的日志。由于 Flow 是一个命名空间资源,因此 Output 必须与 Flow 位于相同的命名空间中。

在 Rancher UI 中填写 FlowClusterFlow 表单时,你可以引用Output

ClusterFlows

ClusterFlow 配置匹配、过滤器和 Output 的方式与 Flow 的配置方式相同。主要区别在于 ClusterFlow 是集群级别的,并且可以跨所有命名空间配置日志收集。

你可以通过在 Rancher UI 中填写表单来配置 ClusterFlow

ClusterFlow 选择集群中所有命名空间的日志后,集群的日志会被收集并记录到所选的 ClusterOutput

YAML 示例

以下示例 Flow 转换了默认命名空间的日志消息,并将日志发送到 S3 Output

  1. apiVersion: logging.banzaicloud.io/v1beta1
  2. kind: Flow
  3. metadata:
  4. name: flow-sample
  5. namespace: default
  6. spec:
  7. filters:
  8. - parser:
  9. remove_key_name_field: true
  10. parse:
  11. type: nginx
  12. - tag_normaliser:
  13. format: ${namespace_name}.${pod_name}.${container_name}
  14. localOutputRefs:
  15. - s3-output
  16. match:
  17. - select:
  18. labels:
  19. app: nginx