2016-03-12 4 views
0

Я хочу создать индекс ES в соответствии с датами, соответствующими лог-файлу. Я использую logstash CSV фильтр для обработки журналов. Например, данные журнала выглядят как нижеФильтр logstash csv создает имя индекса на основе timestamp

2016-02-21 00:02:32.238,123.abc.com,data 
2016-02-22 00:04:40.145,345.abc.com,data 

Ниже приведен файл конфигурации logstash. Очевидно, что индекс будет создан как testlog, однако я хочу, чтобы индекс был создан как testlog-2016.02.21 и testlog-2016.02.22, учитывая, что YYYY.mm.dd является предпочтительным форматом статистики для даты индекса. Я сделал это с фильтрами grok, и я пытаюсь добиться того же с помощью csv, но это, похоже, не работает.

filter { 
csv { 
    columns => [ "timestamp", "host", "data" ] 
    separator => "," 
    remove_field => ["message"] 
    } 
} 
output { 
    elasticsearch { 
      hosts => ["localhost:9200"] 
      index => "testlog" 
    } 
} 

Мы на Logstash 2.1.0, ES 2.1.0 и 4.3.0 Kibana версия

Все входы оценили

ответ

1

Вы должны указать поле @timestamp в фильтре, и вы также необходимо указать название вашего индекса как указано ниже:

filter { 
    csv { 
    columns => [ "timestamp", "host", "data" ] 
    separator => "," 
    remove_field => ["message"] 
    } 

    date { 
    match => [ "timestamp", "ISO8601" ] #specify timestamp format 
    timezone => "UTC" #specify timezone 
    target => "@timestamp" 
    } 
} 

output { 
    elasticsearch 
    hosts => ["localhost:9200"] 
    index => "testlog-%{+YYYY.MM.dd}" 
    } 
} 
Смежные вопросы