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.
Configurer Fluent Bit comme un DaemonSet pour envoyer des CloudWatch journaux à Logs
Les sections suivantes vous aident à déployer Fluent Bit pour envoyer des journaux depuis des conteneurs vers CloudWatch des journaux.
Rubriques
Différences si vous utilisez déjà Fluentd
Si vous utilisez déjà Fluentd pour envoyer des logs depuis des conteneurs vers Logs, lisez cette section pour voir les différences entre Fluentd et Fluentd CloudWatch Bit. Si vous n'utilisez pas déjà Fluentd avec Container Insights, vous pouvez passer à Configuration de Fluent Bit.
Nous proposons deux configurations par défaut pour Fluent Bit :
-
Configuration optimisée pour Fluent Bit – Configuration alignée sur les bonnes pratiques de Fluent Bit.
-
Configuration compatible Fluentd – Configuration alignée autant que possible sur le comportement Fluentd.
La liste suivante explique en détail les différences entre Fluentd et chaque configuration Fluent Bit.
-
Différences dans les noms de flux de journaux – Si vous utilisez la configuration optimisée Fluent Bit, les noms de flux de journaux seront différents.
Sous
/aws/containerinsights/Cluster_Name/application
-
La configuration optimisée Fluent Bit envoie les journaux à
kubernetes-nodeName
-application.var.log.containers.kubernetes-podName
_kubernetes-namespace
_kubernetes-container-name
-kubernetes-containerID
-
Fluentd envoie les journaux à
kubernetes-podName
_kubernetes-namespace
_kubernetes-containerName
_kubernetes-containerID
Sous
/aws/containerinsights/Cluster_Name/host
-
La configuration optimisée Fluent Bit envoie les journaux à
kubernetes-nodeName
.host-log-file
-
Fluentd envoie les journaux à
host-log-file
-Kubernetes-NodePrivateIp
Sous
/aws/containerinsights/Cluster_Name/dataplane
-
La configuration optimisée Fluent Bit envoie les journaux à
kubernetes-nodeName
.dataplaneServiceLog
-
Fluentd envoie les journaux à
dataplaneServiceLog
-Kubernetes-nodeName
-
-
Les fichiers journaux
kube-proxy
etaws-node
écrits par Container Insights se trouvent dans des emplacements différents. Dans la configuration Fluentd, ils sont dans/aws/containerinsights/Cluster_Name/application
. Dans la configuration optimisée Fluent Bit, ils sont dans/aws/containerinsights/Cluster_Name/dataplane
. -
La plupart des métadonnées, comme
pod_name
etnamespace_name
, sont les mêmes dans Fluent Bit et Fluentd, mais ce qui suit est différent.-
La configuration optimisée Fluent Bit utilise
docker_id
et Fluentd utiliseDocker.container_id
. -
Les deux configurations Fluent Bit n'utilisent pas les métadonnées suivantes. Elles ne sont présentes que dans Fluentd :
container_image_id
,master_url
,namespace_id
, etnamespace_labels
.
-
Configuration de Fluent Bit
Pour configurer Fluent Bit afin de collecter les journaux de vos conteneurs, vous pouvez suivre les étapes de Configuration du démarrage rapide pour Container Insights sur Amazon EKS et Kubernetes ou celles de cette section.
Quelle que soit la méthode, le IAM rôle attaché aux nœuds du cluster doit disposer d'autorisations suffisantes. Pour plus d'informations sur les autorisations requises pour exécuter un EKS cluster Amazon, consultez EKSIAMles politiques, les rôles et les autorisations Amazon dans le guide de EKS l'utilisateur Amazon.
Dans les étapes suivantes, vous configurez Fluent Bit daemonSet pour envoyer des CloudWatch journaux à Logs. Une fois que vous avez terminé cette étape, Fluent Bit crée les groupes de journaux suivants, s'ils n'existent pas déjà.
Important
Si FluentD est déjà configuré dans Container Insights et que le FluentD ne fonctionne pas comme prévu (cela peut se produire si vous utilisez le moteur d'exécution), vous devez containerd
le désinstaller avant d'installer DaemonSet FluentD pour empêcher FluentD de traiter les messages du journal d'erreurs FluentD. Sinon, vous devez désinstaller Fluentd immédiatement après avoir installé Fluent Bit. La désinstallation de Fluentd après l'installation de Fluent Bit garantit la continuité de la journalisation pendant ce processus de migration. Un seul Fluent Bit ou FluentD est nécessaire pour envoyer des journaux à Logs. CloudWatch
Nom du groupe de journaux | Source des journaux |
---|---|
|
Tous les fichiers journaux situés dans |
|
Journaux provenant de |
|
Les journaux dans |
Pour installer Fluent Bit pour envoyer des journaux depuis des conteneurs vers des CloudWatch journaux
-
Si vous n'avez pas encore d'espace de noms appelé
amazon-cloudwatch
, créez-en un en saisissant la commande suivante :kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
-
Exécutez la commande suivante pour créer un ConfigMap nom
cluster-info
avec le nom du cluster et la région à laquelle envoyer les journaux. Remplacezcluster-name
andcluster-region
avec le nom et la région de votre cluster.ClusterName=
cluster-name
RegionName=cluster-region
FluentBitHttpPort='2020' FluentBitReadFromHead='Off' [[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On' [[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On' kubectl create configmap fluent-bit-cluster-info \ --from-literal=cluster.name=${ClusterName} \ --from-literal=http.server=${FluentBitHttpServer} \ --from-literal=http.port=${FluentBitHttpPort} \ --from-literal=read.head=${FluentBitReadFromHead} \ --from-literal=read.tail=${FluentBitReadFromTail} \ --from-literal=logs.region=${RegionName} -n amazon-cloudwatchDans cette commande, le
FluentBitHttpServer
permettant de surveiller les métriques de plugin est activé par défaut. Pour le désactiver, remplacez la troisième ligne de la commande parFluentBitHttpPort=''
(chaîne vide) dans la commande.Également par défaut, Fluent Bit lit les fichiers journaux de processus, et ne capture que les nouveaux journaux après son déploiement. Si vous souhaitez faire le contraire, définissez
FluentBitReadFromHead='On'
et il va collecter tous les journaux dans le système de fichiers. -
Téléchargez et déployez le daemonset Fluent Bit sur le cluster en exécutant l'une des commandes suivantes.
-
Si vous souhaitez une configuration optimisée de Fluent Bit pour les ordinateurs Linux, exécutez cette commande.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit.yaml
-
Si vous souhaitez une configuration optimisée de Fluent Bit pour les ordinateurs Windows, exécutez cette commande.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-windows.yaml
-
Si vous utilisez des ordinateurs Linux et que vous souhaitez une configuration Fluent Bit plus similaire à Fluentd, exécutez cette commande.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-compatible.yaml
Important
La configuration du daemonset Fluent Bit définit par défaut le niveau de journalisation surINFO, ce qui peut entraîner des coûts d'ingestion de CloudWatch logs plus élevés. Si vous souhaitez réduire le volume et les coûts d'ingestion des journaux, vous pouvez modifier le niveau des journaux surERROR.
Pour plus d'informations sur la réduction du volume des journaux, consultez (En option) Réduction du volume des journaux de Fluent Bit
-
-
Validez le déploiement en entrant la commande suivante. Chaque nœud doit avoir un pod nommé fluent-bit-*.
kubectl get pods -n amazon-cloudwatch
Les étapes ci-dessus créent les ressources suivantes dans le cluster :
-
Un compte de service nommé
Fluent-Bit
dans l'espace de nomsamazon-cloudwatch
. Ce compte de service est utilisé pour exécuter le Fluent BitdaemonSet. Pour plus d'informations, consultez Managing Service Accounts (Gestion des comptes de service)dans la documentation Reference de Kubernetes. -
Un rôle de cluster rôle nommé
Fluent-Bit-role
dans l'espace de nomsamazon-cloudwatch
. Ce rôle de cluster octroie des autorisationsget
,list
etwatch
sur les journaux de pod au compte de serviceFluent-Bit
. Pour plus d'informations, consultez la section APIPrésentationdans la référence Kubernetes. -
Un ConfigMap nommé
Fluent-Bit-config
dans l'espace deamazon-cloudwatch
noms. Il ConfigMap contient la configuration à utiliser par Fluent Bit. Pour plus d'informations, consultez Configurer un pod pour utiliser un ConfigMapdans la documentation des tâches Kubernetes.
Si vous souhaitez vérifier votre configuration Fluent Bit, procédez comme suit.
Vérifier la configuration Fluent Bit
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans le panneau de navigation, choisissez Groupes de journaux.
-
Assurez-vous que vous êtes dans la région où vous avez déployé Fluent Bit.
-
Vérifiez la liste des groupes de journaux dans la région. Vous devez voir ce qui suit :
-
/aws/containerinsights/
Cluster_Name
/application -
/aws/containerinsights/
Cluster_Name
/host -
/aws/containerinsights/
Cluster_Name
/dataplane
-
-
Accédez à l'un de ces groupes de journaux et cochez la case Last Event Time (Heure du dernier événement) pour les flux de journaux. S'il est récent par rapport au moment où vous avez déployé Fluent Bi , la configuration est vérifiée.
Il peut y avoir un léger retard dans la création du groupe de journaux
/dataplane
. Ceci est normal, car ces groupes de journaux ne sont créés que lorsque Fluent Bit commence à envoyer des journaux pour ce groupe de journaux.
Prise en charge des journaux multilignes
Pour plus d'informations sur l'utilisation de Fluent Bit avec des journaux multilignes, consultez les sections suivantes de la documentation Fluent Bit :
(En option) Réduction du volume des journaux de Fluent Bit
Par défaut, nous envoyons les journaux des applications Fluent Bit et les métadonnées Kubernetes à. CloudWatch Si vous souhaitez réduire le volume de données à destination CloudWatch, vous pouvez arrêter l'envoi à l'une de ces sources de données ou aux deux CloudWatch. Si vous avez suivi les étapes décrites sur cette page pour configurer Fluent Bit, téléchargez le YAML fichier manifeste Kubernetes à partir de la apply
commande kubectl que vous avez précédemment exécutée et modifiez-le avec vos modifications, que vous pourrez ensuite réappliquer à votre cluster. Sinon, si vous utilisez le EKS module complémentaire Amazon CloudWatch Observability ou le graphique Helm, consultez (Facultatif) Configuration supplémentaire pour plus d'informations sur la gestion de la configuration Fluent Bit à l'aide de la configuration avancée du module complémentaire ou du graphique Helm.
Pour arrêter les journaux d'application Fluent Bit, supprimez la section suivante du fichier Fluent Bit configuration
.
[INPUT] Name tail Tag application.* Path /var/log/containers/fluent-bit* Parser docker DB /fluent-bit/state/flb_log.db Mem_Buf_Limit 5MB Skip_Long_Lines On Refresh_Interval 10
Pour empêcher l'ajout de métadonnées Kubernetes aux événements de journal envoyés à CloudWatch, ajoutez les filtres suivants à la application-log.conf
section de la configuration Fluent Bit. Remplacez <Metadata_1>
et les champs similaires avec les identificateurs de métadonnées réels.
application-log.conf: | [FILTER] Name nest Match application.* Operation lift Nested_under kubernetes Add_prefix Kube. [FILTER] Name modify Match application.* Remove Kube.
<Metadata_1>
Remove Kube.<Metadata_2>
Remove Kube.<Metadata_3>
[FILTER] Name nest Match application.* Operation nest Wildcard Kube.* Nested_under kubernetes Remove_prefix Kube.
Résolution des problèmes
Si vous ne voyez pas ces groupes de journaux et que vous recherchez dans la bonne région, consultez les journaux daemonSet des modules Fluent Bit pour rechercher l'erreur.
Exécutez la commande suivante et vérifiez que l'état est Running
.
kubectl get pods -n amazon-cloudwatch
Si les journaux contiennent des erreurs liées aux IAM autorisations, vérifiez le IAM rôle attaché aux nœuds du cluster. Pour plus d'informations sur les autorisations requises pour exécuter un EKS cluster Amazon, consultez EKSIAMles politiques, les rôles et les autorisations Amazon dans le guide de EKS l'utilisateur Amazon.
Si l'état du pod est CreateContainerConfigError
, exécutez la commande suivante pour obtenir l'erreur exacte.
kubectl describe pod pod_name -n amazon-cloudwatch
Tableau de bord
Vous pouvez créer un tableau de bord pour surveiller les métriques de chaque plugin en cours d'exécution. Vous pouvez voir les données pour les octets d'entrée et de sortie, et pour les taux de traitement des enregistrements, ainsi que les erreurs de sortie et les taux de nouvelle tentative/échec. Pour consulter ces métriques, vous devez installer l' CloudWatch agent avec la collecte de métriques Prometheus pour les clusters EKS Amazon et Kubernetes. Pour plus d'informations sur la configuration du tableau de bord, consultez Installez l' CloudWatch agent avec la collecte de métriques Prometheus sur les clusters Amazon EKS et Kubernetes.
Note
Avant de pouvoir configurer ce tableau de bord, vous devez configurer Container Insights pour les métriques Prometheus. Pour plus d'informations, consultez Surveillance des métriques Prometheus Container Insights.
Pour créer un tableau de bord pour les métriques Prometheus de Fluent Bit
-
Créez des variables d'environnement, en remplaçant les valeurs à droite dans les lignes suivantes pour correspondre à votre déploiement.
DASHBOARD_NAME=
your_cw_dashboard_name
REGION_NAME=your_metric_region_such_as_us-west-1
CLUSTER_NAME=your_kubernetes_cluster_name
-
Créez le tableau de bord en exécutant la commande suivante.
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/fluent-bit/cw_dashboard_fluent_bit.json \ | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \ | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \ | xargs -0 aws cloudwatch put-dashboard --dashboard-name ${DASHBOARD_NAME} --dashboard-body