Filebeat日志输出格式自定义指南
一 概念澄清
二 自定义 Filebeat 自身运行日志格式
# 文本格式(默认)
logging:
level: info
to_files: true
files:
path: /var/log/filebeat
name: filebeat.log
keepfiles: 7
permissions: 0644
rotateeverybytes: 10485760
# JSON 格式(机器可解析)
logging:
level: info
to_files: true
format: json
files:
path: /var/log/filebeat
name: filebeat.log
keepfiles: 7
permissions: 0644
三 自定义业务日志事件的输出格式
output.console:
pretty: true
output.file:
path: "/tmp/filebeat"
filename: events
rotate_every_kb: 10000
number_of_files: 7
permissions: 0600
output.elasticsearch:
hosts: ["http://es-node:9200"]
index: "app-logs-%{+yyyy.MM.dd}"
# 如需禁用 ILM 并使用自定义模板
setup.ilm.enabled: false
setup.template.name: "app-template"
setup.template.pattern: "app-*"
setup.template.overwrite: true
setup.template.settings:
index.number_of_shards: 3
index.number_of_replicas: 0
output.logstash:
hosts: ["logstash:5044"]
output.kafka:
enabled: true
hosts: ["kafka1:9092","kafka2:9092"]
topic: app-logs
codec.format:
string: '{"@timestamp":"%{[@timestamp]}","host":"%{[host.name]}","service":"%{[fields.service]}","msg":"%{[message]}"}'
processors:
- add_fields:
fields:
env: prod
team: backend
- mutate:
remove_field: ["agent.ephemeral_id", "input.type"]
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
tags: ["access"]
fields:
log_type: nginx_access
- type: log
paths:
- /var/log/nginx/error.log
tags: ["error"]
fields:
log_type: nginx_error
output.elasticsearch:
hosts: ["http://es:9200"]
indices:
- index: "nginx-access-%{+yyyy.MM.dd}"
when.contains:
tags: "access"
- index: "nginx-error-%{+yyyy.MM.dd}"
when.contains:
tags: "error"
setup.ilm.enabled: false
setup.template.name: "nginx-template"
setup.template.pattern: "nginx-*"
setup.template.overwrite: true
四 常见问题与排查