Filebeat如何进行日志分割
导读: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 自身日志目录,其他日志路径同理):
- 新建配置:
sudo vi /etc/logrotate.d/filebeat
- 写入内容:
/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
