Parsing 不使用源时间戳的日志存储
当前设置如下所示Parsing 不使用源时间戳的日志存储,parsing,timestamp,logstash,elastic-stack,Parsing,Timestamp,Logstash,Elastic Stack,当前设置如下所示 input { beats { port => 5044 codec => "json" } } output { elasticsearch { hosts => [ 'elasticsearch' ] } } Spring boot->log-file.json(使用)->filebeat->logstash->elastic 我可以看到弹性搜索ok中出现的日志。但是,它不使用日志文件中提供的日期,而是动态
input {
beats {
port => 5044
codec => "json"
}
}
output {
elasticsearch {
hosts => [ 'elasticsearch' ]
}
}
Spring boot->log-file.json(使用)->filebeat->logstash->elastic
我可以看到弹性搜索ok中出现的日志。但是,它不使用日志文件中提供的日期,而是动态创建这些日期
json示例
{
"@timestamp":"2017-09-08T17:23:38.677+01:00",
"@version":1,
"message":"A received request - withtimestanp",
etc..
我的logstash.conf输入过滤器如下所示
input {
beats {
port => 5044
codec => "json"
}
}
output {
elasticsearch {
hosts => [ 'elasticsearch' ]
}
}
如果您查看日志的kibana输出,它有第9个而不是第8个(当我实际创建日志时)
因此,我们现在已经解决了这个问题。。修复的细节如下 logback.xml
<appender name="stash" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<file>/home/rob/projects/scratch/log-tracing-demo/build/logs/tracing-A.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/rob/projects/scratch/log-tracing-demo/build/logs/tracing-A.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" >
<includeContext>false</includeContext>
<fieldNames>
<message>msg</message>
</fieldNames>
</encoder>
</appender>
filebeat.yml
<appender name="stash" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<file>/home/rob/projects/scratch/log-tracing-demo/build/logs/tracing-A.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/rob/projects/scratch/log-tracing-demo/build/logs/tracing-A.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" >
<includeContext>false</includeContext>
<fieldNames>
<message>msg</message>
</fieldNames>
</encoder>
</appender>
下面的json设置现在处理时间戳问题,因为它没有使用日志文件中的时间
此外,它还将json移动到json输出的根目录中,以保存日志。i、 e.它不是嵌套在beat json事件中,而是根的一部分
filebeat.prospectors:
- input_type: log
paths:
- /mnt/log/*.log
json.overwrite_keys: true
json.keys_under_root: true
fields_under_root: true
output.logstash:
hosts: ['logstash:5044']
logstash.conf
使用msg而不是消息解决JSON解析错误,原始数据现在位于消息字段中。看这里
现在我们已经解决了这个问题。。修复的细节如下 logback.xml
<appender name="stash" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<file>/home/rob/projects/scratch/log-tracing-demo/build/logs/tracing-A.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/rob/projects/scratch/log-tracing-demo/build/logs/tracing-A.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" >
<includeContext>false</includeContext>
<fieldNames>
<message>msg</message>
</fieldNames>
</encoder>
</appender>
filebeat.yml
<appender name="stash" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<file>/home/rob/projects/scratch/log-tracing-demo/build/logs/tracing-A.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/rob/projects/scratch/log-tracing-demo/build/logs/tracing-A.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" >
<includeContext>false</includeContext>
<fieldNames>
<message>msg</message>
</fieldNames>
</encoder>
</appender>
下面的json设置现在处理时间戳问题,因为它没有使用日志文件中的时间
此外,它还将json移动到json输出的根目录中,以保存日志。i、 e.它不是嵌套在beat json事件中,而是根的一部分
filebeat.prospectors:
- input_type: log
paths:
- /mnt/log/*.log
json.overwrite_keys: true
json.keys_under_root: true
fields_under_root: true
output.logstash:
hosts: ['logstash:5044']
logstash.conf
使用msg而不是消息解决JSON解析错误,原始数据现在位于消息字段中。看这里
恐怕是太贵了。还有一个问题。解决方法是将时间戳放在另一个字段(例如
时间
),然后使用mutate
过滤器和replace
将时间戳字段更改为时间
字段中的值。恐怕这是错误的。解决方法是将时间戳放在另一个字段中(例如time
),并使用mutate
过滤器和replace
将时间戳字段更改为time
字段中的值。