我想将应用程序中的JSON日志文件摄取到ElasticSearch
中。为此,我使用运行在Elastic agent
上的Custom log files
集成,该Elastic agent
由Fleet Manager
管理。
日志文件由一个JSON对象组成,每行一个,如下所示:
{"timestamp":"2023-08-14T18:00:55.554","level":"ERROR","thread":"http-nio-8080-exec-5","logger":"some class","message":"API error.","context":"default","exception":"some exception message\r\n\t stack..."}
{"timestamp":"2023-08-14T18:00:55.554", ...
在字段中没有换行符或特殊字符,因为从一些帖子建议。
为agent policy
定义的处理器设置如下:
- decode_json_fields:
fields: ["message","context"]
process_array: true
max_depth: 1
target: ""
overwrite_keys: true
add_error_key: false
它工作正常,字段message
,context
,logger
,timestamp
等都被摄取。所有字段,但不包括exception
字段。
添加exception
字段根本没有效果。
我怀疑我需要将异常字段添加到某个模式中,但我无法理解。我们现在开始使用Elastic Search,对它的工作原理知之甚少。
我怀疑的另一件事是,这可能是对字段大小的一些限制。异常字段正在填充堆栈信息,这可能导致>5k大小的数据。我不知道有没有这个限度。
有什么建议吗?
1条答案
按热度按时间1tu0hz3e1#
问题是字段的大小超出了某个限制。通过将处理器设置为以2k最大大小截断字段,字段被正确摄取。
新配置:
为了避免丢失一些重要的堆栈数据,有必要调整字段的填充方式。我发现有几种策略可以减少堆栈大小。例如,一种方法是反转堆栈的顺序,因此源代码应该首先写入。