在 CentOS 上限制 Filebeat 的资源(CPU、内存等),常见有几种方式,取决于你是直接用二进制运行、systemd 管理,还是容器运行。下面按最常用场景说明。
CentOS 默认通过 systemd 启动 Filebeat。
systemctl edit filebeat
会打开一个 override 文件(通常是 /etc/systemd/system/filebeat.service.d/override.conf)。
[Service]
# CPU 限制(百分比,100000 = 1 核)
CPUQuota=50%
# 内存限制
MemoryLimit=512M
MemoryMax=512M
# 可限制进程数
TasksMax=128
systemctl daemon-reload
systemctl restart filebeat
systemctl status filebeat
cat /sys/fs/cgroup/memory/system.slice/filebeat.service/memory.limit_in_bytes
如果你是用脚本直接启动 Filebeat:
ulimit -v 524288 # 虚拟内存 512MB(KB)
ulimit -u 128 # 最大进程数
./filebeat -e
⚠️ CentOS 7+ 默认 systemd 会忽略 shell 的 ulimit
适合多实例或精细化控制:
cgcreate -g memory,cpu:/filebeat
echo 536870912 > /sys/fs/cgroup/memory/filebeat/memory.limit_in_bytes
echo 50000 > /sys/fs/cgroup/cpu/filebeat/cpu.cfs_quota_us
echo 100000 > /sys/fs/cgroup/cpu/filebeat/cpu.cfs_period_us
cgexec -g memory,cpu:filebeat /usr/share/filebeat/bin/filebeat -e
虽然不是系统资源限制,但可减少资源消耗:
filebeat.inputs:
- type: log
scan_frequency: 10s
max_bytes: 1048576 # 单行最大 1MB
queue.mem:
events: 2048
maxbytes: 50mb
output.elasticsearch:
bulk_max_size: 50
docker run --memory=512m --cpus=0.5 docker.elastic.co/beats/filebeat:8.x
resources:
limits:
cpu: "500m"
memory: "512Mi"
| 场景 | 推荐方式 |
|---|---|
| CentOS + systemd | ✅ systemd 限制 |
| 脚本启动 | ulimit / cgroup |
| 容器 | docker / k8s limits |
如果你愿意,可以告诉我:
我可以给你精确配置示例。