我在监视日志文件的通用转发器上有一个输入设置。 Splunk上的监视器似乎逐行读取文件(而不是正确读取多行事件),并且过早地截断日志条目。不过,将文件上传到Splunk Web UI还是可以的。
这是我尝试读取的日志条目的示例:
2019-07-08 22:25:42.314 INFO [MessageHandler.java:91] Processing the following message from Queue
------------------------------------
<Metadata ready="false">
<ApplicableStartTime>2019-07-07T23:11:39.000</ApplicableStartTime>
<ApplicableEndTime>2019-08-04T23:36:29.000</ApplicableEndTime>
<ActualStartTime>2019-07-07T22:49:51.000</ActualStartTime>
<ActualEndTime>2019-08-04T23:58:50.000</ActualEndTime>
<FileName>test.bsp</FileName>
<FileID>...</FileID>
<Status>...</Status>
<Grade>...</Grade>
</Metadata>
------------------------------------
但是,当我通过分布式搜索来搜索这些数据时,我找到了一个看起来像这样的条目:
2019-07-11 17:00:27.192 INFO [MessageHandler.java:91] Processing the following message from Queue
------------------------------------
<Metadata ready="true">
然后,当我在<ApplicableStartTime>
XML标签中搜索时间时,我发现这是一个独立事件:
<ApplicableStartTime>2019-07-07T23:11:39.000</ApplicableStartTime>
似乎监视器正在拆分事件,而不是遵循props.conf中定义的换行规则(LINE_BREAKER
和TIME_FORMAT
),然后日期解析器会随机花费一个时间作为日志时间。记录器可能在每一行之后都将文件刷新到磁盘,但这完全超出了我的控制范围。
这是我的props.conf中的源类型:
[my-sourcetype]
BREAK_ONLY_BEFORE_DATE =
DATETIME_CONFIG =
LINE_BREAKER = ([\r\n\s]*)\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d{3}\s[\w+\s\[\w\.]+(\:\d+)?\]
MAX_EVENTS = 2000
MAX_TIMESTAMP_LOOKAHEAD = 23
NO_BINARY_CHECK = true
SHOULD_LINEMERGE = false
TIME_FORMAT = %Y-%m-%d %H:%M:%S.%3N
TIME_PREFIX = ^
TRUNCATE = 50000
category = Custom
description = This is my source type yo
pulldown_type = true
当我通过直接上传文件(使用localhost上的Web UI)进行测试时,此源类型可以正常工作,并且将整个日志条目作为单个条目读取。如何调整此设置,使其也适用于monitor://
输入类型?当我使用通用转发器设置时,可能是索引器导致了问题,或者可能没有刷新源类型?作为非管理员用户,我目前还没有一种检查该方法的方法(是否可以将其作为普通用户查看?)。
这是Web UI中上载的属性。
快速更新:我还尝试在monitor://
节下的inputs.conf中使用这些参数:
multiline_event_extra_waittime = true
time_before_close = 15
它似乎并没有影响它。