CentOS 上 Filebeat 日志格式自定义技巧
一 配置结构与常用输出
- 配置文件默认路径为:/etc/filebeat/filebeat.yml。核心结构包含:
- filebeat.inputs:定义采集路径与输入类型(如 log、modules)。
- processors:在发送前对事件进行加工(如 add_fields、mutate、decode_json_fields 等)。
- output.elasticsearch / output.logstash:定义输出目标与索引命名。
- 常用输出示例(Elasticsearch):
- 指定索引按日期滚动:index: “filebeat-%{[agent.version]}-%{+yyyy.MM.dd}”。
- 自定义字段与根级别放置:使用 fields 与 fields_under_root: true 将字段提升到事件根层级,便于检索与聚合。
二 在采集侧自定义事件字段
- 添加静态字段或标签:
- 使用 add_fields 增加业务维度(如 env、app、region),或用 fields_under_root 将字段放到根层级。
- 清理无用字段:
- 使用 mutate.remove_field 删除不需要的元数据或敏感字段,减少噪声与泄露风险。
- 示例(在 filebeat.inputs 下为某类日志增加字段):
- 说明:该示例为采集的日志事件增加 env=prod、app=myapp,并删除 agent.ephemeral_id 与 agent.type 两个字段。
三 解析与重写日志内容
- 多格式混合场景建议用 fields.log_type 标记日志类型,再配合条件处理器分别解析。
- 典型解析器与用法:
- JSON 日志:使用 decode_json_fields,将 message 中的 JSON 展开到事件;设置 target: “” 与 overwrite_keys: true 可将其提升到根层级并覆盖同名键。
- Key-Value 日志:使用 kv 处理器,指定 field 为 message,配合 trim_key/trim_value、separator 等清理与切分规则。
- 字段重命名与类型转换:使用 rename 与 convert 统一字段命名与类型(如将 status 转为 long)。
- 脱敏与合规:使用 mask 对 email、ip、手机号 等敏感信息进行掩码处理。
- 示例(按类型解析与脱敏):
- 说明:对 log_type=kv 的日志执行 KV 解析;对 log_type=json 的日志执行 JSON 解析;对 message 中的邮箱与 IP 进行掩码。
四 输出与索引命名模板
- 索引命名与生命周期:
- 按版本与日期命名:index: “filebeat-%{[agent.version]}-%{+yyyy.MM.dd}”。
- 启用 ILM(Index Lifecycle Management)管理热温冷与滚动删除:
- setup.ilm.enabled: true
- setup.ilm.policy_name: “delete”(示例策略名,可按需调整)
- 模板与压缩:
- 自定义分片与压缩:setup.template.settings 中设置 index.number_of_shards、index.codec: best_compression、_source.enabled: true。
- 安全传输:
- 输出到 ES 或 Logstash 时启用 SSL/TLS,配置 certificate_authorities、certificate、key 等参数,确保链路加密与可信。
五 调试与验证
- 配置校验与热加载:
- 校验配置:filebeat test config -e;必要时开启模块热加载:filebeat.config.modules: reload.enabled: true。
- 服务管理:
- 重启与查看状态:sudo systemctl restart filebeat;sudo systemctl status filebeat;实时查看日志:sudo journalctl -u filebeat -f。
- 数据验证:
- 查看索引:curl -X GET “localhost:9200/_cat/indices?v&pretty”。
- 检索样例文档:curl -X GET “localhost:9200/filebeat-*/_search?pretty” -H ‘Content-Type: application/json’ -d ‘{ “query”: { “match_all”: {} }, “size”: 1 }’。