我在集群中部署了 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 中收集所有事件。这里的任何建议将不胜感激。