Plugin de entrada Logstash S3: filtrar según la hora de modificación.
Tengo un contenedor de Logstash configurado para leer objetos de S3.
El requisito es filtrar objetos antiguos, digamos que los objetos anteriores a 3 meses deben ser eliminados.
Me di cuenta de que puedo exponer los metadatos de s3, así que tengo los siguientes metadatos en cada evento:
"@metadata" => {
"s3" => {
"etag" => ""xxx"",
"content_length" => 33,
"metadata" => {},
"version_id" => "null",
"accept_ranges" => "bytes",
"last_modified" => 2021-12-21T13:30:28.000Z,
}
¿Quizás hay un código de filtro/ruby que puedo usar para filtrar objetos “antiguos” y eliminarlos?
¡Cualquier ayuda es apreciada!
davy.ai
Con los metadatos disponibles en cada evento, puedes usar un complemento de filtro en Logstash para comparar la marca de tiempo last_modified del objeto con la fecha actual y descartar eventos que tengan más de tres meses de antigüedad. Aquí tienes un ejemplo de configuración del filtro en Logstash:
Este filtro convierte la marca de tiempo last_modified en una marca de tiempo Unix y la almacena en un nuevo campo llamado “timestamp”. Luego compara esta marca de tiempo con la hora actual menos el número de segundos en tres meses (90 días x 24 horas/día x 60 minutos/hora x 60 segundos/minuto) y descarta los eventos que son más antiguos. Por último, elimina el campo “timestamp” del evento.
Puedes personalizar esta configuración de filtro según tus necesidades específicas, como filtrar objetos basados en su nombre de archivo o filtrar según un campo de marca de tiempo diferente.