отправляйте старые файлы журналов по дате из файла журнала в индекс elasticsearch по дате файла журнала

#elasticsearch #logstash

Вопрос:

У меня есть несколько старых файлов журналов (по одному файлу в день). По умолчанию меткой времени индекса является дата создания индекса. Я пытаюсь создать индекс для каждого из этих файлов журнала, и я хочу, чтобы временная метка индекса, соответствующая каждому файлу журнала, совпадала с той, которая определена именем файла. учтите, что эти файлы журналов обрабатываются с помощью logstash: Пример строки журнала :
2021-10-27 09:13:16 225 INFO adminPortal.aspect.RequestLoggerAspect [http-nio-3030-exec-4] мой лог-файл conf :

 grok {  match =gt; { "message" =gt; "(?lt;timestampgt;%{YEAR}-%{MONTHNUM}-%   {MONTHDAY}  %{TIME}) %{LOGLEVEL:logLevel} %{JAVACLASS:className} [(?lt;threadnamegt;   [A-   Za-z0-9_-] )] %{GREEDYDATA:API_request_and_response}" }  }  date {  match =gt; [ "timestamp" , "YYYY-MM-dd HH:mm:ss.SSS" ]  target =gt; "@timestamp"  }  }  output{  elasticsearch {  hosts =gt; ["localhost:9200"]  index =gt; "admins-%{ YYYY.MM.dd}"  }'  

Комментарии:

1. Вы пытались узнать имя файла с помощью grok? grok { match =gt; [ "path", "/(?lt;filenamegt;[^/] ).log" ] } . После этого вы можете использовать имя файла при выводе. index =gt; "%{filename}"

2. вы имеете в виду, что хотите, чтобы старые записи журнала вошли в индексы, в которых используются даты, соответствующие датам в этих журналах? если это так, то вам нужно использовать фильтр дат в своей конфигурации

3. да ,я использовал фильтр даты, и у меня есть правильная метка времени, но она не заменяет @метку времени Образец строки журнала : 2021-10-27 09:13:16,225 INFO adminPortal.aspect. RequestLoggerAspect [http-nio-3030-exec-4]

4. @Mark Walkom Я ввел код. Вы можете мне помочь

5. Ваш фильтр даты неверен, разделитель миллисекунд-это запятая , , а не точка . , попробуйте изменить фильтр даты на YYYY-MM-dd HH:mm:ss,SSS