Flow 和 ClusterFlow

配置

v2.5.8+

v2.5.8 的变化

现在可以通过在 Rancher 用户界面上填写表格来配置FlowsClusterFlows

Flows

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

Flow是一个命名空间的资源,这意味着日志将只从Flow部署的命名空间中收集。

关于Flow自定义资源的更多细节,请参阅FlowSpec

Matches

匹配语句是用来选择哪些容器来提取日志的。

你可以根据 Kubernetes 标签、容器和主机名称指定匹配语句来选择或排除日志。匹配语句按照它们被定义的顺序进行评估,只处理到第一个匹配的选择或排除规则适用为止。

匹配语句可以通过填写 Rancher UI 中的FlowClusterFlow表格进行配置。

关于使用匹配语句的详细例子,请参阅关于日志路由的官方文档

Filters

你可以在一个Flow中定义一个或多个过滤器。过滤器可以对日志进行各种操作,例如,添加额外的数据,转换日志,或解析记录中的值。流程中的过滤器是按照定义的顺序应用的。

关于 Banzai Cloud Logging 操作者支持的过滤器列表,见本页

过滤器需要在 YAML 中进行配置。

Outputs

Output将从Flow中接收日志。因为Flow是一个命名空间的资源,Output 必须与Flow驻留在同一个命名空间。

Outputs可以在 Rancher UI 中填写FlowClusterFlow表格时被引用。

ClusterFlows

Matches、Filters 和 Outputs 是为ClusterFlow配置的,与为流量配置的方式相同。关键的区别是,ClusterFlow是在集群级别的范围内,可以配置所有命名空间的日志收集。

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

Rancher v2.5.8 之前

Flows

Flow定义了要收集和过滤的日志,以及要将日志发送到哪个OutputFlow是一个命名空间的资源,这意味着日志将只从Flow部署的命名空间中被收集。

Flow需要在 YAML 中定义。

关于Flow自定义资源的更多细节,见FlowSpec

Matches

匹配语句是用来选择哪些容器来提取日志的。

你可以根据 Kubernetes 标签、容器和主机名称指定匹配语句来选择或排除日志。匹配语句按照它们被定义的顺序进行评估,只处理到第一个匹配的选择或排除规则适用为止。

关于使用匹配语句的详细例子,请参阅关于日志路由的官方文档

Filters

你可以在一个Flow中定义一个或多个过滤器。过滤器可以对日志进行各种操作,例如,添加额外的数据,转换日志,或解析记录中的值。流程中的过滤器是按照定义的顺序应用的。

关于 Banzai Cloud Logging 操作者支持的过滤器列表,见本页

过滤器需要在 YAML 中进行配置。

Outputs

Output将从Flow中接收日志。因为Flow是一个命名空间的资源,Output 必须与Flow驻留在同一个命名空间。

ClusterFlows

Matches、Filters 和 Outputs 是为ClusterFlow配置的,与为流量配置的方式相同。关键的区别是,ClusterFlow是在集群级别的范围内,可以配置所有命名空间的日志收集。

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

ClusterFlows需要在 YAML 中定义。

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

Copy