2017-02-10 47 views
0

У меня есть метки из файла журнала, как { «ц»: «1486418325.948487»} My инфраструктуры «filebeat» 5.2.0 -> «elasticsearch» 5,2любой тип данных elasticsearch, соответствующий десятичной метке времени?

Я пытался картографирования «ц» к «дате "-" epoch_second ", но es записи не удалось в filebeat.

PUT /auth_auditlog 
{ 
    "mappings": { 
    "auth-auditlogs": { 
     "properties": { 
     "ts": { 
      "type": "date", 
      "format": "epoch_second" 
     } 
     } 
    } 
    } 
} 

ГЗС ошибка filebeat как

WARN Can not index event (status=400): {"type":"mapper_parsing_exception","reason":"failed to parse [ts]","caused_by":{"type":"illegal_argument_exception","reason":"Invalid format: \"1486418325.948487\""}} 

Я попытался использовать «1486418325» в порядке, так что я предполагаю, что эс не принимает десятичное формат метки времени. Тем не менее, это временная метка вывода по умолчанию для python.

Моя цель - правильно напечатать в поиске эластиков. Я хочу использовать ts как оригинальную временную метку в elasticsearch. Любое решение приветствуется, кроме как изменить исходные данные журнала!

ответ

1

У продукта Filebeat нет процессора для этого типа вещей. Вы не можете заменить @timestamp на тот, который имеет ваш журнал в Filebeat. Что вы можете сделать, это отправить этот материал в logstash и разрешить эпоху синтаксического анализа фильтра date.

date { 
    match => ["timestamp","UNIX","UNIX_MS"] 
} 

Другим вариантом было бы использовать узел глотают. Хотя я не использовал это сам, кажется, он также может выполнять эту работу. Ознакомьтесь с документами here.

+0

Да. В ESX серии 5.x он поставляется с [процессором даты] (https://www.elastic.co/guide/en/elasticsearch/reference/master/date-processor.html) для обработки 'date { } 'фильтр внутри ES, не прибегая к полномасштабному конвейеру logstash. – sysadmin1138