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.
Envoi de journaux à Amazon CloudWatch
OTel Container Insights collecte et envoie les journaux des conteneurs à Amazon CloudWatch Logs en utilisant le pipeline de journaux du OpenTelemetry collecteur. Le module complémentaire Amazon CloudWatch Observability EKS déploie un OpenTelemetry collecteur DaemonSet qui utilise le récepteur de journaux de fichiers pour suivre les fichiers journaux du conteneur, les enrichir avec des métadonnées Kubernetes et les exporter vers des journaux via l'exportateur de journaux. CloudWatch CloudWatch
Aucune configuration supplémentaire n'est requise pour la collecte de journaux de base. La collecte de journaux est activée par défaut lorsque vous suivez leDémarrage rapide : OTel Container Insights sur Amazon EKS.
Conditions préalables
Avant de configurer la collecte des journaux, vérifiez que vous répondez aux exigences suivantes.
-
OTel Container Insights installé et
amazon-cloudwatch-observabilitymodule complémentaire actif sur votre cluster -
Autorisations IAM :
logs:CreateLogGrouplogs:CreateLogStream,logs:PutLogEvents,logs:DescribeLogGroups, etlogs:DescribeLogStreams(incluses dans la politiqueCloudWatchAgentServerPolicygérée) -
Accès au nœud : le collecteur doit avoir accès
/var/log/podsà chaque nœud
Groupes de journaux et sources
Le tableau suivant décrit le groupe de journaux créé par OTel Container Insights et la source à partir de laquelle il collecte des données.
| Groupe de journaux | Source | Table des matières |
|---|---|---|
/aws/containerinsights/ |
/var/log/pods/**/*.log |
Tous les journaux stdout et stderr du conteneur |
Note
Les journaux de l'hôte et du plan de données seront disponibles dans une future version.
Comment fonctionne le pipeline de logs OTel
Le OpenTelemetry collecteur du module complémentaire exécute un pipeline de logs avec les composants suivants.
-
Récepteurs — Le
filelogrécepteur extrait les fichiers journaux du conteneur depuis/var/log/pods/. -
Processeurs : le
k8sattributesprocesseur enrichit les journaux avec les métadonnées Kubernetes. Lebatchprocesseur traite les enregistrements du journal par lots avant l'exportation. Leresourceprocesseur ajoute des attributs de ressources. -
Exportateurs — L'
awscloudwatchlogsexportateur envoie les enregistrements du journal à CloudWatch Logs.
Enrichissement du journal
Le pipeline enrichit chaque enregistrement de journal avec les attributs suivants.
-
Attributs de ressources Kubernetes —
k8s.pod.name,,k8s.namespace.name, etk8s.container.namek8s.node.namek8s.deployment.name -
Étiquettes de capsules : toutes les étiquettes de capsules sous forme d'
k8s.pod.label.*attributs -
Attributs du cloud —
cloud.regioncloud.account.id, etcloud.platform -
Attributs du cluster —
k8s.cluster.name
Personnalisation de la collecte de journaux
Vous pouvez personnaliser la collecte des journaux en mettant à jour les valeurs de configuration du module complémentaire. Les sections suivantes décrivent les options de personnalisation courantes.
Désactiver la collecte de journaux
Pour désactiver complètement la collecte de journaux, mettez à jour la configuration du module complémentaire en désactivant les journaux de conteneur.
Pour désactiver la collecte de journaux
-
Exécutez la commande suivante.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":false}}' \ --resolve-conflicts OVERWRITE
Exclure les espaces de noms de la collecte de journaux
Pour exclure des espaces de noms spécifiques de la collecte de journaux, utilisez l'option excludeNamespaces de configuration.
Pour exclure les espaces de noms de la collecte de journaux
-
Exécutez la commande suivante.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS. Remplacez les valeurs des espaces de noms par les espaces de noms que vous souhaitez exclure.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"excludeNamespaces":["kube-system","load-testing","monitoring"]}}' \ --resolve-conflicts OVERWRITE
Inclure uniquement des espaces de noms spécifiques
Pour collecter des journaux uniquement à partir d'espaces de noms spécifiques, utilisez l'option includeNamespaces de configuration.
Pour inclure uniquement des espaces de noms spécifiques
-
Exécutez la commande suivante.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS. Remplacez les valeurs des espaces de noms par les espaces de noms que vous souhaitez inclure.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"includeNamespaces":["production","staging"]}}' \ --resolve-conflicts OVERWRITE
Configurer l'analyse des journaux multilignes
Pour combiner des entrées de journal multilignes (telles que des traces de pile) en un seul enregistrement de journal, configurez l'analyse multiligne avec un modèle de première ligne.
Pour configurer l'analyse des journaux multilignes
-
Exécutez la commande suivante.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS. Remplacez lafirstLinePatternvaleur par un modèle regex correspondant à la première ligne de chaque entrée du journal.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"multilineConfig":{"firstLinePattern":"^\\d{4}-\\d{2}-\\d{2}|^\\[\\d{4}","parseFormat":"auto"}}}' \ --resolve-conflicts OVERWRITE
Configurer la conservation des journaux
Par défaut, CloudWatch Logs conserve les données du journal indéfiniment. Pour contrôler les coûts de stockage, vous pouvez définir une politique de rétention pour le groupe de journaux.
Pour configurer la conservation des journaux
-
Exécutez la commande suivante.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS. Remplacez30par le nombre de jours pendant lesquels les journaux sont conservés.aws logs put-retention-policy \ --log-group-name "/aws/containerinsights/cluster-name/application" \ --retention-in-days30
Vérification
Pour vérifier que la collecte de journaux fonctionne, vérifiez que les groupes de journaux attendus existent et contiennent des données.
Pour vérifier la collecte des journaux
-
Exécutez la commande suivante.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS.aws logs describe-log-groups \ --log-group-name-prefix "/aws/containerinsights/cluster-name" \ --query "logGroups[].{Name:logGroupName,StoredBytes:storedBytes}" \ --output tableLa sortie affiche les noms des groupes de journaux et le nombre d'octets stockés. Une valeur différente de zéro pour
StoredBytesconfirme que le pipeline fournit des logs.
Résolution des problèmes
Suivez les instructions suivantes pour résoudre les problèmes courants de collecte de journaux.
Les groupes de journaux ne sont pas créés après 5 minutes
Symptôme : le groupe de /aws/containerinsights/ journaux n'apparaît pas dans CloudWatch les journaux après 5 minutes.cluster-name/application
Cause : Le collecteur ne dispose pas des autorisations IAM requises pour créer des groupes de journaux et des flux de journaux.
Solution : Vérifiez que la politique CloudWatchAgentServerPolicy gérée est attachée au rôle IAM associé au collecteur. Cette politique inclut les logs:CreateLogStream autorisations logs:CreateLogGroup et.
Le groupe de journaux d'applications existe mais est vide
Symptôme : le groupe de journaux d'applications existe dans CloudWatch les journaux, mais il ne contient aucun flux de journal ni aucun événement de journal.
Cause : Ce problème se produit lorsque les conteneurs n'écrivent pas sur stdout ou stderr, ou lorsque le récepteur du journal de fichiers ne peut pas accéder au nœud. /var/log/pods/
Solution : Procédez comme suit pour résoudre ce problème.
-
Vérifiez que les conteneurs de votre application écrivent des journaux sur stdout ou stderr.
-
Vérifiez que le DaemonSet module collecteur est équipé d'un support de volume pour
/var/log/pods.kubectl get daemonset -n amazon-cloudwatch -o yaml | grep -A 5 "var/log/pods" -
Vérifiez les journaux du collecteur pour détecter les erreurs d'accès aux fichiers.
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=50 | grep -i "error\|permission"
Coûts de CloudWatch journalisation élevés
Symptôme : CloudWatch les coûts d'ingestion ou de stockage des logs sont plus élevés que prévu.
Cause : les High-volume espaces de noms (tels que les tests de charge ou la surveillance des espaces de noms) génèrent de gros volumes de journaux.
Solution : Procédez comme suit pour réduire les coûts.
-
Excluez les espaces de noms à volume élevé de la collecte de journaux. Pour obtenir des instructions, veuillez consulter Exclure les espaces de noms de la collecte de journaux.
-
Définissez une politique de conservation sur le groupe de journaux afin de supprimer automatiquement les anciens journaux. Pour obtenir des instructions, veuillez consulter Configurer la conservation des journaux.