Comment résoudre les problèmes de configuration lorsque j'intègre Fluent Bit à Container Insights pour Amazon EKS ?
Je souhaite résoudre les problèmes de configuration liés à l'intégration de Fluent Bit à Container Insights pour Amazon Elastic Kubernetes Service (Amazon EKS).
Brève description
Fluent Bit est un processeur de journaux et un redirecteur léger que vous utilisez pour collecter des journaux de conteneurs dans Amazon CloudWatch.
Il est recommandé d'utiliser Fluent Bit au lieu de Fluentd (un ancien programme open source) en raison de sa faible empreinte sur les ressources et de la fonctionnalité Use_Kubelet. Pour plus d'informations, voir Activer la fonctionnalité Use_Kubelet pour les clusters de grande taille.
Pour permettre à Fluent Bit de transmettre des journaux de conteneurs à Amazon CloudWatch Logs, vous devez accorder des autorisations de la Gestion des identités et des accès AWS (IAM) à Fluent Bit. Avec Amazon EKS, il existe deux manières d'accorder des autorisations IAM :
- Associez une politique au rôle IAM de vos composants master.
- Utilisez un rôle de compte de service IAM.
Si vous accordez des autorisations IAM à Fluent Bit, Fluent Bit est en mesure d'effectuer les actions suivantes :
- logs:DescribeLogGroups
- logs:DescribeLogStreams
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
Les problèmes les plus courants sont les suivants :
- Les pods de Fluent Bit se plantent.
- Fluent Bit n'envoie pas de journaux à CloudWatch.
- Les pods Fluent Bit renvoient CreateContainerConfigError.
Solution
Configurer un rôle IAM pour le compte de service
Créez un rôle IAM pour le compte de service cloudwatch-agent pour l'espace de noms amazon-cloudwatch à l'aide de la politique CloudWatchAgentServerPolicy gérée par AWS.
1. Exécutez les commandes suivantes pour configurer les variables d'environnement :
export CLUSTER="clustername" export AWS_REGION="awsregion" export AWS_ACCOUNT="awsaccountid"
Remarque : remplacez « clustername », « awsregion » et « awsaccountid » (y compris les guillemets) par le nom de votre cluster, votre Région AWS et votre identifiant de compte.
2. Exécutez la commande eksctl suivante :
eksctl create iamserviceaccount \ --name cloudwatch-agent \ --namespace amazon-cloudwatch \ --cluster $CLUSTER \ --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \ --approve \ --override-existing-serviceaccounts
Pour plus d'informations sur les prérequis de Container Insights, voir la section Vérifier les prérequis.
Configurez l'agent CloudWatch pour collecter les métriques du cluster et activez Container Insights
1. Pour déployer Container Insights en utilisant le démarrage rapide, exécutez la commande suivante :
ClusterName="my-cluster-name" RegionName="my-cluster-region" FluentBitHttpPort='2020' FluentBitReadFromHead='Off' [[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On' [[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On' curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch- container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights- monitoring/quickstart/cwagent-fluent-bit-quickstart.yaml | sed 's/ {{cluster_name}}/'${ClusterName}'/;s/ {{region_name}}/'${RegionName}'/;s/ {{http_server_toggle}}/"'${FluentBitHttpServer}'"/;s/ {{http_server_port}}/"'${FluentBitHttpPort}'"/;s/ {{read_from_head}}/"'${FluentBitReadFromHead}'"/;s/ {{read_from_tail}}/"'${FluentBitReadFromTail}'"/' | kubectl apply -f -
Remarque : remplacez « my-cluster-name » et « my-cluster-region » (y compris les guillemets) par le nom de votre cluster et de votre Région AWS.
La commande précédente crée un espace de nom, ClusterRole, ClusterRoleBinding et ConfigMap pour l'agent CloudWatch et Fluent Bit.
2. Après l'exécution de cette commande, exécutez la commande suivante pour créer le compte de service de Fluent Bit :
eksctl create iamserviceaccount \ --name fluent-bit \ --namespace amazon-cloudwatch \ --cluster $CLUSTER \ --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \ --approve \ --override-existing-serviceaccounts
3. Exécutez la commande suivante pour valider le déploiement de l'agent CloudWatch :
kubectl get pods -n amazon-cloudwatch
4. Une fois terminé, l'agent CloudWatch crée le groupe de journaux /aws/containerinsights/Cluster_Name/performance. Ensuite, l'agent CloudWatch envoie les événements du journal des performances au groupe de journaux.
Dépannage
Les pods Fluent Bit se plantent
1. Vérifiez les messages d'erreur dans les journaux des pods de Fluent Bit. Exécutez ces commandes pour rechercher des événements provenant des pods de Fluent Bit :
kubectl -n amazon-cloudwatch logs -l k8s-app=fluent-bit kubectl -n amazon-cloudwatch describe pod fluent_pod pod_name
2. Vérifiez que cluster-info (le fichier de configuration Fluent Bit stocké dans ConfigMap) est exact et ne contient pas d’erreur de syntaxe. Assurez-vous que toutes les valeurs de nom de cluster et de région sont définies. Pour plus d'informations, voir amazon-cloudwatch-container-insights sur le site Web de GitHub.
Fluent Bit n'envoie pas de journaux à CloudWatch
1. Vérifiez que le plug-in de sortie est correctement configuré dans le fichier de configuration Fluent Bit. Pour vérifier s'il y a des erreurs d'envoi de données, utilisez la commande suivante pour vérifier les journaux des pods de Fluent Bit :
kubectl -n amazon-cloudwatch logs fluent_pod_name
2. Assurez-vous que les pods de Fluent Bit ont les permissions IAM nécessaires pour diffuser les journaux vers CloudWatch. Vos composants mater Amazon EKS soumettent des métriques et des journaux à CloudWatch en raison de la politique CloudWatchAgentServerPolicy appliquée par IAM. Il existe deux façons d'accorder les autorisations IAM nécessaires :
- Ajoutez une politique aux rôles IAM des composants master.
- Créez un rôle IAM pour les comptes de service du cluster, et apposez-y la politique.
Voir la section Configurer un rôle IAM pour un compte de service pour plus d'informations.
Les pods Fluent Bit bloqués dans CreateContainerConfigError
Si l'état du pod est CreateContainerConfigError, exécutez la commande suivante pour obtenir le message d'erreur exact :
kubectl describe pod pod_name -n amazon-cloudwatch
Dans la section Événements de la sortie de la commande, recherchez un message d'erreur comme le suivant :
Error syncing pod ("fluent-bit-xxxxxxx"), skipping: failed to "StartContainer" with CreateContain erConfigError: "configmap \"fluent-bit-config\" not found"
Si ce message d'erreur s'affiche, il est probable que vous n'ayez pas créé la ConfigMap pour Fluent Bit (fluent-bit-config). Suivez à nouveau les étapes d'installation pour vous assurer de créer la ConfigMap.
Informations connexes
Configurer l'agent CloudWatch pour collecter les métriques du cluster

Contenus pertinents
- demandé il y a 4 moislg...
- demandé il y a 4 moislg...
- demandé il y a 2 moislg...
- demandé il y a 6 moislg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a 4 mois
- AWS OFFICIELA mis à jour il y a 8 mois