Configuration de l' CloudWatch agent pour collecter les métriques du cluster - Amazon CloudWatch

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
  1. 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
  2. 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.

  3. (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 section agent : 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 le kube_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" } } } }
  4. 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 :

      1. 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
      2. Supprimez la mise en commentaire de la section port dans le fichier cwagent-daemonset.yaml comme dans l'exemple suivant :

        ports: - containerPort: 8125 hostPort: 8125 protocol: UDP
      3. Déployez l' CloudWatch agent dans votre cluster en exécutant la commande suivante.

        kubectl apply -f cwagent-daemonset.yaml
      4. 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
  1. 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/Cluster_Name/performance 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é.

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