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.
Configuration de l' CloudWatch agent pour collecter les métriques du cluster
Important
Si vous installez Container Insights sur un cluster Amazon EKS, nous vous recommandons d'utiliser le module complémentaire Amazon CloudWatch Observability EKS pour l'installation, au lieu de suivre les instructions de cette section. Pour en savoir plus et des instructions, consultez Démarrage rapide avec le module complémentaire Amazon CloudWatch Observability EKS.
Pour configurer Container Insights afin de collecter des métriques, vous pouvez suivre les étapes de Configuration Quick Start pour Container Insights sur Amazon EKS et Kubernetes ou les étapes de cette section. Dans les étapes suivantes, vous configurez l' CloudWatch agent pour qu'il puisse collecter des métriques à partir de vos clusters.
Si vous effectuez une installation dans un cluster Amazon EKS et que vous suivez les instructions de cette section le 6 novembre 2023 ou après cette date, vous installez Container Insights avec observabilité améliorée pour Amazon EKS dans le cluster.
Étape 1 : créer un espace de noms pour CloudWatch
Procédez comme suit pour créer l'espace de noms Kubernetes demandé. amazon-cloudwatch CloudWatch Vous pouvez ignorer cette étape si vous avez déjà créé cet espace de noms.
Pour créer un espace de noms pour CloudWatch
-
Entrez 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
Étape 2 : Créer un compte de service dans le cluster
Utilisez l'une des méthodes suivantes pour créer un compte de service pour l' CloudWatch agent, si vous n'en avez pas déjà un.
-
Utilisation des
kubectl -
Utiliser un fichier
kubeconfig
Utiliser kubectl pour l’authentification
À utiliser kubectl pour créer un compte de service pour l' CloudWatchagent
-
Entrez 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/cwagent/cwagent-serviceaccount.yaml
Si vous n'avez pas suivi les étapes précédentes, mais que vous possédez déjà un compte de service pour l' CloudWatch agent que vous souhaitez utiliser, vous devez vous assurer qu'il respecte les règles suivantes. En outre, lors des autres étapes d'installation de Container Insights, vous devez utiliser le nom de ce compte de service au lieu de cloudwatch-agent.
rules: - apiGroups: [""] resources: ["pods", "nodes", "endpoints"] verbs: ["list", "watch"] - apiGroups: [ "" ] resources: [ "services" ] verbs: [ "list", "watch" ] - apiGroups: ["apps"] resources: ["replicasets", "daemonsets", "deployments", "statefulsets"] verbs: ["list", "watch"] - apiGroups: ["batch"] resources: ["jobs"] verbs: ["list", "watch"] - apiGroups: [""] resources: ["nodes/proxy"] verbs: ["get"] - apiGroups: [""] resources: ["nodes/stats", "configmaps", "events"] verbs: ["create", "get"] - apiGroups: [""] resources: ["configmaps"] resourceNames: ["cwagent-clusterleader"] verbs: ["get","update"] - nonResourceURLs: ["/metrics"] verbs: ["get", "list", "watch"] - apiGroups: [ "discovery.k8s.io" ] resources: [ "endpointslices" ] verbs: [ "list", "watch", "get" ]
Utiliser kubeconfig pour l’authentification
Vous pouvez également utiliser un fichier kubeconfig pour l’authentification. Cette méthode vous permet de ne pas avoir besoin d'un compte de service en spécifiant directement le kubeconfig chemin dans la configuration de votre CloudWatch agent. Elle vous permet également de supprimer votre dépendance à l’API du plan de contrôle Kubernetes pour l’authentification, ce qui simplifie votre configuration et peut potentiellement renforcer la sécurité en gérant l’authentification via votre fichier kubeconfig.
Pour utiliser cette méthode, mettez à jour le fichier de configuration de votre CloudWatch agent afin de spécifier le chemin d'accès à votre kubeconfig fichier, comme dans l'exemple suivant.
{ "logs": { "metrics_collected": { "kubernetes": { "cluster_name": "YOUR_CLUSTER_NAME", "enhanced_container_insights": false, "accelerated_compute_metrics": false, "tag_service": false, "kube_config_path": "/path/to/your/kubeconfig" "host_ip": "HOSTIP" } } } }
Pour créer un fichier kubeconfig, créez une requête de signature de certificat (CSR) pour l’utilisateur admin/{create_your_own_user} avec le rôle Kubernetes system:masters. Signez ensuite avec l’autorité de certification (CA) du cluster Kubernetes et créez le fichier kubeconfig.
Étape 3 : créer un ConfigMap pour l' CloudWatchagent
Suivez les étapes ci-dessous pour créer un ConfigMap pour l' CloudWatch agent.
Pour créer un ConfigMap pour l' CloudWatch agent
-
Téléchargez le ConfigMap fichier YAML sur votre hôte
kubectlclient en exécutant la commande suivante :curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-configmap-enhanced.yaml -
Modifiez le fichier YAML téléchargé comme suit :
-
cluster_name – Dans la section
kubernetes, remplacez{{cluster_name}}par le nom de votre cluster. Supprimez les caractères{{}}. Sinon, si vous utilisez un cluster Amazon EKS, vous pouvez supprimer le champ"cluster_name"et sa valeur. Si c'est le cas, l' CloudWatch agent détecte le nom du cluster dans les EC2 balises Amazon.
-
-
(Facultatif) Apportez d'autres modifications au ConfigMap en fonction de vos besoins de surveillance, comme suit :
-
metrics_collection_interval – Dans la section
kubernetes, vous pouvez spécifier à quelle fréquence l'agent collecte les métriques. Le durée par défaut est de 60 secondes. Dans kubelet, l'intervalle de collecte par défaut (via cadvisor) est de 15 secondes, vous ne devez donc pas définir cette valeur sur moins de 15 secondes. -
endpoint_override — Dans la
logssection, vous pouvez spécifier le point de terminaison CloudWatch Logs si vous souhaitez remplacer le point de terminaison par défaut. Vous pouvez effectuer cette opération si vous publiez à partir d'un cluster dans un VPC et souhaitez que les données soient transmises à un point de terminaison d'un VPC. -
force_flush_interval — Dans
logscette section, vous pouvez spécifier l'intervalle de traitement par lots des événements du journal avant leur publication dans Logs. CloudWatch Le durée par défaut est 5 secondes. -
region – Par défaut, l'agent a publié les métriques dans la région où se trouve le composant master. Pour contourner ce problème; vous pouvez ajouter un champ
regiondans la sectionagent: par exemple,"region":"us-west-2". -
section statsd — Si vous souhaitez que l'agent CloudWatch Logs s'exécute également en tant qu'écouteur StatsD dans chaque nœud de travail de votre cluster, vous pouvez ajouter
statsdune section àmetricsla section, comme dans l'exemple suivant. Pour plus d'informations sur les autres options StatsD pour cette section, consultez Récupération de métriques personnalisées avec StatsD."metrics": { "metrics_collected": { "statsd": { "service_address":":8125" } } }Voici un exemple complet de la section de code JSON. Si vous utilisez un fichier
kubeconfigpour l’authentification, ajoutez le paramètrekube_config_pathpour spécifier le chemin d’accès à votre fichier kubeconfig.{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "kubernetes": { "cluster_name": "MyCluster", "metrics_collection_interval": 60, "kube_config_path": "/path/to/your/kubeconfig" //if using kubeconfig for authentication } }, "force_flush_interval": 5, "endpoint_override": "logs.us-east-1.amazonaws.com" }, "metrics": { "metrics_collected": { "statsd": { "service_address": ":8125" } } } }
-
-
Créez le ConfigMap dans le cluster en exécutant la commande suivante.
kubectl apply -f cwagent-configmap-enhanced.yaml
Étape 4 : Déployer l' CloudWatch agent en tant que DaemonSet
Pour terminer l'installation de l' CloudWatch agent et commencer à collecter les métriques du conteneur, procédez comme suit.
Pour déployer l' CloudWatch agent en tant que DaemonSet
-
-
Si vous ne souhaitez pas utiliser StatsD sur le cluster, entrez 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/cwagent/cwagent-daemonset.yaml -
Si vous souhaitez utiliser StatsD, procédez comme suit :
-
Téléchargez le DaemonSet fichier YAML sur votre hôte
kubectlclient en exécutant la commande suivante.curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml -
Supprimez la mise en commentaire de la section
portdans le fichiercwagent-daemonset.yamlcomme dans l'exemple suivant :ports: - containerPort: 8125 hostPort: 8125 protocol: UDP -
Déployez l' CloudWatch agent dans votre cluster en exécutant la commande suivante.
kubectl apply -f cwagent-daemonset.yaml -
Déployez l' CloudWatch agent sur les nœuds Windows de votre cluster en exécutant la commande suivante. L'écouteur StatsD n'est pas pris en charge par l' CloudWatch agent sous Windows.
kubectl apply -f cwagent-daemonset-windows.yaml
-
-
-
Assurez-vous que l'agent est déployé en exécutant la commande suivante.
kubectl get pods -n amazon-cloudwatch
Une fois terminé, l' CloudWatch agent crée un groupe de journaux nommé /aws/containerinsights/ et envoie les événements du journal des performances à ce groupe de journaux. Si vous avez également configuré l'agent en tant que port d'écoute StatsD, l'agent écoute également les métriques StatsD sur le port 8125 avec l'adresse IP du nœud dans lequel le pod d'application est programmé.Cluster_Name/performance
Résolution des problèmes
Si l'agent ne se déploie pas correctement, essayez ce qui suit :
-
Exécutez la commande suivante pour obtenir la liste des pods.
kubectl get pods -n amazon-cloudwatch -
Exécutez la commande suivante et vérifiez les événements au bas de la sortie.
kubectl describe podpod-name-n amazon-cloudwatch -
Exécutez la commande suivante pour vérifier les journaux.
kubectl logspod-name-n amazon-cloudwatch