Logstash 日志存储日期不适用于HH:mm:ss.SSS,但适用于HH:mm:ss,SSS

Logstash 日志存储日期不适用于HH:mm:ss.SSS,但适用于HH:mm:ss,SSS,logstash,Logstash,当我检查elasticsearch输出时,它显示的时间戳似乎不正确 对于HH:mm:ss.SSS(工作不正常)->apache.log "message" : "[DEBUG] 2020-12-05 12:26:18.254... "@timestamp" : "2021-01-11T03:31:10.314Z", 对于HH:mm:ss,SSS(工作正常)->eai\u new.log "timestamp&quo

当我检查elasticsearch输出时,它显示的时间戳似乎不正确

对于HH:mm:ss.SSS(工作不正常)->apache.log

"message" : "[DEBUG] 2020-12-05 12:26:18.254...
"@timestamp" : "2021-01-11T03:31:10.314Z",
对于HH:mm:ss,SSS(工作正常)->eai\u new.log

"timestamp" : "2020-11-23 06:05:05,297",
"message" : "2020-11-23 06:05:05,297
"@timestamp" : "2020-11-22T22:05:05.297Z"
除此之外,timestamp和@timestamp有什么区别

下面是我的日志代码

filter {

  if [name_of_log] in ["apache"] {
    grok {
      match => { "message" => "\[%{LOGLEVEL:level}\] %{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:msg}" }
    }

    date {
      match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSS" ]
    }
  } else {
    grok {
      match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:msg}" }
    }
    date {
      match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]
    }
  }
}


logstash中的日期过滤器有一个目标字段,它将刚刚解析的值放在该字段中。默认字段的名称为@timestamp

因此,当数据解析正常时,解析过程的结果保存在@timestamp字段中。 您有关于logstash的日期筛选器的更多详细信息

如果解析操作不起作用,@timestamp由elsaticsearch自己和插入日期对应的值放入elasticsearch端。如果在elasticsearch示例中未设置特定配置(用于映射),则这是默认行为

时间戳字段在grok操作期间设置。在您的代码中,这将在logstash筛选器配置的这一部分中设置时间戳字段{timestamp_ISO8601:timestamp}

grok {
  match => { "message" => "\[%{LOGLEVEL:level}\] %{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:msg}" }
}