Filebeat 7.15.2如何解析Syslog日志至Elasticsearch?
在Filebeat 7.15.2中解析Syslog日志字段
问题场景
已通过Filebeat 7.15.2将Syslog文件导入Elasticsearch,但数据未被解析,message字段为完整日志行,示例:
Feb 14 03:43:41 my_host_name anacron[240673]: Normal exit (1 job run)
由于Filebeat 8.0新增的syslog处理器在7.15.2版本中不存在,需通过以下替代方案实现字段解析。
解决方案
方法1:使用Dissect处理器
Dissect适用于格式固定的日志,配置简单且性能更优。在Filebeat配置文件中添加如下processors配置:
processors: - dissect: tokenizer: "%{month} %{day} %{time} %{host} %{process}[%{pid}]: %{message}" field: "message" target_prefix: "syslog" keep_original_field: true # 可选:保留原始message字段
- 解析后会生成
syslog.month、syslog.day、syslog.time、syslog.host、syslog.process、syslog.pid字段,原message字段会被替换为日志内容部分(如示例中的Normal exit (1 job run))。 - 若需保留原始
message字段,添加keep_original_field: true即可。
方法2:使用Grok处理器
Grok支持灵活的正则匹配,适合格式多变的日志。配置示例如下:
processors: - grok: match: message: '%{SYSLOGTIMESTAMP:syslog.timestamp} %{SYSLOGHOST:syslog.host} %{DATA:syslog.process}\[%{NUMBER:syslog.pid:int}\]: %{GREEDYDATA:syslog.message}' keep_original_field: true
- 这里使用了Elastic预定义的Grok模式(
SYSLOGTIMESTAMP、SYSLOGHOST等),也可根据实际日志格式自定义正则表达式。 keep_original_field: true用于保留原始message字段,避免被覆盖。
验证与生效
- 配置完成后,重启Filebeat使配置生效。
- 可通过以下命令验证配置语法:
filebeat test config -c /path/to/your/filebeat.yml - 测试解析效果可使用:
filebeat test output -c /path/to/your/filebeat.yml
内容的提问来源于stack exchange,提问作者saad
相关产品推荐
相关产品推荐

