【问题标题】:How do you send Fargate EKS Fluent Bit Logs from different services to separate Cloudwatch groups?如何将来自不同服务的 Fargate EKS Fluent Bit Logs 发送到不同的 Cloudwatch 组?
【发布时间】:2021-06-22 21:15:21
【问题描述】:

我已关注this guide 在我的 EKS 集群上配置 Fluent Bit 和 Cloudwatch,但目前所有日志都转到一个日志组。我尝试遵循一个单独的教程,该教程使用 Fluent Bit 的 kubernetes 插件在达到 [OUTPUT] 配置之前标记服务。这会导致问题,因为 Fargate EKS 目前没有按照 bottom of this doc 处理 Fluent Bit [INPUT] 配置。

有没有人遇到过这种情况?我想将日志拆分为单独的服务。

这是我当前的 YAML 文件。我添加了解析器和过滤器,以查看是否可以获得任何其他信息以在 Cloudwatch 上使用。

kind: Namespace
apiVersion: v1
metadata:
  name: aws-observability
  labels:
    aws-observability: enabled
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: aws-logging
  namespace: aws-observability
data:
  parsers.conf: |
    [PARSER]
        Name docker
        Format json
        Time_Key time
        Time_Format %Y-%m-%dT%H:%M:%S.%L
        Time_Keep On
        
  filters.conf: |
    [FILTER]
        Name kubernetes
        Match kube.*
        Kube_CA_File /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        Kube_Token_File /var/run/secrets/kubernetes.io/serviceaccount/token
        # Kube_Tag_Prefix kube.var.log.containers.
        Kube_URL https://kubernetes.default.svc:443
        Merge_Log On
        Merge_Log_Key log_processed
        Use_Kubelet true
        Buffer_Size 0
        Dummy_Meta true
  
  output.conf: |
    [OUTPUT]
        Name cloudwatch_logs
        Match   *
        region us-east-1
        log_group_name fluent-bit-cloudwatch2
        log_stream_prefix from-fluent-bit-
        auto_create_group On

【问题讨论】:

    标签: kubernetes amazon-cloudwatch amazon-eks aws-fargate fluent-bit


    【解决方案1】:

    所以我发现这样做其实很简单。

    fluent 位的默认输入标记包含您正在登录的服务的名称,因此您实际上可以在服务名称周围使用通配符运算符堆叠多个 [OUTPUT] 块 .这就是我将流发送到不同的日志组所要做的一切。这是我的 YAML 供参考。

    kind: Namespace
    apiVersion: v1
    metadata:
      name: aws-observability
      labels:
        aws-observability: enabled
    ---
    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: aws-logging
      namespace: aws-observability
    data:
      output.conf: |
        [OUTPUT]
            Name cloudwatch_logs
            Match   *logger*
            region us-east-1
            log_group_name logger-fluent-bit-cloudwatch
            log_stream_prefix from-fluent-bit-
            auto_create_group On
            
        [OUTPUT]
            Name cloudwatch_logs
            Match   *alb*
            region us-east-1
            log_group_name alb-fluent-bit-cloudwatch
            log_stream_prefix from-fluent-bit-
            auto_create_group On
    

    【讨论】:

    • 嗨,“您正在登录的服务的名称”是什么意思?你是说 Kubernetes 服务吗?
    • 我的意思是说 Pod 的给定名称,它位于 yaml 的元数据部分中
    • 啊,谢谢,我尝试了 pod 的名称,它可以工作。你知道我们可以匹配的其他标准吗?例如命名空间等2
    • 我没有进行任何其他尝试,看起来如果您使用的是 EKS 的 Fargate 版本,您希望有很多选项可以使用。很高兴听到你能够让我的方法奏效。
    • 事实证明按 K8S 元数据进行过滤仍在路线图中:github.com/aws/containers-roadmap/issues/1197
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多