首页主机资讯Filebeat如何进行日志分割

Filebeat如何进行日志分割

时间2025-12-09 18:03:03发布访客分类主机资讯浏览1378
导读:Filebeat日志分割的常见场景与做法 一 概念澄清 Filebeat自身日志分割:指对 Filebeat 进程输出的运行日志进行按大小或按时间切分与保留。 被采集日志的分割:指对应用/系统产生的日志文件(如 /var/log/ 下的文...

Filebeat日志分割的常见场景与做法

一 概念澄清

  • Filebeat自身日志分割:指对 Filebeat 进程输出的运行日志进行按大小或按时间切分与保留。
  • 被采集日志的分割:指对应用/系统产生的日志文件(如 /var/log/ 下的文件)进行轮转,Filebeat 负责持续采集,不负责切割文件。
  • 索引/数据按时间或业务分割:指将写入 Elasticsearch 的索引按天、按月或按业务维度拆分,便于检索与保留策略管理。

二 对Filebeat自身日志进行分割

  • 在 Filebeat 配置中开启文件日志并设定保留策略,例如保留最近 7 个文件:
logging:
  file:
    enabled: true
    path: /var/log/filebeat/filebeat
    name: filebeat
    keepfiles: 7
    permissions: 640
  • 说明:上述配置会让 Filebeat 将自身日志写入 /var/log/filebeat/filebeat.log,并按策略自动轮转与清理旧文件。该方式属于 Filebeat 内置的日志文件管理,不涉及采集路径的日志切割。

三 对被采集日志进行分割(系统级轮转)

  • 使用 logrotate 对应用日志进行按天轮转、压缩与保留(示例针对 Filebeat 自身日志目录,其他日志路径同理):
    1. 新建配置:
sudo vi /etc/logrotate.d/filebeat
  1. 写入内容:
/var/log/filebeat/*.log {

    daily
    missingok
    rotate 7
    compress
    notifempty
    create 640 root root
}

参数含义:daily(每天轮转)、rotate 7(保留 7 份)、compress(压缩旧日志)、create(轮转后重建文件并设定权限/属主)。 3) 手动测试与生效:

sudo logrotate -f /etc/logrotate.d/filebeat
sudo systemctl restart filebeat
  • 说明:Filebeat 不负责切割应用日志,通常由 logrotate 或应用自身按策略轮转;Filebeat 会自动识别并继续跟踪新文件。

四 将数据写入按时间或业务分割的索引

  • 直接由 Filebeat 写入按月的索引(示例按月拆分):
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true

output.elasticsearch:
  hosts: ["localhost:9200"]
  index: "nginx-access-%{
[beat.version]}
-%{
+yyyy.MM}
"
  • 通过 Logstash 按业务字段拆分索引(示例按项目拆分并写入按天索引):
# Filebeat
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /opt/logs/qfzs-*/log_info.log
  fields:
    project: "assistant"
- type: log
  enabled: true
  paths:
    - /opt/logs/qfzs-*/log_info.log
  fields:
    project: "qfzs-shop"
output.logstash:
  hosts: ["localhost:5044"]
# Logstash
input {
 beats {
     port =>
 5044 }
 }

filter {

  if "assistant" in [fields][project] {
 mutate {
     add_field =>
 {
     "index_prefix" =>
 "filebeat-assistant" }
 }
 }

  else if "qfzs-shop"   in [fields][project] {
 mutate {
     add_field =>
 {
     "index_prefix" =>
 "filebeat-qfzs-shop" }
 }
 }

  else {
 mutate {
     add_field =>
 {
     "index_prefix" =>
 "filebeat-default" }
 }
 }

}

output {

  elasticsearch {
    
    hosts =>
     ["localhost:9200"]
    index =>
 "%{
[index_prefix]}
-%{
+YYYY.MM.dd}
"
  }

}
    
  • 说明:前者通过 Filebeat 的 index 模板直接按月写入;后者利用 fields 标记业务,由 Logstash 动态选择索引前缀,实现按业务与时间的多维拆分。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Filebeat如何进行日志分割
本文地址: https://pptw.com/jishu/767321.html
如何配置Filebeat的日志路径 如何优化Filebeat的CPU使用

游客 回复需填写必要信息