La entrega de transmisiones de Amazon Data Firehose a Apache Iceberg Tables en Amazon S3 está en versión preliminar y está sujeta a cambios.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Agente de Kinesis
El agente Amazon Kinesis es una aplicación de software Java independiente que sirve como implementación de referencia para mostrar cómo puede recopilar y enviar datos a Firehose. El agente supervisa continuamente un conjunto de archivos y envía nuevos datos a la transmisión de Firehose. El agente muestra cómo gestionar la rotación de archivos, los puntos de control y los reintentos en caso de error. Muestra cómo puede entregar sus datos de forma fiable, puntual y sencilla. También muestra cómo se pueden emitir CloudWatch métricas para supervisar y solucionar mejor los problemas del proceso de streaming. Para obtener más información, amazon-kinesis-agentawslabs/
De forma predeterminada, los registros de cada archivo se analizan en función del carácter de nueva línea ('\n'
). Sin embargo, el agente también se puede configurar para analizar registros multilínea (consulte Parámetros de configuración del agente).
Puede instalar el agente en entornos de servidor basados en Linux, como servidores web, de registro o de base de datos. Tras instalar el agente, configúrelo especificando los archivos que se van a supervisar y el flujo Firehose de los datos. Una vez configurado el agente, recopila datos de los archivos de forma duradera y los envía de forma fiable a la transmisión Firehose.
Temas
-
Su sistema operativo debe ser Amazon Linux o Red Hat Enterprise Linux, versión 7 o posterior.
-
La versión 2.0.0 o posterior del agente se ejecuta con la JRE versión 1.8 o posterior. La versión 1.1.x del agente se ejecuta con la JRE 1.7 o una versión posterior.
-
Si utilizas Amazon EC2 para ejecutar tu agente, lanza tu EC2 instancia.
-
El IAM rol o AWS las credenciales que especifique deben tener permiso para realizar la PutRecordBatchoperación Amazon Data Firehose para que el agente envíe datos a su transmisión de Firehose. Si habilita la CloudWatch supervisión del agente, también necesitará permiso para realizar la CloudWatch PutMetricDataoperación. Para obtener más información Control del acceso con Amazon Data FirehoseSupervise el estado de Kinesis Agent, consulte y Autenticación y control de acceso para Amazon CloudWatch.
Administre sus AWS credenciales mediante uno de los siguientes métodos:
-
Cree un proveedor de credenciales personalizado. Para obtener más información, consulte Cree proveedores de credenciales personalizados.
-
Especifique un IAM rol al lanzar la EC2 instancia.
-
Especifique AWS las credenciales al configurar el agente (consulte las entradas correspondientes
awsAccessKeyId
yawsSecretAccessKey
en la tabla de configuración que aparece a continuaciónParámetros de configuración del agente). -
/etc/sysconfig/aws-kinesis-agent
Edítelo para especificar su AWS región y sus claves de AWS acceso. -
Si tu EC2 instancia está en una AWS cuenta diferente, crea un IAM rol para proporcionar acceso al servicio Amazon Data Firehose. Especifique ese rol al configurar el agente (consulte assumeRoleARNe assumeRoleExternalID). Utilice uno de los métodos anteriores para especificar las AWS credenciales de un usuario de la otra cuenta que tenga permiso para asumir este rol.
Puede crear un proveedor de credenciales personalizado e indicar su nombre de clase y ruta de archivo jar al agente de Kinesis en las siguientes opciones de configuración: userDefinedCredentialsProvider.classname
y userDefinedCredentialsProvider.location
. Para obtener las descripciones de estas dos opciones de configuración, consulte Parámetros de configuración del agente.
Para crear un proveedor de credenciales personalizado, defina una clase que implemente la interfaz AWS CredentialsProvider
, como la del ejemplo siguiente.
import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; public class
YourClassName
implements AWSCredentialsProvider { publicYourClassName
() { } public AWSCredentials getCredentials() { return new BasicAWSCredentials("key1
", "key2
"); } public void refresh() { } }
Su clase debe tener un constructor sin argumentos.
AWS invoca el método de actualización periódicamente para obtener las credenciales actualizadas. Si desea que el proveedor de credenciales proporcione credenciales diferentes a lo largo de su vida útil, incluya el código para actualizar las credenciales en este método. También puede dejar este método vacío si desea un proveedor de credenciales que ofrezca credenciales estáticas (no cambiantes).
Primero, conéctese a la instancia. Para obtener más información, consulte Connect to Your Instance en la Guía del EC2 usuario de Amazon. Si tiene problemas para conectarse, consulte Solución de problemas de conexión a su instancia en la Guía del EC2 usuario de Amazon.
A continuación, instale el agente siguiendo uno de los siguientes métodos.
-
Configuración del agente desde los repositorios de Amazon Linux
Este método solo funciona para instancias de Amazon Linux. Utilice el siguiente comando:
sudo yum install –y aws-kinesis-agent
Agent v 2.0.0 o posterior se instala en ordenadores con el sistema operativo Amazon Linux 2 (AL2). Esta versión del agente requiere la versión 1.8 o posterior de Java. Si la versión de Java requerida aún no está presente, el proceso de instalación del agente la instala. Para obtener más información sobre Amazon Linux 2, consulte https://aws.amazon.com/amazon-linux-2/
. -
Configuración del agente desde el repositorio de Amazon S3
Este método funciona para Red Hat Enterprise Linux, así como para las instancias de Amazon Linux 2, ya que instala el agente desde el repositorio disponible públicamente. Utilice el siguiente comando para descargar e instalar la versión más reciente de la versión 2.x.x del agente:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm
Para instalar una versión concreta del agente, especifique el número de versión en el comando. Por ejemplo, el siguiente comando instala la versión 2.0.1 del agente.
sudo yum install –y https://streaming-data-agent.s3.amazonaws.com/aws-kinesis-agent-2.0.1-1.amzn1.noarch.rpm
Si tiene Java 1.7 y no quiere actualizar la versión, puede descargar la versión 1.x.x del agente, que es compatible con Java 1.7. Por ejemplo, para descargar la versión 1.1.6 del agente, puede utilizar el comando siguiente:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-1.1.6-1.amzn1.noarch.rpm
La versión 1.x.x más reciente del agente se puede descargar mediante el siguiente comando:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
-
Para configurar el agente desde el GitHub repositorio
-
En primer lugar, asegúrese de que tiene instalada la versión de Java requerida, en función de la versión del agente.
-
Descargue el agente del repositorio de awslabs/ amazon-kinesis-agent
GitHub . -
Instale el agente. Para ello, diríjase al directorio de descargas y ejecute el siguiente comando:
sudo ./setup --install
-
-
Configuración del agente en un contenedor de Docker
El agente de Kinesis también puede ejecutarse en un contenedor además de a través de la base de contenedores amazonlinux. Utilice el siguiente Dockerfile y ejecute
docker build
.FROM amazonlinux RUN yum install -y aws-kinesis-agent which findutils COPY agent.json /etc/aws-kinesis/agent.json CMD ["start-aws-kinesis-agent"]
Configuración e inicio del agente
-
Abra y edite el archivo de configuración (como superusuario si utiliza permisos de acceso de archivo predeterminado):
/etc/aws-kinesis/agent.json
En este archivo de configuración, especifique los archivos (
"filePattern"
) desde los que el agente recopila los datos y el nombre de la secuencia Firehose ("deliveryStream"
) a la que el agente envía los datos. El nombre de archivo es un patrón y el agente reconoce las rotaciones de archivos. No puede rotar más de un archivo ni crear más de uno nuevo por segundo. El agente usa la marca de tiempo de creación del archivo para determinar qué archivos rastrear y seguir en tu transmisión de Firehose. Crear nuevos archivos o rotar los archivos más de una vez por segundo impide al agente diferenciarlos correctamente.{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "yourdeliverystream
" } ] }La AWS región predeterminada es
us-east-1
. Si utiliza una región diferente, añada el ajustefirehose.endpoint
al archivo de configuración y especifique el punto de enlace de la región. Para obtener más información, consulte Parámetros de configuración del agente. -
Comience el agente de forma manual:
sudo service aws-kinesis-agent start
-
Configure el agente para iniciarse al arrancar el sistema (opcional):
sudo chkconfig aws-kinesis-agent on
El agente ya está se ejecutando como un servicio de sistema en segundo plano. Supervisa continuamente los archivos especificados y envía datos a la secuencia Firehose especificada. La auditoría de actividad se registra en /var/log/aws-kinesis-agent/aws-kinesis-agent.log
.
El agente admite dos opciones de configuración obligatorias, filePattern
y deliveryStream
, además de configuraciones opcionales para activar características adicionales. Las opciones de configuración obligatorias y opcionales se especifican en /etc/aws-kinesis/agent.json
.
Cada vez que cambie el archivo de configuración, debe detener y comenzar el agente con los siguientes comandos:
sudo service aws-kinesis-agent stop
sudo service aws-kinesis-agent start
También puede hacerlo con el siguiente comando:
sudo service aws-kinesis-agent restart
Las opciones de configuración generales son las siguientes.
Opción de configuración | Descripción |
---|---|
assumeRoleARN |
El nombre del recurso de Amazon (ARN) del rol que asumirá el usuario. Para obtener más información, consulte Delegar el acceso a AWS varias cuentas mediante IAM roles en la Guía del IAM usuario. |
assumeRoleExternalId |
Un identificador opcional que determina quién puede asumir el rol. Para obtener más información, consulte Cómo utilizar un identificador externo en la Guía del IAM usuario. |
awsAccessKeyId |
AWS ID de clave de acceso que anula las credenciales predeterminadas. Este ajuste tiene prioridad sobre los demás proveedores de credenciales. |
awsSecretAccessKey |
AWS clave secreta que anula las credenciales predeterminadas. Este ajuste tiene prioridad sobre los demás proveedores de credenciales. |
cloudwatch.emitMetrics |
Permite que el agente emita métricas CloudWatch si se ha establecido (true). Predeterminado: true |
cloudwatch.endpoint |
El punto final regional de CloudWatch. Valor predeterminado: |
firehose.endpoint |
El punto final regional de Amazon Data Firehose. Valor predeterminado: |
sts.endpoint |
El punto de enlace regional del servicio de token AWS de seguridad. Valor predeterminado: |
userDefinedCredentialsProvider.classname |
Si define un proveedor de credenciales personalizado, proporcione su nombre de clase completo mediante esta configuración. No incluya .class al final del nombre de la clase. |
userDefinedCredentialsProvider.location |
Si define un proveedor de credenciales personalizado, utilice esta configuración para especificar la ruta absoluta del archivo jar que contiene el proveedor de credenciales personalizado. El agente también busca el archivo jar en la siguiente ubicación: /usr/share/aws-kinesis-agent/lib/ . |
Las opciones de configuración de flujo son las siguientes.
Opción de configuración | Descripción |
---|---|
aggregatedRecordSizeBytes |
Para hacer que el agente agregue registros y, a continuación, los coloque en la transmisión Firehose en una sola operación, especifique esta configuración. Configúrelo en el tamaño que desee que tenga el registro agregado antes de que el agente lo coloque en la transmisión Firehose. Valor predeterminado: 0 (sin agregación) |
dataProcessingOptions |
La lista de opciones de procesamiento que se aplica a cada registro analizado antes de enviarlo a la transmisión Firehose. Las opciones de procesamiento se realizan en el orden especificado. Para obtener más información, consulte Utilice el agente para preprocesar los datos. |
deliveryStream |
[Obligatorio] El nombre del arroyo Firehose. |
filePattern |
[Obligatorio] Un glob para los archivos que deben ser monitorizados por el agente. Cualquier archivo que coincida con este patrón es seleccionado y monitorizado automáticamente por el agente. En todos los archivos que coincidan con este patrón, conceda permisos de lectura a importanteEl agente recoge cualquier archivo que coincida con este patrón. Para asegurarse de que el agente no recoge registros no deseados, seleccione este patrón con precaución. |
initialPosition |
La posición inicial desde la que el archivo comenzó a ser analizado. Los valores válidos son Valor predeterminado: |
maxBufferAgeMillis |
El tiempo máximo, en milisegundos, durante el que el agente almacena los datos en búfer antes de enviarlos a la transmisión Firehose. Rango de valores: 1000 - 900 000 (de 1 segundo a 15 minutos) Valor predeterminado: 60 000 (1 minuto) |
maxBufferSizeBytes |
El tamaño máximo, en bytes, para el que el agente almacena los datos en búfer antes de enviarlos a la transmisión Firehose. Rango de valores: 1 - 4 194 304 (4 MB) Valor predeterminado: 4 194 304 (4 MB) |
maxBufferSizeRecords |
El número máximo de registros para los que el agente almacena datos en búfer antes de enviarlos a la transmisión Firehose. Rango de valores: 1 - 500 Predeterminado: 500 |
minTimeBetweenFilePollsMillis |
El intervalo de tiempo, en milisegundos, en el que el agente sondea y analiza los archivos monitorizados para identificar datos nuevos. Intervalo de valores: 1 o más Predeterminado: 100 |
multiLineStartPattern |
El patrón para identificar el comienzo de un registro. Un registro consta de una línea que coincide con el patrón y de líneas siguientes que no coinciden con el patrón. Los valores válidos son expresiones regulares. De forma predeterminada, cada línea en los archivos de registro se analiza como un registro. |
skipHeaderLines |
La cantidad de líneas de los archivos monitorizados, a partir de la primera, que el agente debe omitir en el momento de analizarlos. Intervalo de valores: 0 o más Cantidad predeterminada: 0 (cero) |
truncatedRecordTerminator |
La cadena que el agente utiliza para truncar un registro analizado cuando el tamaño del registro supera el límite de tamaño de registro de Amazon Data Firehose. (1000 KB) Valor predeterminado: |
Puede configurar el agente para que monitorice varios directorios de archivos y envíe datos a varias secuencias especificando varias opciones de configuración de secuencia. En el siguiente ejemplo de configuración, el agente supervisa dos directorios de archivos y envía datos a una transmisión de datos de Kinesis y a una transmisión de Firehose, respectivamente. Puede especificar puntos de enlace diferentes para Kinesis Data Streams y Amazon Data Firehose, de modo que la transmisión de datos y la transmisión de Firehose no tengan que estar en la misma región.
{ "cloudwatch.emitMetrics":
true
, "kinesis.endpoint": "https://your/kinesis/endpoint
", "firehose.endpoint": "https://your/firehose/endpoint
", "flows": [ { "filePattern": "/tmp/app1.log*
", "kinesisStream": "yourkinesisstream
" }, { "filePattern": "/tmp/app2.log*
", "deliveryStream": "yourfirehosedeliverystream
" } ] }
Para obtener más información detallada sobre el uso del agente con Amazon Kinesis Data Streams, consulte Writing to Amazon Kinesis Data Streams with Kinesis Agent.
El agente puede preprocesar los registros analizados de los archivos monitorizados antes de enviarlos a la transmisión de Firehose. Para habilitar esta característica, añada la opción de configuración dataProcessingOptions
al flujo de archivos. Puede añadir una o más opciones de procesamiento que se ejecutarán en el orden especificado.
El agente es compatible con las siguientes opciones de procesamiento. Dado que el agente es de código abierto, el usuario puede desarrollar y ampliar sus opciones de procesamiento. Puede descargar el agente desde Kinesis Agent
Opciones de procesamiento
SINGLELINE
-
Elimina los caracteres de nueva línea y los espacios situados al principio y al final de las líneas para convertir un registro multilínea en un registro de una sola línea.
{ "optionName": "SINGLELINE" }
CSVTOJSON
-
Convierte un registro de un formato separado por delimitadores a un formato. JSON
{ "optionName": "CSVTOJSON", "customFieldNames": [ "
field1
", "field2
",...
], "delimiter": "yourdelimiter
" }customFieldNames
-
[Obligatorio] Los nombres de los campos utilizados como claves en cada par de valores JSON clave. Por ejemplo, si especifica
["f1", "f2"]
, el registro "v1, v2" se convierte en{"f1":"v1","f2":"v2"}
. delimiter
-
La cadena utilizada como delimitador en el registro. El valor predeterminado es una coma (,).
LOGTOJSON
-
Convierte un registro de un formato de registro a un JSON formato. Los formatos de registro admitidos son Apache Common Log, Apache Combined Log, Apache Error Log y RFC3164 Syslog.
{ "optionName": "LOGTOJSON", "logFormat": "
logformat
", "matchPattern": "yourregexpattern
", "customFieldNames": [ "field1
", "field2
",…
] }logFormat
-
[Obligatorio] El formato de entrada del registro. Los valores posibles son los siguientes:
-
COMMONAPACHELOG
: formato común de registro de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}
". -
COMBINEDAPACHELOG
: formato combinado de registro de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}
". -
APACHEERRORLOG
: formato de registro de errores de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}
". -
SYSLOG
— El formato RFC3164 Syslog. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "%{timestamp} %{hostname} %{program}[%{processid}]: %{message}
".
-
matchPattern
-
Sobrescribe el patrón predeterminado del formato de log especificado. Utilice esta configuración para extraer valores de entradas de log si utilizan un formato personalizado. Si especifica
matchPattern
, también debe especificarcustomFieldNames
. customFieldNames
-
Los nombres de los campos personalizados utilizados como claves en cada par de valores JSON clave. Utilice esta opción para definir nombres de campos para valores extraídos de
matchPattern
, o sobrescriba los nombres de campos de los formatos de logs predefinidos.
ejemplo : LOGTOJSON Configuración
A continuación, se muestra un ejemplo de LOGTOJSON
configuración para una entrada de Apache Common Log convertida al JSON formato:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }
Antes de la conversión:
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
Después de la conversión:
{"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
ejemplo : LOGTOJSON Configuración con campos personalizados
Este es otro ejemplo de configuración LOGTOJSON
:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }
Con este ajuste de configuración, la misma entrada del registro común de Apache del ejemplo anterior se convierte al JSON formato siguiente:
{"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
ejemplo : Convertir una entrada de registro con Formato común de registro de Apache
La siguiente configuración de flujo convierte una entrada del registro común de Apache en un JSON formato de registro de una sola línea:
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
ejemplo : Convertir registros multilínea
La siguiente configuración de flujo analiza aquellos registros multilínea cuya primera línea comience por "[SEQUENCE=
". Primero, cada registro se convierte en un registro de una línea. Después, se extraen los valores del registro basándose en tabulaciones delimitadoras. Los valores extraídos se asignan a customFieldNames
valores específicos para formar un registro de una sola línea en formato. JSON
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "multiLineStartPattern": "\\[SEQUENCE=
", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1
", "field2
", "field3
" ], "delimiter": "\\t
" } ] } ] }
ejemplo : LOGTOJSON Configuración con patrón de coincidencia
Este es un ejemplo de LOGTOJSON
configuración para una entrada del registro común de Apache convertida al JSON formato, omitiendo el último campo (bytes):
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }
Antes de la conversión:
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
Después de la conversión:
{"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}
Inicie automáticamente el agente al iniciar el sistema.
sudo chkconfig aws-kinesis-agent on
Compruebe el estado del agente:
sudo service aws-kinesis-agent status
Detener el agente:
sudo service aws-kinesis-agent stop
Leer el archivo de registro del agente desde esta ubicación:
/var/log/aws-kinesis-agent/aws-kinesis-agent.log
Desinstalar el agente:
sudo yum remove aws-kinesis-agent
¿Hay un agente de Kinesis para Windows?
El agente de Kinesis para Windows es un software diferente del agente de Kinesis para plataformas Linux.
¿Por qué se ralentiza el agente de Kinesis o aumenta el valor de RecordSendErrors
?
Normalmente esto se debe a la limitación de Kinesis. Compruebe la WriteProvisionedThroughputExceeded
métrica de las transmisiones de Kinesis Data Streams o ThrottledRecords
la métrica de las transmisiones de Firehose. Cualquier aumento desde 0 en estas métricas indica que es necesario aumentar los límites de flujos. Para obtener más información, consulte Límites de transmisión de datos de Kinesis y transmisiones de Firehose.
Una vez que descarte la limitación, compruebe si el agente de Kinesis está configurado para seguir una gran cantidad de archivos pequeños. Se produce un retraso cuando el agente de Kinesis sigue un archivo nuevo, por lo que el agente de Kinesis debería seguir una pequeña cantidad de archivos de mayor tamaño. Intente consolidar los archivos de registro en archivos más grandes.
¿Por qué se producen excepciones java.lang.OutOfMemoryError
?
El agente de Kinesis no tiene memoria suficiente para gestionar la carga de trabajo actual. Intente aumentar JAVA_START_HEAP
y JAVA_MAX_HEAP
en /usr/bin/start-aws-kinesis-agent
y reinicie el agente.
¿Por qué se producen excepciones IllegalStateException : connection pool shut down
?
El agente de Kinesis no tiene suficientes conexiones para gestionar la carga de trabajo actual. Intente aumentar maxConnections
y maxSendingThreads
en los ajustes generales de configuración del agente en /etc/aws-kinesis/agent.json
. El valor predeterminado para estos campos es 12 veces los procesadores de tiempo de ejecución disponibles. Consulte AgentConfiguration.java
¿Cómo puedo depurar otro problema con el agente de Kinesis?
Los registros de nivel DEBUG
pueden habilitarse en /etc/aws-kinesis/log4j.xml
.
¿Cómo debo configurar el agente de Kinesis?
Cuanto menor sea el valor de maxBufferSizeBytes
, más frecuentemente enviará datos el agente de Kinesis. Esto puede ser bueno ya que disminuye el tiempo de entrega de los registros, pero también aumenta las solicitudes por segundo a Kinesis.
¿Por qué el agente de Kinesis envía registros duplicados?
Esto ocurre debido a una mala configuración en el seguimiento de archivos. Asegúrese de que cada fileFlow’s filePattern
solo coincida con un archivo. Esto también puede ocurrir si el modo logrotate
que se está utilizando está en modo copytruncate
. Intente cambiar al modo predeterminado o al de creación para evitar la duplicación. Para obtener más información sobre la gestión de registros duplicados, consulte Handling Duplicate Records.