#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