Aidez à améliorer cette page
Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.
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.
Journalisation Fargate
Important
AWS Fargate avec Amazon EKS n'est pas disponible en AWS GovCloud (USA Est) et AWS GovCloud (USA Ouest).
Amazon EKS on Fargate propose un routeur de journal intégré basé sur Fluent Bit. Cela signifie que vous n'exécutez pas explicitement un conteneur Fluent Bit comme composant complémentaire, mais qu'Amazon l'exécute pour vous. Tout ce que vous avez à faire est de configurer le routeur de journaux. La configuration se fait par le biais d'un ConfigMap
qui doit répondre aux critères suivants :
-
Nommé
aws-logging
-
Créé dans un espace de noms dédié appelé
aws-observability
-
Ne doit pas dépasser 5 300 caractères.
Une fois que vous avez créé le ConfigMap
, Amazon EKS on Fargate le détecte automatiquement et configure le routeur de journaux avec lui. Fargate utilise une version de Fluent Bit for, une distribution Fluent Bit conforme en amont AWS de managed by. AWS Pour plus d'informations, reportez-vous AWS à la
Le routeur de journaux vous permet d'utiliser l'ensemble des services proposés AWS pour l'analyse et le stockage des journaux. Vous pouvez diffuser les journaux de Fargate directement vers Amazon CloudWatch, Amazon Service. OpenSearch Vous pouvez également diffuser des journaux vers des destinations telles qu'Amazon S3
Prérequis
-
Un profil Fargate existant qui spécifie un espace de noms Kubernetes existant dans lequel vous déployez des Pods Fargate. Pour de plus amples informations, veuillez consulter Création d'un profil Fargate pour votre cluster.
-
Un rôle d'exécution de Pod Fargate existant. Pour de plus amples informations, veuillez consulter Création d'un rôle d'exécution de Pod Fargate.
Configuration du routeur de journaux
Pour configurer le routeur de journaux
Dans les étapes suivantes, remplacez chaque
par vos propres valeurs.example value
-
Créez un espace de noms Kubernetes dédié nommé
aws-observability
.-
Enregistrez le contenu suivant dans un fichier nommé
sur votre ordinateur. La valeur pouraws-observability-namespace
.yamlname
doit êtreaws-observability
et le labelaws-observability: enabled
est obligatoire.kind: Namespace apiVersion: v1 metadata: name: aws-observability labels: aws-observability: enabled
-
Créez l'espace de noms.
kubectl apply -f
aws-observability-namespace
.yaml
-
-
Créez un
ConfigMap
avec une valeur de donnéesFluent Conf
pour envoyer les journaux des conteneurs vers une destination. Fluent Conf est Fluent Bit, qui est un langage de configuration de processeur de journaux rapide et léger, utilisé pour acheminer les journaux des conteneurs vers une destination de journalisation de votre choix. Pour plus d'informations, consultez Fichier de configurationdans la documentation Fluent Bit. Important
Dans une
Fluent Conf
type, les principales sections incluses sontService
,Input
,Filter
etOutput
. Le routeur de journaux Fargate n'accepte cependant que :-
Les sections
Filter
etOutput
. -
Une section
Parser
.
Si vous fournissez d'autres sections, elles seront rejetées.
Le routeur de journal Fargate gère les sections
Service
etInput
. Il possède la sectionInput
suivante, qui ne peut pas être modifiée et n'est pas nécessaire dans votreConfigMap
. Cependant, vous pouvez en tirer des informations, telles que la limite de la mémoire tampon et la balise appliquée pour les journaux.[INPUT] Name tail Buffer_Max_Size 66KB DB /var/log/flb_kube.db Mem_Buf_Limit 45MB Path /var/log/containers/*.log Read_From_Head On Refresh_Interval 10 Rotate_Wait 30 Skip_Long_Lines On Tag kube.*
Lors de la création du
ConfigMap
, prenez en compte les règles suivantes que Fargate utilise pour valider les champs :-
[FILTER]
,[OUTPUT]
et[PARSER]
sont censés être spécifiés sous chaque clé correspondante. Par exemple,[FILTER]
doit être inférieur àfilters.conf
. Vous pouvez avoir un ou plusieurs[FILTER]
sousfilters.conf
.[OUTPUT]
et[PARSER]
doivent également être sous leurs clés correspondantes. En spécifiant plusieurs sections[OUTPUT]
, vous pouvez acheminer vos journaux vers différentes destinations en même temps. -
Fargate valide les clés requises de chaque section.
Name
etmatch
sont nécessaires pour chaque[FILTER]
et[OUTPUT]
.Name
etformat
sont nécessaires pour chaque[PARSER]
. Ces noms sont sensibles à la casse. -
Les variables d'environnement telles que
${ENV_VAR}
ne sont pas autorisées dans leConfigMap
. -
L'indentation doit être la même pour la directive ou la paire clé-valeur dans chaque
filters.conf
,output.conf
etparsers.conf
. Les paires clé-valeur doivent être indentées plus que les directives. -
Fargate valide par rapport aux filtres pris en charge suivants :
grep
,parser
,record_modifier
,rewrite_tag
,throttle
,nest
,modify
etkubernetes
. -
Fargate valide par rapport à la sortie prise en charge suivante :
es
,firehose
,kinesis_firehose
,cloudwatch
,cloudwatch_logs
etkinesis
. -
Au moins un plugin
Output
doit être fourni dans leConfigMap
pour activer la journalisation.Filter
etParser
ne sont pas nécessaires pour activer la journalisation.
Vous pouvez également exécuter Fluent Bit sur Amazon EC2 en utilisant la configuration souhaitée pour résoudre les problèmes qui surviennent lors de la validation. Créez votre
ConfigMap
en utilisant l'un des exemples suivants.Important
La journalisation Amazon EKS Fargate ne prend pas en charge la configuration dynamique de
ConfigMaps
. Les modifications apportées àConfigMaps
sont appliquées uniquement aux nouveaux Pods. Les modifications ne sont pas appliquées aux Pods existants.Créez un
ConfigMap
en utilisant l'exemple pour votre destination de journal désirée.Note
Vous pouvez également utiliser Amazon Kinesis Data Streams comme destination du journal. Si vous utilisez Kinesis Data Streams, assurez-vous que l'autorisation
kinesis:PutRecords
a été accordée au rôle d'exécution du pod. Pour plus d'informations, consultez Permissions d'Amazon Kinesis Data Streams dans le Manuel officiel Fluent Bit. -
-
Créez une politique IAM depuis le fichier de politique que vous avez téléchargé à l'étape précédente.
aws iam create-policy --policy-name
eks-fargate-logging-policy
--policy-document file://permissions.json -
Attachez la politique IAM au rôle d'exécution de pod spécifié pour votre profil Fargate avec la commande suivante. Remplacez
par votre ID de compte. Remplacez111122223333
par le rôle d'exécution de votre Pod (pour plus d'informations, veuillez consulter la rubrique Création d'un rôle d'exécution de Pod Fargate).AmazonEKSFargatePodExecutionRole
aws iam attach-role-policy \ --policy-arn arn:aws:iam::
111122223333
:policy/eks-fargate-logging-policy
\ --role-nameAmazonEKSFargatePodExecutionRole
Support de filtre Kubernetes
Cette fonction requiert la version Kubernetes minimale et le niveau de plateforme suivants, ou plus.
Version de Kubernetes | Niveau de la plateforme |
---|---|
1.23 et versions ultérieures | eks.1 |
Le filtre Kubernetes Fluent Bit vous permet d'ajouter des métadonnées Kubernetes à vos fichiers journaux. Pour plus d'informations sur le filtre, consultez Kubernetes
filters.conf: | [FILTER] Name kubernetes Match kube.* Merge_Log On Buffer_Size 0 Kube_Meta_Cache_TTL
300
s
Important
-
Kube_URL
,Kube_CA_File
,Kube_Token_Command
etKube_Token_File
sont des paramètres de configuration appartenant au service et ne doivent pas être spécifiés. Amazon EKS Fargate remplit ces valeurs. -
Kube_Meta_Cache_TTL
est le temps pendant lequel Fluent Bit attend jusqu'à ce qu'il communique avec le serveur d'API pour obtenir les dernières métadonnées. Si la valeurKube_Meta_Cache_TTL
n'est pas spécifiée, Amazon EKS Fargate ajoute une valeur par défaut de 30 minutes pour diminuer la charge sur le serveur d'API.
Pour envoyer les journaux de processus Fluent Bit à votre compte
Vous pouvez éventuellement envoyer des journaux de Fluent Bit processus à Amazon CloudWatch en utilisant les méthodes suivantesConfigMap
. L'expédition des journaux de traitement Fluent Bit CloudWatch nécessite des frais d'ingestion et de stockage supplémentaires.
Remplacez-le par Région AWS celui dans lequel se trouve votre cluster.region-code
kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability labels: data: # Configuration files: server, input, filters and output # ====================================================== flb_log_cw: "true" # Ships Fluent Bit process logs to CloudWatch. output.conf: | [OUTPUT] Name cloudwatch Match kube.* region
region-code
log_group_name fluent-bit-cloudwatch log_stream_prefix from-fluent-bit- auto_create_group true
Les journaux se trouvent dans Région AWS le répertoire sous lequel réside le cluster CloudWatch. Le nom du groupe de journaux est
et le nom du flux de journaux Fluent Bit est my-cluster
-fluent-bit-logsfluent-bit-
.podname
-pod-namespace
Note
-
Les journaux de processus sont uniquement envoyés lorsque le processus Fluent Bit démarre avec succès. En cas d'échec lors du démarrage de Fluent Bit, les journaux de processus sont manqués. Vous ne pouvez expédier les journaux de processus qu'à CloudWatch.
-
Pour déboguer l'envoi des journaux de processus à votre compte, vous pouvez appliquer la
ConfigMap
précédente pour obtenir les journaux de processus. L'échec de démarrage de Fluent Bit est généralement dû au fait que votreConfigMap
n'est pas analysée ou acceptée par Fluent Bit lors du démarrage.
Pour arrêter l'envoi des journaux de processus Fluent Bit
Fluent BitLe processus d'expédition entraîne des CloudWatch coûts supplémentaires d'ingestion et de stockage des journaux. Pour exclure les journaux de processus d'une configuration de ConfigMap
existante, procédez comme suit.
-
Localisez le groupe de CloudWatch journaux créé automatiquement pour les journaux de Fluent Bit processus de votre cluster Amazon EKS après avoir activé la journalisation Fargate. Il utilise le format
{cluster_name}-fluent-bit-logs
. -
Supprimez les flux de CloudWatch journaux existants créés pour chaque CloudWatch journal de Pod's processus du groupe de journaux.
-
Modifiez la
ConfigMap
et définissezflb_log_cw: "false"
. -
Redémarrez tous les Pods existants du cluster.
Tester l'application
-
Déployez un exemple de Pod.
-
Enregistrez le contenu suivant dans un fichier nommé
sur votre ordinateur.sample-app
.yamlapiVersion: apps/v1 kind: Deployment metadata: name: sample-app namespace:
same-namespace-as-your-fargate-profile
spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - name: http containerPort: 80 -
Appliquez le fichier manifeste à votre cluster.
kubectl apply -f
sample-app
.yaml
-
-
Affichez les journaux NGINX en utilisant les destinations que vous avez configurées dans le fichier
ConfigMap
.
Considérations sur les tailles
Nous vous suggérons de prévoir jusqu'à 50 Mo de mémoire pour le routeur de journaux. Si votre application doit générer des journaux à un débit très élevé, vous devez prévoir jusqu'à 100 Mo.
Résolution des problèmes
Pour confirmer que la fonctionnalité de journalisation est activée ou désactivée pour une quelconque raison, telle qu'un ConfigMap
non valide, et déterminer la raison pour laquelle il n'est pas valide, vérifiez les événements de votre Pod avec
. La sortie peut inclure des événements de Pod qui précisent si la journalisation est activée ou non, comme l'exemple de sortie suivant.kubectl describe pod
pod_name
[...]
Annotations: CapacityProvisioned: 0.25vCPU 0.5GB
Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND
kubernetes.io/psp: eks.privileged
[...]
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning LoggingDisabled <unknown> fargate-scheduler Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found
Les événements du Pod sont éphémères avec une période de temps dépendant des paramètres. Vous pouvez également afficher les annotations d'un Pod's à l'aide de
. Dans l'annotation du Pod, il existe des informations sur l'activation ou la désactivation de la fonctionnalité de journalisation et la cause.kubectl describe pod
pod-name