Filebeat配置dissect解析NLog日志失效及YAML报错问题咨询
Filebeat dissect配置错误解决方案
问题根因
你两次配置的问题分别如下:
- 首次配置不生效:tokenizer结构和日志样例完全不匹配,多写了多余的
{符号,捕获组的分隔符对应逻辑错误。 - 第二次启动报错:YAML双引号包裹的字符串中,
\|属于非法转义写法,YAML解析规则不识别|的转义写法,直接抛出未知转义字符错误。同时你还混用了grok语法,TIMESTAMP_ISO8601、LOGLEVEL、GREEDYDATA都是grok处理器的预定义模式标识,dissect处理器不支持这类写法。
修复后的配置
直接去掉|前的转义符,同时移除grok模式标识即可,正确配置如下:
processors: - add_host_metadata: host: "unix:///host_docker/docker.sock" - dissect: tokenizer: "%{time}|%{level}|%{module}|%{msg}" field: "message" target_prefix: ""
可选优化:时间字段类型转换
如果需要将解析出的time字段转为Elasticsearch的时间类型,替换默认的@timestamp,可以额外添加timestamp处理器:
processors: - add_host_metadata: host: "unix:///host_docker/docker.sock" - dissect: tokenizer: "%{time}|%{level}|%{module}|%{msg}" field: "message" target_prefix: "" - timestamp: field: time layouts: - "2006-01-02 15:04:05.9999" target: "@timestamp"
内容的提问来源于stack exchange,提问作者Endurance
相关产品推荐
相关产品推荐

