96SEO 2026-05-11 03:40 11

在日常运维中,日志文件像是无声的记录者,却也会悄悄把磁盘填满。当你看到 /var/log/filebeat/ 里堆积如山的 .log 文件时是不是有点心慌?别担心, 这篇文章会手把手教你用系统自带的 logrotate 或者 Filebeat 本身的配置,让日志自动切割、压缩、归档,从而大幅提升日志管理的效率,太暖了。。
下面就来看看两种主流方案——系统级 logrotate和Filebeat 内置的日志分割功能——各自怎么玩儿,搞起来。。
/etc/logrotate.d/ 目录专门放每个服务的轮转规则。我们新建一个叫 filebeat 的配置文件, 内容如下:,太水了。
/var/log/filebeat/*.log {
daily # 每天轮转
rotate 7 # 保留最近7天
compress # 使用 gzip 压缩旧文件
delaycompress # 延迟压缩,避免正在写入的文件被压缩
missingok # 文件不存在也不报错
notifempty # 空文件不处理
create 640 root adm # 新文件权限和属主
}
YYDS... 这段配置告诉 logrotate:每天检查一次 /var/log/filebeat/*.log如果有变化就生成一个新文件,旧文件保留七天并压缩。看起来很简单,却能解决大多数场景。
# yum install -y logrotate
# systemctl enable --now crond # 确保 cron 正常运行, 主要原因是 logrotate 默认由 cron 调度
TIPS:If you’re using CentOS 7+ cron job lives in /etc/cron.daily/logrotate, 不需要额外操作,只要确保 cron 正常即可。
# logrotate -d /etc/logrotate.d/filebeat # -d 表示调试模式, 不真的施行
# logrotate -f /etc/logrotate.d/filebeat # -f 强制施行一次轮转
极度舒适。 施行完后你应该能在同目录看到类似 .log.1.gz、.log.2.gz … .log.7.gz 的压缩包。打开看看,里面仍然是完整的 JSON 行或原始文本,一切正常! 🎉
Filebeat 本身不负责切割,但它可以感知到新产生的日志文件。如果你使用了上面的 logrotate, 只需确保 Filebeat 的输入路径指向正确,并适当调小扫描间隔,让它及时发现新文件,不夸张地说...。
# /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/filebeat/*.log
scan_frequency: 10s # 每十秒扫描一次目录
ignore_older: 72h # 忽略超过72小时的旧文件
output.elasticsearch:
hosts:
躺赢。 TIPS:If you notice “no new lines” after rotation, try setting end_of_line: " ", 有时 Windows 换行符会闹点小脾气。
# systemctl restart filebeat
# systemctl status filebeat # 确认没有报错
# journalctl -u filebeat -f # 实时查看采集状态
If you really don’t want依赖外部工具,可以利用 Filebeat 的内部参数实现“伪”分割。比方说使用 buckets_path:? 不对, 那是 MetricBeat…好吧,其实 Filebeat 没有直接切割功能,但我们可以借助它的"logging.file" 参数配合外部脚本实现。
# /etc/filebeat/filebeat.yml 中添加:
logging.file:
enabled: true
path: /var/log/filebeat/
name: filebeat.log
keepfiles: 5 # 最多保留5个历史日志文件
rotateeverybytes: 10485760 # 达到10MB后滚动一次
换个角度。 This setting makes Filebeat itself generate rolling logs like "filebeat.log", "filebeat.log.1", …". 对于只想记录自身运行状态的小伙伴非常实用。
If you have特殊业务需求, 比方说按照业务线分别保存,可以让 Filebeat 把采集到的数据通过 exec 插件喂给自定义脚本,由脚本自行决定如何命名和压缩。这种方式灵活度最高,但需要一定 Bash/Python 能力,卷不动了。。
# 示例:将采集到的数据写入每日一个独立文件
output.console:
enabled: true
processors:
- script:
lang: javascript
id: split_by_date
source: |
function process {
var d = new Date;
var fname = "/var/log/split/"+d.getFullYear+"-"++1)+"-"+d.getDate+".log";
event.put;
}
output.file:
path: "/dev/null"
filename: "ignore"
output.exec:
command: "/usr/local/bin/write_to_file.sh %{target_file}"
| 特性 / 方法 | 系统级 Logrotate | Filebeat 内置 | 适用场景 |
|---|---|---|---|
| - 配置难度 | 中等,需要编辑 /etc/logrotate.d/ 文件 | 低,只改 filebeat.yml 中几行 | - 大规模生产环境 - 小型测试或单机部署 - 想要完全控制压缩策略 - 对自身运行日志进行滚动 |
| - 支持压缩格式 | gzip/bzip2/xz 等皆可自定义 | 仅 gzip | |
| - 保留周期灵活性 | daily/weekly/monthly + rotate N 天数自由设定 | 只能通过 keepfiles 限制数量,不支持按天保留 | |
| - 对已有日志影响 | 即时生效,可强制‑f 手动轮转 | 仅针对 Filebeat 自己产生的运行日志有效 | |
| - 推荐指数 ★★★★★ | ★★★☆☆ | ||
| 注:以上数据基于 CentOS 7/8 常规发行版测试得出,仅供参考。 | |||
# df -h /var/log/filebeat && du -sh /var/log/filebeat/*gz | sort -hr | head -n5 防止意外增长。Create ... root adm → youruser yourgroup;closeinactive : “5m” 或者 “scanfrequency : “30s”。 /var/l og/f i lebea t/f i lebea t.log 以及系统 journal 中关于 Logr otate 的报错信息。
祝大家玩得开心,如果还有其他细节想探讨,欢迎留言交流~
©2026 技术分享站 | Powered by Elas 一句话。 tic Stack & CentOS Community.
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback