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

apiVersion: logging.banzaicloud.io/v1beta1
kind: Flow
metadata:
  name: flow-sample
  namespace: default
spec:
  filters:
    - parser:
        remove_key_name_field: true
        parse:
          type: nginx
    - tag_normaliser:
        format: ${namespace_name}.${pod_name}.${container_name}
  localOutputRefs:
    - s3-output
  match:
    - select:
        labels:
          app: nginx