2016-09-27 1 views
0

У меня есть следующий файл CSVвставка данных в elasticsearch с использованием logstash и визуализируют в kibana

tstp,voltage_A_real,voltage_B_real,voltage_C_real #header not present in actual file 
2000-01-01 00:00:00,2535.53,-1065.7,-575.754 
2000-01-01 01:00:00,2528.31,-1068.67,-576.866 
2000-01-01 02:00:00,2528.76,-1068.49,-576.796 
2000-01-01 03:00:00,2530.12,-1067.93,-576.586 
2000-01-01 04:00:00,2531.02,-1067.56,-576.446 
2000-01-01 05:00:00,2533.28,-1066.63,-576.099 
2000-01-01 06:00:00,2535.53,-1065.7,-575.754 
2000-01-01 07:00:00,2535.53,-1065.7,-575.754 
.... 

Я пытаюсь вставить данные в elasticsearch через logstash и имеет следующий logstash CONFIG

input { 
    file { 
     path => "path_to_csv_file" 
     sincedb_path=> "/dev/null" 
     start_position => beginning 
    } 
} 
filter { 
    csv { 
     columns => [ 
      "tstp", 
      "Voltage_A_real", 
      "Voltage_B_real", 
      "Voltage_C_real" 
     ] 
     separator => "," 
     } 
    date { 
     match => [ "tstp", "yyyy-MM-dd HH:mm:ss"] 
    } 
    mutate { 
     convert => ["Voltage_A_real", "float"] 
     convert => ["Voltage_B_real", "float"] 
     convert => ["Voltage_C_real", "float"] 
    } 
} 
output { 
    stdout { codec => rubydebug } 
    elasticsearch { 
     hosts => ["localhost:9200"] 
     action => "index" 
     index => "temp_load_index" 
    } 
} 

Моя продукция из рубидуба при запуске logstash -f conf_file -v составляет

{ 
      "message" => "2000-02-18 16:00:00,2532.38,-1067,-576.238", 
      "@version" => "1", 
     "@timestamp" => "2000-02-18T21:00:00.000Z", 
       "path" => "path_to_csv", 
       "host" => "myhost", 
       "tstp" => "2000-02-18 16:00:00", 
    "Voltage_A_real" => 2532.38, 
    "Voltage_B_real" => -1067.0, 
    "Voltage_C_real" => -576.238 
} 

Однако я вижу только 2 события в кибане, когда я смотрю на приборную панель, и у обоих есть текущая дата-дата, а не 2000 года, что является диапазоном моих данных. Может ли кто-нибудь помочь мне выяснить, что происходит?

Образец объекта kibana выглядит следующим образом

{ 
    "_index": "temp_load_index", 
    "_type": "logs", 
    "_id": "myid", 
    "_score": null, 
    "_source": { 
    "message": "2000-04-02 02:00:00,2528.76,-1068.49,-576.796", 
    "@version": "1", 
    "@timestamp": "2016-09-27T05:15:29.753Z", 
    "path": "path_to_csv", 
    "host": "myhost", 
    "tstp": "2000-04-02 02:00:00", 
    "Voltage_A_real": 2528.76, 
    "Voltage_B_real": -1068.49, 
    "Voltage_C_real": -576.796, 
    "tags": [ 
     "_dateparsefailure" 
    ] 
    }, 
    "fields": { 
    "@timestamp": [ 
     1474953329753 
    ] 
    }, 
    "sort": [ 
    1474953329753 
    ] 
} 
+0

Эти два события, которые вы видите в Kibana имеют '_dateparsefailure' тег, так что это означает, что' tstp' поле не может быть разобран, поэтому 'поле @ timestamp' не был заменен значением из журналы, оставляя время, в которое Logstash получил журнал. – baudsp

ответ

0

При открытии Kibana, как правило, показывают вам только события в последние 15 минут, в зависимости от @timestamp поля. Поэтому вам нужно установить фильтр времени на соответствующий временной диапазон (cf documentation), в вашем случае, используя абсолютную опцию и начиная с 2000-01-01.

Или вы можете поместить разобранную временную метку в другое поле (например, original_tst), так что @timestamp, добавленный Logstash, будет сохранен.

date { 
    match => [ "tstp", "yyyy-MM-dd HH:mm:ss"] 
    target => "original_tst" 
}