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 soit en mesure de 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.
Utiliser
kubectl
Utiliser un
kubeconfig
fichier
Utilisation kubectl
pour l'authentification
À utiliser kubectl
pour créer un compte de service pour l' CloudWatch agent
-
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"]
Utilisation kubeconfig
pour l'authentification
Vous pouvez également utiliser un kubeconfig
fichier 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. Cela vous permet également de supprimer votre dépendance à l'égard de l'API du plan de contrôle Kubernetes pour l'authentification, de rationaliser votre configuration et d'augmenter potentiellement 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 kubeconfig
fichier, créez une demande de signature de certificat (CSR) pour l'admin/{create_your_own_user}
utilisateur ayant le rôle system:masters
Kubernetes. 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
kubectl
client 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 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
logs
section, 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
logs
cette 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
region
dans 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
statsd
une section àmetrics
la 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
kubeconfig
fichier pour l'authentification, ajoutez lekube_config_path
paramètre pour 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
kubectl
client 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
port
dans le fichiercwagent-daemonset.yaml
comme 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 pod
pod-name
-n amazon-cloudwatch -
Exécutez la commande suivante pour vérifier les journaux.
kubectl logs
pod-name
-n amazon-cloudwatch