在CentOS系统下,使用Filebeat进行日志分割可以通过配置Filebeat的processors和fields来实现。以下是详细的步骤:
首先,确保你已经安装了Filebeat。如果还没有安装,可以使用以下命令进行安装:
sudo yum install filebeat
编辑Filebeat的配置文件,通常位于/etc/filebeat/filebeat.yml。
确保你的输入配置正确,例如:
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
添加一个processors部分来处理日志分割。你可以使用dissect或grok处理器来解析日志,并使用add_fields处理器来添加新的字段,以便后续处理。
processors:
- dissect:
    tokenizer: '%{timestamp} %{log_level} %{message}'
    field: 'message'
    target_prefix: ''
  when:
    contains:
      - 'timestamp'
      - 'log_level'
      - 'message'
- add_fields:
    fields:
      log_file: 'my_app.log'
配置Filebeat将处理后的日志发送到Elasticsearch或其他输出目标。例如,发送到Elasticsearch:
output.elasticsearch:
  hosts: ["localhost:9200"]
  index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
启动Filebeat并检查其状态:
sudo systemctl start filebeat
sudo systemctl enable filebeat
确保日志文件被正确分割并发送到Elasticsearch。你可以使用以下命令查看Elasticsearch中的索引:
curl -X GET "localhost:9200/_cat/indices?v"
你应该能看到类似filebeat-7.x.x-yyyy.MM.dd的索引,这表明日志已经被正确分割。
如果你希望系统级别的日志文件(如/var/log/messages)也能被Filebeat处理,你需要配置系统的日志轮转(logrotate)。编辑/etc/logrotate.d/messages文件,添加以下内容:
/var/log/messages {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        /usr/bin/systemctl restart filebeat.service
    endscript
}
这会每天轮转日志文件,并在轮转后重启Filebeat服务,确保新的日志文件被Filebeat处理。
通过以上步骤,你可以在CentOS系统下使用Filebeat实现日志分割。