Я использую комбинацию Logstash и сервиса AWS Elasticsearch для индексации журналов доступа S3.
Журналы собираются в корзине S3, обрабатываются входным фильтром Logstash S3, переименовываются после обработки и затем архивируются в другой корзине. Я использую этот метод, чтобы количество файлов журнала доступа, которые Logstash должен обрабатывать при каждой ротации, было как можно меньше.
Однако журналы не обрабатываются в реальном времени. Когда я смотрю на Kibana или запрашиваю Elasticseach, самая последняя запись журнала, которую я вижу, будет последней записью журнала за предыдущий час. Я никогда не вижу записей в журнале, которые старше 1 часа.
Я не вижу ничего в параметрах конфигурации ввода s3, чтобы контролировать это поведение. Есть вариант настройки интервала, который я установил на 120 секунд. Предполагается, что это даст команду Logstash опрашивать корзину S3, которая содержит журналы, каждые 2 минуты.
Я также использую эту систему Logstash для обработки ввода системного журнала с различных серверов, которая обрабатывает журналы в режиме реального времени.
Это что-то особенное для входного фильтра S3 в Logstash?
Эта проблема, по-видимому, возникает из-за того, как S3 создает журналы доступа, а не из-за чего-либо, связанного с Elasticsearch или Logstash.
В соответствии с:
http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html
Записи журнала доступа к серверу доставляются в оптимальном режиме. Большинство запросов для корзины, которая правильно настроена для ведения журнала, приведет к доставке записи журнала, и большинство записей журнала будет доставлено в течение нескольких часов после того, как они были записаны.
Из того, что я вижу, глядя на фактические файлы, содержащие журналы в целевом сегменте S3, вы никогда не увидите запись журнала, возраст которой меньше 1 часа.
Вы увидите записи журналов, возраст которых составляет ровно 1 час, что объясняет, что вы видите записи вплоть до часовой отметки.
Таким образом, и Elasticsearch, и Logstash работают должным образом, и проблема заключается в AWS S3.