通过filebeat写入数据到elasticsearch之后发现并使用日志时间替换默认timestamp之后,发现时间不对,差八个小时,应该就是时区的问题。
问题解决
有人说加上timezone: "Asia/Shanghai"就行:
yaml
- timestamp:
filed: "@timestamp"
layouts: ["ISO8601"]
timezone: "Asia/Shanghai"
但是这种方法在我这边没用。
于是只能手动处理 ------- 在script里面处理时间戳的时候加上时区偏移即可:timestamp.setMinutes(timestamp.getMinutes() + timestamp.getTimezoneOffset());
yaml
- script:
language: javascript
source: >
function process(event) {
try{
var date = event.Get("extracted:log_date");
var time = event.Get("extracted:log_time");
if(date && time){
var timestamp = new Date(date + 'T' + time + 'Z');
if(isNaN(timestamp.getTime())){
return;
}
timestamp.setMinutes(timestamp.getMinutes() + timestamp.getTimezoneOffset());
event.Put("@timestamp", timestamp);
}
}
catch(e){
event.Put("error", e.message);
}
}