0

我在集群中部署了 filebeat 7.12 以使用自动发现从 kubernetes 日志中收集事件。

事件正在 NRT(近实时)中收集我希望的所有 pod,但在一段时间(1 或 2 小时)后仅停止收集 2 到 3 个 pod。

大约有 260 个 Pod,其中每 10 到 15 分钟生成 240 个 Pod。Filebeat 正在收集日志,成功收集并发送这 240 个 pod 以及除了 2 到 3 个 pod 之外的大多数其他 pod 的事件。

这与 filebeat 将事件发送到 logstash 或直接发送到控制台时的行为相同。当不再生成 240 个 pod 时,最后收集这 2 到 3 个 pod 的缺失事件。

更新了 filebeat 配置以不从这 240 个 pod 收集事件。这次为 NRT 中的所有 pod 收集事件。

尝试调整许多参数,如 max_procs、close_inactive、ignore_older、output.logstash.workers、output.logstash.bulk_max_size、queue.mem.events、queue.mem.flush.min_events 和 queue.mem.flush.timeout,但它们都没有解决问题。

资源分配 - RAM - 2 到 4 GB 和 CPU - 2 到 4 个核心

每个工作节点上运行 4 个 filebeat pod。CPU 指标 - 在此处输入图像描述

内存指标 - 在此处输入图像描述

添加我正在使用的 filebeat 配置。

  filebeat.autodiscover:
    providers:
      - type: kubernetes
        node: ${NODE_NAME}
        tags:
          - "kube-logs"
        templates:
          - condition.or:
              - contains:
                  kubernetes.pod.name: "ne-db-manager"
              - contains:
                  kubernetes.pod.name: "ne-mgmt"
              - contains:
                  kubernetes.pod.name: "list-manager"
              - contains:
                  kubernetes.pod.name: "scheduler-mgmt"
              - contains:
                  kubernetes.pod.name: "sync-ne"
              - contains:
                  kubernetes.pod.name: "file-manager"
              - contains:
                  kubernetes.pod.name: "dash-board"
              - contains:
                  kubernetes.pod.name: "config-manager"
              - contains:
                  kubernetes.pod.name: "report-manager"
              - contains:
                  kubernetes.pod.name: "clean-backup"
              - contains:
                  kubernetes.pod.name: "warrior"
              - contains:
                  kubernetes.pod.name: "ne-ops"  #This name will be found in 240 pods
            config:
              - type: container
                paths:
                  - "/var/log/containers/*-${data.kubernetes.container.id}.log"
                multiline.type: pattern
                multiline.pattern: '^[[:space:]]'
                multiline.negate: false
                multiline.match: after
                #scan_frequency: 1s
                #close_inactive: 5m
                #ignore_older: 10m
  max_procs: 4
  filebeat.shutdown_timeout: 5s
  logging.level: debug
  processors:
    - drop_event:
        when.or:
           - equals:
               kubernetes.namespace: "kube-system"
           - equals:
               kubernetes.namespace: "default"
           - equals:
               kubernetes.namespace: "logging"
  processors:
    - fingerprint:
        fields: ["message"]
        target_field: "@metadata._id"
  output.logstash:
    hosts: ["logstash-headless.logging:5044"]
    #, "logstash-headless.logging:5045"]
    #loadbalance: true
    #workers: 16
    index: filebeat
    pretty: false
    #bulk_max_size: 1600
    #compression_level: 9
  #queue.mem:
  #  events: 51200
  #  flush.min_events: 1600
  #  flush.timeout: 1s
  setup.template.name: "filebeat"
  setup.template.pattern: "filebeat-*"

我希望从 NRT 中的所有 pod 中收集所有事件。这里的任何建议将不胜感激。

4

0 回答 0