La diffusion de flux Amazon Data Firehose vers les tables Apache Iceberg dans Amazon S3 est en version préliminaire et peut faire l'objet de modifications.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Agent Kinesis
L'agent Amazon Kinesis est une application logicielle Java autonome qui sert d'implémentation de référence pour montrer comment collecter et envoyer des données à Firehose. L'agent surveille en permanence un ensemble de fichiers et envoie de nouvelles données à votre flux Firehose. L'agent montre comment vous pouvez gérer la rotation des fichiers, les points de contrôle et réessayer en cas d'échec. Il montre comment vous pouvez fournir vos données de manière fiable, rapide et simple. Il montre également comment vous pouvez émettre CloudWatch des métriques pour mieux surveiller et résoudre les problèmes liés au processus de streaming. Pour en savoir plus, awslabs/ amazon-kinesis-agent
Par défaut, les enregistrements sont analysés à partir de chaque fichier sur la base du caractère de saut de ligne ('\n'
). Toutefois, l'agent peut également être configuré pour analyser les enregistrements de plusieurs lignes (consultez Paramètres de configuration de l'agent).
Cet agent peut être installé dans des environnements basés sur des serveurs Linux tels que des serveurs Web, serveurs de journaux ou encore serveurs de base de données. Après avoir installé l'agent, configurez-le en spécifiant les fichiers à surveiller et le flux Firehose pour les données. Une fois l'agent configuré, il collecte de manière durable les données des fichiers et les envoie de manière fiable au flux Firehose.
Rubriques
-
Votre système d'exploitation doit être Amazon Linux ou Red Hat Enterprise Linux version 7 ou ultérieure.
-
La version 2.0.0 ou ultérieure de l'agent s'exécute avec JRE la version 1.8 ou ultérieure. La version 1.1.x de l'agent s'exécute avec JRE 1.7 ou version ultérieure.
-
Si vous utilisez Amazon EC2 pour exécuter votre agent, lancez votre EC2 instance.
-
Le IAM rôle ou les AWS informations d'identification que vous spécifiez doivent être autorisés à effectuer l'PutRecordBatchopération Amazon Data Firehose pour que l'agent envoie des données à votre flux Firehose. Si vous activez la CloudWatch surveillance pour l'agent, l'autorisation d'effectuer l' CloudWatch PutMetricDataopération est également nécessaire. Pour plus d'informations, consultez Contrôler l'accès avec Amazon Data FirehoseSurveiller l'état de santé de l'agent Kinesis, et Authentification et contrôle d'accès pour Amazon CloudWatch.
Gérez vos AWS informations d'identification à l'aide de l'une des méthodes suivantes :
-
Créez un fournisseur d'informations d'identification personnalisé. Pour plus de détails, consultez Créez des fournisseurs d'informations d'identification personnalisés.
-
Spécifiez un IAM rôle lorsque vous lancez votre EC2 instance.
-
Spécifiez les AWS informations d'identification lorsque vous configurez l'agent (voir les entrées pour
awsAccessKeyId
etawsSecretAccessKey
dans le tableau de configuration ci-dessousParamètres de configuration de l'agent). -
Modifiez
/etc/sysconfig/aws-kinesis-agent
pour spécifier votre AWS région et vos clés AWS d'accès. -
Si votre EC2 instance se trouve sur un autre AWS compte, créez un IAM rôle pour accéder au service Amazon Data Firehose. Spécifiez ce rôle lorsque vous configurez l'agent (voir assumeRoleARNet assumeRoleExternalID). Utilisez l'une des méthodes précédentes pour spécifier les AWS informations d'identification d'un utilisateur de l'autre compte autorisé à assumer ce rôle.
Vous pouvez créer un fournisseur d'informations d'identification personnalisées et donner son nom de classe et son chemin d'accès jar à l'agent Kinesis dans les paramètres de configuration suivants : userDefinedCredentialsProvider.classname
et userDefinedCredentialsProvider.location
. Pour obtenir la description de ces deux paramètres de configuration, veuillez consulter Paramètres de configuration de l'agent.
Pour créer un fournisseur d'informations d'identification personnalisé, définissez une classe qui implémente l'interface AWS CredentialsProvider
, comme celle de l'exemple suivant.
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() { } }
Votre classe doit avoir un constructeur qui ne prend aucun argument.
AWS invoque régulièrement la méthode d'actualisation pour obtenir des informations d'identification mises à jour. Si vous souhaitez que votre fournisseur d'informations d'identification fournisse différentes informations d'identification tout au long de sa durée de vie, incluez le code pour actualiser les informations d'identification dans cette méthode. Vous pouvez également laisser cette méthode vide si vous voulez un fournisseur d'informations d'identification qui vend des informations d'identification statiques (non modifiées).
Commencez par vous connecter à votre instance. Pour plus d'informations, consultez Connect to Your Instance dans le guide de EC2 l'utilisateur Amazon. Si vous rencontrez des difficultés pour vous connecter, consultez la section Résolution des problèmes liés à la connexion à votre instance dans le guide de EC2 l'utilisateur Amazon.
Ensuite, installez l'agent à l'aide d'une des méthodes suivantes.
-
Pour configurer l'agent à partir des référentiels Amazon Linux
Cette méthode fonctionne uniquement pour les instances Amazon Linux. Utilisez la commande suivante :
sudo yum install –y aws-kinesis-agent
L'agent v 2.0.0 ou version ultérieure est installé sur les ordinateurs dotés du système d'exploitation Amazon Linux 2 (AL2). Cette version de l'agent nécessite Java version 1.8 ou ultérieure. Si la version Java requise n'est pas encore présente, le processus d'installation de l'agent l'installe. Pour plus d'informations concernant Amazon Linux 2, consultez https://aws.amazon.com/amazon-linux-2/
. -
Pour configurer l'agent à partir d'un référentiel Amazon S3
Cette méthode fonctionne pour Red Hat Enterprise Linux, ainsi que pour les instances Amazon Linux 2, car elle installe l'agent à partir du référentiel accessible au public. Utilisez la commande suivante pour télécharger et installer la dernière version de la version 2.x.x de l'agent :
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm
Pour installer une version spécifique de l'agent, spécifiez le numéro de version dans la commande. Par exemple, la commande suivante installe la version 2.0.1 de l'agent.
sudo yum install –y https://streaming-data-agent.s3.amazonaws.com/aws-kinesis-agent-2.0.1-1.amzn1.noarch.rpm
Si vous utilisez Java 1.7 et que vous ne souhaitez pas le mettre à niveau, vous pouvez télécharger la version 1.x.x de l'agent, qui est compatible avec Java 1.7. Par exemple, pour télécharger la version 1.1.6 de l'agent, vous pouvez utiliser la commande suivante :
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-1.1.6-1.amzn1.noarch.rpm
La dernière version 1.x.x de l'agent peut être téléchargée à l'aide de la commande suivante :
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
-
Pour configurer l'agent à partir du GitHub dépôt
-
Tout d'abord, assurez-vous que la version de Java requise est installée, en fonction de la version de l'agent.
-
Téléchargez l'agent depuis le dépôt awslabs/ amazon-kinesis-agent
GitHub . -
Installez l'agent en accédant au répertoire de téléchargement et en exécutant la commande suivante :
sudo ./setup --install
-
-
Configuration de l'agent dans un conteneur Docker
L'agent Kinesis peut également être exécuté dans un conteneur via la base de conteneurs amazonlinux. Utilisez le Dockerfile suivant, puis exécutez
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"]
Pour configurer et démarrer l'agent
-
Ouvrez le fichier de configuration et modifiez-le (en tant que super-utilisateur si vous utilisez les autorisations d'accès fichier par défaut) :
/etc/aws-kinesis/agent.json
Dans ce fichier de configuration, spécifiez les fichiers (
"filePattern"
) à partir desquels l'agent collecte les données, ainsi que le nom du flux Firehose ("deliveryStream"
) auquel l'agent envoie les données. Le nom de fichier est un modèle et l'agent reconnaît les rotations de fichier. Vous pouvez effectuer une rotation de fichier ou créer de nouveaux fichiers pas plus d'une fois par seconde. L'agent utilise l'horodatage de création des fichiers pour déterminer les fichiers à suivre et à intégrer dans votre flux Firehose. La création de fichiers ou la rotation de fichiers plus d'une fois par seconde ne permet pas à l'agent de différencier correctement les fichiers.{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "yourdeliverystream
" } ] }La AWS région par défaut est
us-east-1
. Si vous utilisez une autre région, ajoutez le paramètrefirehose.endpoint
au fichier de configuration, en spécifiant le point de terminaison de votre région. Pour de plus amples informations, veuillez consulter Paramètres de configuration de l'agent. -
Démarrez l'agent manuellement :
sudo service aws-kinesis-agent start
-
(Facultatif) Configurez l'agent pour qu'il soit lancé au démarrage du système :
sudo chkconfig aws-kinesis-agent on
L'agent fonctionne maintenant en arrière-plan en tant que service système. Il surveille en permanence les fichiers spécifiés et envoie des données au flux Firehose spécifié. L'activité de l'agent est enregistrée dans /var/log/aws-kinesis-agent/aws-kinesis-agent.log
.
L'agent prend en charge les deux paramètres de configuration obligatoires filePattern
et deliveryStream
, plus les paramètres de configuration facultatifs des fonctionnalités supplémentaires. Vous pouvez spécifier aussi bien des paramètres de configuration obligatoires que facultatifs dans /etc/aws-kinesis/agent.json
.
Chaque fois que vous modifiez le fichier de configuration, vous devez arrêter et démarrer l'agent en utilisant les commandes suivantes :
sudo service aws-kinesis-agent stop
sudo service aws-kinesis-agent start
Vous pouvez également utiliser la commande suivante :
sudo service aws-kinesis-agent restart
Les paramètres de configuration générale sont indiqués ci-après.
Paramètre de configuration | Description |
---|---|
assumeRoleARN |
Le nom de ressource Amazon (ARN) du rôle à assumer par l'utilisateur. Pour plus d'informations, consultez la section Accès délégué entre AWS comptes à l'aide de IAM rôles dans le guide de IAM l'utilisateur. |
assumeRoleExternalId |
Identifiant facultatif qui détermine qui peut assumer le rôle. Pour plus d'informations, consultez la section Comment utiliser un identifiant externe dans le guide de IAM l'utilisateur. |
awsAccessKeyId |
AWS ID de clé d'accès qui remplace les informations d'identification par défaut. Ce paramètre est prioritaire sur tous les autres fournisseurs d'informations d'identification. |
awsSecretAccessKey |
AWS clé secrète qui remplace les informations d'identification par défaut. Ce paramètre est prioritaire sur tous les autres fournisseurs d'informations d'identification. |
cloudwatch.emitMetrics |
Permet à l'agent d'émettre des métriques CloudWatch s'il est défini (true). Valeur par défaut : true |
cloudwatch.endpoint |
Le point de terminaison régional pour CloudWatch. Par défaut : |
firehose.endpoint |
Point de terminaison régional pour Amazon Data Firehose. Par défaut : |
sts.endpoint |
Point de terminaison régional pour le service AWS de jetons de sécurité. Par défaut : |
userDefinedCredentialsProvider.classname |
Si vous définissez un fournisseur d'informations d'identification personnalisées, indiquez son nom de classe complet à l'aide de ce paramètre. N'ajoutez pas .class à la fin du nom de la classe. |
userDefinedCredentialsProvider.location |
Si vous définissez un fournisseur d'informations d'identification personnalisées, utilisez ce paramètre pour spécifier le chemin absolu du fichier jar contenant le fournisseur d'informations d'identification personnalisées. L'agent recherche également le fichier jar à l'emplacement suivant : /usr/share/aws-kinesis-agent/lib/ . |
Les paramètres de configuration de flux sont indiqués ci-après.
Paramètre de configuration | Description |
---|---|
aggregatedRecordSizeBytes |
Pour que l'agent agrège les enregistrements puis les place dans le flux Firehose en une seule opération, spécifiez ce paramètre. Réglez-le à la taille que vous souhaitez attribuer à l'enregistrement agrégé avant que l'agent ne le place dans le flux Firehose. Par défaut : 0 (pas de regroupement) |
dataProcessingOptions |
La liste des options de traitement appliquées à chaque enregistrement analysé avant son envoi au flux Firehose. Les options de traitement sont exécutées dans l'ordre spécifié. Pour de plus amples informations, veuillez consulter Utiliser l'agent pour prétraiter les données. |
deliveryStream |
[Obligatoire] Nom du stream Firehose. |
filePattern |
[Obligatoire] Modèle global des fichiers qui doivent être surveillés par l'agent. N'importe quel fichier qui correspond à ce modèle est collecté automatiquement par l'agent et surveillé. Pour tous les fichiers correspondant à ce modèle, accordez l'autorisation de lecture à ImportantL'agent récupère tous les fichiers correspondant à ce modèle. Pour vous assurer que l'agent ne récupère pas d’autres enregistrements que ceux prévus à cet effet, choisissez soigneusement ce modèle. |
initialPosition |
Position initiale à partir de laquelle le fichier a commencé à être analysé. Les valeurs valides sont Par défaut : |
maxBufferAgeMillis |
Durée maximale, en millisecondes, pendant laquelle l'agent met les données en mémoire tampon avant de les envoyer au flux Firehose. Plage de valeurs : 1 000 à 900 000 (1 seconde à 15 minutes) Par défaut : 60 000 (1 minute) |
maxBufferSizeBytes |
Taille maximale, en octets, pour laquelle l'agent met en mémoire tampon les données avant de les envoyer au flux Firehose. Plage de valeurs : 1 à 4 194 304 (4 Mo) Par défaut : 4 194 304 (4 Mo) |
maxBufferSizeRecords |
Le nombre maximum d'enregistrements pour lesquels l'agent met les données en mémoire tampon avant de les envoyer au flux Firehose. Plage de valeurs : 1 à 500 Par défaut : 500 |
minTimeBetweenFilePollsMillis |
Fréquence, en millisecondes, à laquelle l'agent interroge et analyse les fichiers surveillés pour rechercher les nouvelles données. Plage de valeurs : 1 ou plus Par défaut : 100 |
multiLineStartPattern |
Modèle d'identification du début d'un enregistrement. Un enregistrement se compose d'une ligne qui correspond au modèle et de lignes suivantes qui ne correspondent pas au modèle. Les valeurs valides sont les expressions régulières. Par défaut, chaque nouvelle ligne comprise dans les fichiers journaux est analysée comme étant un enregistrement. |
skipHeaderLines |
Nombre de lignes que l'agent doit ignorer lors de l'analyse au début des fichiers surveillés. Plage de valeurs : 0 ou plus Par défaut : 0 (zéro) |
truncatedRecordTerminator |
Chaîne utilisée par l'agent pour tronquer un enregistrement analysé lorsque la taille de l'enregistrement dépasse la limite de taille d'enregistrement d'Amazon Data Firehose. (1,000 Ko) Par défaut : |
En spécifiant plusieurs paramètres de configuration de flux, vous pouvez configurer l'agent pour surveiller plusieurs répertoires de fichiers et envoyer des données dans plusieurs flux. Dans l'exemple de configuration suivant, l'agent surveille deux répertoires de fichiers et envoie des données à un flux de données Kinesis et à un flux Firehose respectivement. Vous pouvez spécifier différents points de terminaison pour Kinesis Data Streams et Amazon Data Firehose afin que votre flux de données et votre flux Firehose n'aient pas besoin de se trouver dans la même région.
{ "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
" } ] }
Pour plus d'informations sur l'utilisation de l'agent avec Amazon Kinesis Data Streams, consultez Writing to Amazon Kinesis Data Streams with Kinesis Agent.
L'agent peut prétraiter les enregistrements analysés à partir des fichiers surveillés avant de les envoyer à votre flux Firehose. Vous pouvez activer cette fonctionnalité en ajoutant le paramètre de configuration dataProcessingOptions
à votre flux de fichiers. Une ou plusieurs options de traitement peuvent être ajoutées. Elles sont exécutées dans l'ordre spécifié.
L'agent prend en charge les options de traitement suivantes. Comme l'agent est open source, vous pouvez continuer à développer et étendre ses options de traitement. Vous pouvez télécharger l'agent depuis Kinesis Agent
Options de traitement
SINGLELINE
-
Convertit un enregistrement de plusieurs lignes en un enregistrement d'une seule ligne en supprimant les caractères de saut de ligne, les espaces de début et les espaces de fin.
{ "optionName": "SINGLELINE" }
CSVTOJSON
-
Convertit un enregistrement d'un format séparé par un délimiteur en format. JSON
{ "optionName": "CSVTOJSON", "customFieldNames": [ "
field1
", "field2
",...
], "delimiter": "yourdelimiter
" }customFieldNames
-
[Obligatoire] Les noms de champs utilisés comme clés dans chaque JSON paire clé-valeur. Par exemple, si vous spécifiez
["f1", "f2"]
, l'enregistrement « v1, v2 » est converti en{"f1":"v1","f2":"v2"}
. delimiter
-
Chaîne utilisée comme délimiteur dans l'enregistrement. La valeur par défaut est une virgule (,).
LOGTOJSON
-
Convertit un enregistrement d'un format journal en JSON format. Les formats de journal pris en charge sont Apache Common Log, Apache Combined Log, Apache Error Log et RFC3164 Syslog.
{ "optionName": "LOGTOJSON", "logFormat": "
logformat
", "matchPattern": "yourregexpattern
", "customFieldNames": [ "field1
", "field2
",…
] }logFormat
-
[Obligatoire] Format d'entrée de journal. Les valeurs admises sont les suivantes :
-
COMMONAPACHELOG
: le format de journal courant d'Apache. Chaque entrée de journal a le schéma suivant par défaut : «%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}
». -
COMBINEDAPACHELOG
: le format de journal combiné d'Apache. Chaque entrée de journal a le schéma suivant par défaut : «%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}
». -
APACHEERRORLOG
: le format de journal d'erreurs d'Apache. Chaque entrée de journal a le schéma suivant par défaut : «[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}
». -
SYSLOG
— Le format RFC3164 Syslog. Chaque entrée de journal a le schéma suivant par défaut : «%{timestamp} %{hostname} %{program}[%{processid}]: %{message}
».
-
matchPattern
-
Remplace le modèle par défaut pour le format de journal spécifié. Utilisez ce paramètre pour extraire les valeurs des entrées du journal si elles utilisent un format personnalisé. Si vous spécifiez
matchPattern
, vous devez également spécifiercustomFieldNames
. customFieldNames
-
Les noms de champs personnalisés utilisés comme clés dans chaque paire JSON clé-valeur. Vous pouvez utiliser ce paramètre pour définir les noms de champ pour les valeurs extraites de
matchPattern
, ou remplacer les noms de champ par défaut des formats de journalisation prédéfinis.
Exemple : LOGTOJSON Configuration
Voici un exemple de LOGTOJSON
configuration pour une entrée Apache Common Log convertie au JSON format :
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }
Avant la conversion :
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
Après la conversion :
{"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"}
Exemple : LOGTOJSON Configuration avec champs personnalisés
Voici un autre exemple de configuration LOGTOJSON
:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }
Avec ce paramètre de configuration, la même entrée Apache Common Log que dans l'exemple précédent est convertie au JSON format suivant :
{"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"}
Exemple : Conversion d'une entrée au format Journal courant Apache
La configuration de flux suivante convertit une entrée Apache Common Log en un enregistrement d'une seule ligne au JSON format :
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
Exemple : Conversion des enregistrements de plusieurs lignes
La configuration de flux suivante analyse les enregistrements de plusieurs lignes dont la première ligne commence par « [SEQUENCE=
». Chaque enregistrement est d'abord converti en un enregistrement d'une seule ligne. Les valeurs sont ensuite extraites de l'enregistrement sur la base d'un séparateur tabulation. Les valeurs extraites sont mappées aux customFieldNames
valeurs spécifiées pour former un enregistrement d'une seule ligne au JSON format.
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "multiLineStartPattern": "\\[SEQUENCE=
", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1
", "field2
", "field3
" ], "delimiter": "\\t
" } ] } ] }
Exemple : LOGTOJSON Configuration avec modèle de correspondance
Voici un exemple de LOGTOJSON
configuration pour une entrée Apache Common Log convertie au JSON format, le dernier champ (octets) étant omis :
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }
Avant la conversion :
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
Après la conversion :
{"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"}
Démarrez automatiquement l'agent au démarrage du système.
sudo chkconfig aws-kinesis-agent on
Vérifier le statut de l'agent :
sudo service aws-kinesis-agent status
Arrêter l'agent :
sudo service aws-kinesis-agent stop
Lire le fichier journal de l'agent à partir de cet emplacement :
/var/log/aws-kinesis-agent/aws-kinesis-agent.log
Désinstaller l'agent :
sudo yum remove aws-kinesis-agent
Existe-t-il un Kinesis Agent pour Windows ?
Kinesis Agent pour Windows est un logiciel différent de Kinesis Agent pour les plateformes Linux.
Pourquoi Kinesis Agent ralentit-il ou RecordSendErrors
augmente-t-il ?
Cela est généralement dû à une limitation de Kinesis. Vérifiez la WriteProvisionedThroughputExceeded
métrique pour Kinesis Data Streams ou ThrottledRecords
la métrique pour les flux Firehose. Toute augmentation de ces métriques par rapport à 0 indique que les limites de flux doivent être augmentées. Pour plus d'informations, consultez les sections Limites de Kinesis Data Stream et Firehose Streams.
Une fois que vous avez exclu la limitation, vérifiez si Kinesis Agent est configuré pour suivre un grand nombre de petits fichiers. Il y a un délai lorsque Kinesis Agent suit un nouveau fichier, c'est pourquoi Kinesis Agent doit suivre un petit nombre de fichiers plus volumineux. Essayez de regrouper vos fichiers journaux dans des fichiers plus volumineux.
Pourquoi est-ce que je reçois des exceptions java.lang.OutOfMemoryError
?
Kinesis Agent ne dispose pas de suffisamment de mémoire pour gérer sa charge de travail actuelle. Essayez d'augmenter JAVA_START_HEAP
et JAVA_MAX_HEAP
dans /usr/bin/start-aws-kinesis-agent
et de redémarrer l'agent.
Pourquoi est-ce que je reçois des exceptions IllegalStateException : connection pool shut down
?
Kinesis Agent ne dispose pas de suffisamment de connexions pour gérer sa charge de travail actuelle. Essayez d'augmenter maxConnections
et maxSendingThreads
dans les paramètres de configuration de votre agent général à /etc/aws-kinesis/agent.json
. La valeur par défaut de ces champs est 12 fois supérieure au nombre de processeurs d'exécution disponibles. Consultez AgentConfiguration.java
Comment puis-je déboguer un autre problème avec Kinesis Agent ?
Les journaux de niveau DEBUG
peuvent être activés dans /etc/aws-kinesis/log4j.xml
.
Comment dois-je configurer Kinesis Agent ?
Plus la taille de maxBufferSizeBytes
est petite, plus Kinesis Agent envoie fréquemment des données. Cela peut être une bonne chose, car cela réduit le délai de livraison des enregistrements, mais cela augmente également le nombre de requêtes par seconde adressées à Kinesis.
Pourquoi Kinesis Agent envoie-t-il des enregistrements dupliqués ?
Cela se produit en raison d'une mauvaise configuration dans le suivi des fichiers. Assurez-vous que chaque fileFlow’s filePattern
ne correspond qu'à un seul fichier. Cela peut également se produire si le mode logrotate
utilisé est en mode copytruncate
. Essayez de remplacer le mode par défaut ou de créer le mode pour éviter les doublons. Pour plus d'informations sur la gestion des enregistrements dupliqués, consultez la rubrique Gestion des enregistrements dupliqués (français non garanti).