- 每行日志被整个入到了ES索引中的一个message字段,而不是按照json解析后的字段入库
解决方案:这个问题的原因是因为json日志中只要有filebeat无法解析的格式,就会把整条记录当做一个字符串处理,入库到一个message字段,我是日志中有Windows下的路径,反斜杠和后面的字母被当做了转义字符无法识别,所以记录被截断导致解析失败。如果不是需要解析嵌套json对象的话,也不用配置什么processors,别搞复杂了! - Filebeat日志中报 “Error decoding JSON: EOF” 错误
解决方案:很多情况会出现这个错误,日志json格式错误,但我是因为每行数据都是以 } 大括号结尾的,我在后面加个逗号,就不再报错,可能是Filebeat解析json要求对象之间必须有逗号吧,光换行是不行的! - Filebeat配置检测报 “setup.template.name and setup.template.pattern have to be set if index name is modified” 错误
解决方案:只要我们配置了索引名格式,就必须要同时配置setup.template.name 和setup.template.pattern,但是,我配置了这两项怎么还是不行呢,还是同样的错误,重点来了:这两项的配置必须要顶格配置,不可以和index对齐写到一个缩进级别!这个是很容易写错的!正确的写法:
- 提示:通过Filebeat采集JSON日志入库到Elasticsearch中,如果默认配置,所有的json字段会最终被存储在一个json字段对象下,如果不想这样存储,想之间存储到root节点下,那么可以加如下配置,当然这些官方文档都有介绍:
json.keys_under_root: true
json.overwrite_keys: true
参考配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/analyzer/test.log
json.keys_under_root: true
json.add_error_key: true
json.overwrite_keys: true
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["192.168.0.81:9200"]
index: "filebeat-testindex-%{+yyyy.MM.dd}"
setup.template.name: "filebeattest"
setup.template.pattern: "filebeattest-*"