1. 程式人生 > >logstash-input-jdbc取mysql數據日期格式處理

logstash-input-jdbc取mysql數據日期格式處理

logstash elk elasticsearch

使用logstash 從mysql取一個datetime類型的數字。 在stdout查看數據json格式取到的字段值為類似 2018-03-23T04:18:33.000Z,因為想使用這個字段作為@timestamp,所以使用logstash的date 去match 。

    date {
      match => ["start_time","ISO8601"]
    }

但實際發現每個document都會附帶一個[_dataparserfail]的標簽,百思不得姐
google一番後終於明白了,鏈接:https://discuss.elastic.co/t/trouble-matching-timestamp/83768/4

因為從mysql取到數據的時候start_time 已經是一個時間的數據類型了, 這時候再用date去處理自然失敗,如果想使用這個字段作為@timestamp ,老外給的解決方法如下:
In your SQL query, typecast the timestamp as a string.
Use a mutate filter‘s convert option to typecast the field to a string prior to the date filter.
Use a mutate filter to copy the timestamp into @timestamp and overwrite the existing value (use the replace option).

我使用的方法:

    mutate {
      add_field => {"temp_ts" => "%{start_time}"}
    }
    date {
      match => ["temp_ts","ISO8601"]
      remove_field => ["temp_ts"]
    }

logstash-input-jdbc取mysql數據日期格式處理