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 avancée pour OTel Container Insights sur Amazon EKS
Cette rubrique couvre les scénarios de configuration avancés pour OTel Container Insights sur Amazon EKS. Utilisez ces configurations pour personnaliser la collecte de mesures, filtrer les journaux, collecter les données télémétriques entre les comptes, ajouter des dimensions personnalisées et ajuster l'allocation des ressources pour les grands clusters.
Conditions préalables
Avant de configurer les paramètres avancés, vérifiez que vous répondez aux exigences suivantes.
-
OTel Container Insights est installé et en
ACTIVEétat sur votre cluster Amazon EKS -
Cluster Amazon EKS exécutant Kubernetes version 1.28 ou ultérieure
-
AWS CLI version 2.15.0 ou ultérieure
-
kubectlconfiguré pour communiquer avec votre cluster cible -
Autorisations IAM :
eks:UpdateAddoneks:DescribeAddon, etiam:AttachRolePolicy(requises pour la configuration entre comptes)
Modèle de configuration général
Toutes les configurations avancées suivent le même schéma. Vous transmettez une configuration JSON au amazon-cloudwatch-observability module complémentaire à l'aide de la aws eks
update-addon commande.
aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values 'JSON-configuration' \ --resolve-conflicts OVERWRITE
Important
Le --resolve-conflicts OVERWRITE drapeau remplace toute configuration complémentaire existante. Pour conserver les paramètres existants, fusionnez-les avec votre nouvelle configuration avant d'exécuter la commande.
Filtrage des journaux
Vous pouvez réduire les coûts liés CloudWatch aux journaux en excluant les journaux qui répondent à des critères spécifiques. Utilisez le filtrage des journaux pour supprimer les journaux détaillés ou au niveau du débogage avant que l'agent ne les envoie à. CloudWatch
Pour configurer le filtrage des journaux
-
Exécutez la commande suivante pour mettre à jour le module complémentaire avec une configuration de filtre de journal.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true } }, "exclude_filters": [ { "type": "log_level_filter", "log_level": "DEBUG" } ] } } } }' \ --resolve-conflicts OVERWRITE -
Vérifiez que l'état du module complémentaire est
ACTIVEpostérieur à la mise à jour.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text
La exclude_filters configuration supprime les entrées de journal correspondant au niveau de journal spécifié avant que l'agent ne les envoie à CloudWatch Logs. Cela réduit le volume d'ingestion de journaux et les coûts associés.
Multi-account collection
Vous pouvez envoyer des données télémétriques depuis des comptes de charge de travail vers un compte de surveillance central en configurant l'attribution de rôles IAM entre comptes. Cette approche vous donne une vue unique des métriques et des journaux de plusieurs clusters Amazon EKS sur différents AWS comptes.
Pour configurer la collecte sur plusieurs comptes
Pour créer le rôle multi-comptes dans le compte de surveillance
-
Dans le compte de surveillance central, créez un rôle IAM avec une politique de confiance qui permet au compte de charge de travail de l'assumer. Remplacez
workload-account-idpar l'ID de AWS compte du compte de charge de travail.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::workload-account-id:root" }, "Action": "sts:AssumeRole" } ] } -
Associez la politique
CloudWatchAgentServerPolicygérée au rôle multicompte.
Pour configurer le module complémentaire pour la livraison entre comptes
-
Dans le compte de charge de travail, mettez à jour le module complémentaire pour qu'il assume le rôle multi-comptes.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS etmonitoring-account-idpar l'ID de AWS compte du compte de surveillance central.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "credentials": { "role_arn": "arn:aws:iam::monitoring-account-id:role/CrossAccountCWObservabilityRole" } } } }' \ --resolve-conflicts OVERWRITE -
Vérifiez que l'état du module complémentaire est
ACTIVEpostérieur à la mise à jour.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text
Dimensions métriques personnalisées
Vous pouvez ajouter des dimensions personnalisées dérivées des étiquettes Kubernetes à vos métriques Container Insights. Les dimensions personnalisées vous permettent de filtrer et de regrouper les métriques avec une granularité plus fine, par exemple par équipe, environnement ou niveau d'application.
Pour ajouter des dimensions personnalisées à partir d'étiquettes Kubernetes
-
Exécutez la commande suivante pour configurer des dimensions personnalisées.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS etlabel-keypar l'étiquette Kubernetes à utiliser comme dimension.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true, "metric_dimensions": { "custom_dimensions": ["label-key"] } } } } } } }' \ --resolve-conflicts OVERWRITE -
Vérifiez que l'état du module complémentaire est
ACTIVEpostérieur à la mise à jour.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text
Une fois la configuration prise en compte, les étiquettes Kubernetes spécifiées apparaissent sous forme de dimensions sur vos métriques Container Insights dans. CloudWatch
Optimisation des ressources pour les grands clusters
Pour les clusters de grande taille, vous devrez peut-être augmenter les limites de processeur et de mémoire de l' CloudWatchagent DaemonSet. L'allocation de ressources par défaut fonctionne bien pour les petits clusters, mais les clusters plus importants génèrent davantage de données de télémétrie et nécessitent des ressources d'agent supplémentaires.
Le tableau suivant fournit des directives de dimensionnement basées sur la taille du cluster.
| Taille du cluster | Demande de processeur | Limite du processeur | Demande de mémoire | Limite de mémoire |
|---|---|---|---|---|
| Petit (20 nœuds ou moins) | 100 m | 200 m | 128 milles | 256 Mi |
| Moyen (21 à 100 nœuds) | 200 m | 400 m | 256 Mi | 512 milles |
| Grand (plus de 100 nœuds) | 300 m | 500 m | 384 Mi | 768 milles |
| Extra-large (plus de 500 nœuds) | 500 m | 1 000 m | 512 milles | 1 Gi |
Pour configurer les limites de ressources de l'agent DaemonSet
-
Exécutez la commande suivante pour définir les demandes de ressources et les limites.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS et les valeurs des ressources par les valeurs du tableau précédent.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "resources": { "requests": { "cpu": "cpu-request", "memory": "memory-request" }, "limits": { "cpu": "cpu-limit", "memory": "memory-limit" } } } }' \ --resolve-conflicts OVERWRITE -
Vérifiez que le statut du module complémentaire est bien
ACTIVEdéfini et que les modules d'agent redémarrent avec la nouvelle allocation de ressources.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text -
Vérifiez que les pods d'agents fonctionnent avec les nouvelles limites de ressources.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -o jsonpath='{.items[0].spec.containers[0].resources}'
Vérifier les modifications de configuration
Après avoir appliqué une configuration avancée, vérifiez que le module complémentaire est en bon état et que les modules d'agent ont redémarré correctement.
Pour vérifier les modifications de configuration
-
Vérifiez que l'état du module complémentaire est
ACTIVE.cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS.aws eks describe-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --query "addon.{Status:status,ConfigValues:configurationValues}" \ --output table -
Vérifiez que les modules d'agent ont redémarré et qu'ils sont en bon
Runningétat.kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agentTous les modules d'agent doivent afficher un
Runningétat indiquant une heure de redémarrage récente.
Résolution des problèmes
Suivez les instructions suivantes pour résoudre les problèmes courants liés aux configurations avancées.
Add-on la mise à jour échoue avec ConfigurationConflict
Symptôme : La aws eks update-addon commande renvoie une ConfigurationConflict erreur.
Cause : La configuration JSON que vous avez fournie est mal formée ou contient des clés non valides.
Solution : Procédez comme suit pour résoudre ce problème.
-
Validez votre configuration JSON à l'aide d'un linter JSON ou en exécutant la commande suivante.
echo 'your-json-configuration' | python3 -m json.tool -
Vérifiez que toutes les clés de configuration sont valides pour le
amazon-cloudwatch-observabilitymodule complémentaire. -
Réessayez la mise à jour avec le JSON corrigé.
Cross-account les métriques n'apparaissent pas dans le compte de surveillance
Symptôme : une fois que vous avez configuré la collecte multi-comptes, les métriques n'apparaissent pas dans le compte de surveillance central.
Cause : La politique ou les autorisations de confiance relatives aux rôles IAM entre comptes sont incorrectes.
Solution : Procédez comme suit pour résoudre ce problème.
-
Vérifiez que la politique de confiance du compte de surveillance autorise le compte de charge de travail à assumer le rôle.
-
Vérifiez que la politique
CloudWatchAgentServerPolicygérée est attachée au rôle multi-comptes. -
Vérifiez les journaux de l'agent pour détecter
AssumeRoleles erreurs.kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=100 | grep -i "AssumeRole\|AccessDenied" -
Vérifiez que le rôle IAM de l'agent dans le compte de charge de travail est
sts:AssumeRoleautorisé à utiliser l'ARN du rôle inter-comptes.