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.
Déployez OTel Container Insights avec Helm
Le graphique Amazon CloudWatch Observability Helm fournit une option de déploiement flexible pour OTel Container Insights. Il installe l' CloudWatch agent (OTel-based) avec le récepteur OpenTelemetry filelog pour la collecte des journaux. Le graphique Helm est maintenu à https://github.com/aws-observability/helm-charts
Utilisez le graphique Helm lorsque vous avez besoin d'une ou de plusieurs des fonctionnalités suivantes :
-
Fine-grained contrôle de la configuration de l'agent
-
OTel-native collecte de journaux à l'aide du récepteur filelog (aucune dépendance à Fluent Bit)
-
Gestion personnalisée des certificats TLS via cert-manager
-
Non-EKS Clusters Kubernetes (ROSA, Kubernetes autogérés)
-
GitOps flux de travail avec ArgoCD ou Flux
Conditions préalables
Avant de déployer OTel Container Insights avec Helm, vérifiez que vous répondez aux exigences suivantes.
-
Un cluster Amazon EKS existant exécutant Kubernetes version 1.28 ou ultérieure
-
Helm version 3.9 ou ultérieure
-
kubectlconfiguré pour communiquer avec votre cluster cible -
Autorisations IAM : politique
CloudWatchAgentServerPolicygérée associée au rôle d'agent -
Un fournisseur OpenID Connect (OIDC) configuré pour les rôles IAM pour les comptes de service (IRSA)
-
Accès Internet sortant du cluster vers les points de terminaison CloudWatch
Installer le tableau Helm
Procédez comme suit pour déployer OTel Container Insights à l'aide du graphique Helm.
Étape 1 : ajouter le référentiel Helm
Ajoutez le référentiel de AWS diagrammes Observability Helm à votre configuration Helm locale.
Pour ajouter le référentiel Helm
-
Exécutez la commande suivante pour ajouter le référentiel.
helm repo add aws-observability \ https://aws-observability.github.io/helm-charts -
Mettez à jour le référentiel pour obtenir les dernières versions des graphiques.
helm repo update
Étape 2 : création du rôle IAM
Créez un rôle IAM qui permet à l' CloudWatch agent d'envoyer des données à CloudWatch. Ce rôle utilise IRSA pour associer les autorisations IAM à un compte de service Kubernetes.
Pour créer le rôle IAM pour l'agent CloudWatch
-
Récupérez l'URL de l'émetteur OIDC pour votre cluster.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS.aws eks describe-cluster \ --namecluster-name\ --query "cluster.identity.oidc.issuer" \ --output text -
Créez le rôle IAM avec une politique de confiance pour l'IRSA.
account-idRemplacez-le par votre identifiant de AWS compte etoidc-idpar l'identifiant du fournisseur OIDC de l'étape précédente (la partie suivantehttps://oidc.eks.region.amazonaws.com/id/).aws iam create-role \ --role-name EKS-CW-Observability-Role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::account-id:oidc-provider/oidc.eks.region.amazonaws.com/id/oidc-id" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region.amazonaws.com/id/oidc-id:sub": "system:serviceaccount:amazon-cloudwatch:cloudwatch-agent" } } }] }' -
Attachez la stratégie gérée par
CloudWatchAgentServerPolicyau rôle.aws iam attach-role-policy \ --role-name EKS-CW-Observability-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Étape 3 : Installation du graphique
Installez le graphique Amazon CloudWatch Observability Helm avec OTel Container Insights activé.
Pour installer le graphique Helm
-
Exécutez la commande suivante.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS,regionpar votre AWS région etaccount-idpar votre identifiant de AWS compte.helm install amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=trueImportant
Le paramètre
otelContainerInsights.enabledest obligatoire. OTel Container Insights n'est pas activé par défaut.
Étape 4 : vérifier l'installation
Vérifiez que la version Helm et les modules d'agent ont été correctement déployés.
Pour vérifier l'installation de Helm
-
Vérifiez que l'état de la version de Helm s'affiche
deployed.helm list -n amazon-cloudwatch -
Vérifiez que le module opérateur est en cours d'exécution.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability -
Vérifiez que les modules d' CloudWatch agent sont en cours d'exécution sur tous les nœuds.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agentTous les modules d'agent doivent indiquer
Runningleur statut.
Principales options de configuration
Les tableaux suivants décrivent les principales valeurs du graphique de Helm que vous pouvez configurer. Transmettez ces valeurs à l'aide de l'--setindicateur ou d'un values.yaml fichier personnalisé.
Paramètres du cluster
| Paramètre | Par défaut | Description |
|---|---|---|
clusterName |
— | Nom du cluster Amazon EKS. Obligatoire. |
region |
— | AWS Région dans laquelle le cluster s'exécute. Obligatoire. |
otelContainerInsights.enabled |
false |
Active OTel Container Insights avec le récepteur de journaux de fichiers. |
Journaux de conteneurs (récepteur de fichiers OTel)
| Paramètre | Par défaut | Description |
|---|---|---|
containerLogs.enabled |
true |
Active la collecte des journaux de conteneurs à l'aide du récepteur de fichiers OTel. |
containerLogs.logGroupName |
/aws/containerinsights/ |
Le nom du groupe de CloudWatch journaux pour les journaux de conteneur. |
containerLogs.logRetentionDays |
7 |
Le nombre de jours pendant lesquels les journaux des conteneurs sont conservés dans CloudWatch Logs. |
Agent (métriques)
| Paramètre | Par défaut | Description |
|---|---|---|
agent.enabled |
true |
Active l' CloudWatch agent DaemonSet pour la collecte des métriques. |
agent.serviceAccount.name |
cloudwatch-agent |
Nom du compte de service Kubernetes de l'agent. |
agent.resources.requests.cpu |
100m |
La demande du processeur pour le conteneur d'agents. |
agent.resources.requests.memory |
128Mi |
Demande de mémoire pour le conteneur d'agents. |
agent.resources.limits.cpu |
200m |
Limite du processeur pour le conteneur d'agents. |
agent.resources.limits.memory |
256Mi |
Limite de mémoire pour le conteneur d'agents. |
Supervision du GPU
| Paramètre | Par défaut | Description |
|---|---|---|
agent.config.logs.metrics_collected.kubernetes.enhanced_container_insights |
true |
Active les métriques Enhanced Container Insights, y compris les métriques GPU. |
dcgmExporter.enabled |
false |
Active l'exportateur DCGM pour les métriques du GPU NVIDIA. Nécessite des nœuds GPU NVIDIA. |
neuronMonitor.enabled |
false |
Active le moniteur Neuron pour les métriques AWS Inferentia et Trainium. |
Gestion des certificats TLS
L'opérateur CloudWatch Observability a besoin de certificats TLS pour la communication par webhook. Par défaut, le graphique génère des certificats auto-signés. Vous pouvez utiliser cert-manager pour gérer automatiquement les certificats.
Self-signed certificats (par défaut)
Par défaut, le graphique Helm génère une autorité de certification autosignée et émet des certificats à partir de cette autorité de certification. Aucune configuration supplémentaire n’est requise. Le graphique fait automatiquement pivoter ces certificats lors des mises à niveau.
intégration du gestionnaire de certificats
Vous pouvez utiliser cert-manager pour automatiser l'émission et le renouvellement des certificats. Cette approche est utile lorsque votre organisation a besoin de certificats signés en externe ou d'une gestion centralisée des certificats.
Pour configurer l'intégration du gestionnaire de certificats
-
Vérifiez que cert-manager est installé dans votre cluster.
kubectl get pods -n cert-manager -
Installez le graphique Helm avec le gestionnaire de certificats activé.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS,regionpar votre AWS région etaccount-idpar votre identifiant de AWS compte.helm install amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true \ --set admissionWebhooks.certManager.enabled=true
Lorsque cert-manager est activé, le graphique crée une Certificate ressource que cert-manager utilise pour émettre et gérer automatiquement le certificat TLS Webhook.
Note
Vous pouvez également utiliser cert-manager avec des émetteurs externes tels que Vault. HashiCorp Pour configurer un émetteur externe, définissez admissionWebhooks.certManager.issuerRef.name et associez l'émetteur admissionWebhooks.certManager.issuerRef.kind de votre gestionnaire de certificats.
Améliorez le graphique
Mettez à niveau le graphique de Helm pour appliquer de nouvelles valeurs de configuration ou pour passer à une version plus récente du graphique.
Pour mettre à jour le graphique de Helm
-
Mettez à jour le référentiel Helm pour obtenir les dernières versions des graphiques.
helm repo update -
Exécutez la commande de mise à niveau avec les valeurs souhaitées.
cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS,regionpar votre AWS région etaccount-idpar votre identifiant de AWS compte.helm upgrade amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true -
Vérifiez que la mise à niveau s'est terminée correctement.
helm list -n amazon-cloudwatchLe numéro de révision doit être incrémenté et le statut doit être affiché
deployed.
Astuce
Pour éviter de perdre des valeurs de configuration lors des mises à niveau, stockez vos valeurs personnalisées dans un values.yaml fichier et transmettez-les avec l'-f values.yamlindicateur.
Désinstaller le graphique
Pour supprimer OTel Container Insights de votre cluster, désinstallez la version Helm.
Pour désinstaller le graphique Helm
-
Exécutez la commande suivante pour désinstaller la version.
helm uninstall amazon-cloudwatch-observability \ --namespace amazon-cloudwatch -
Supprimez éventuellement l'espace de noms s'il n'est plus nécessaire.
kubectl delete namespace amazon-cloudwatch
Après avoir désinstallé le graphique Helm, le rôle IAM et la configuration du fournisseur OIDC restent dans votre AWS compte. Supprimez ces ressources séparément si elles ne sont plus nécessaires.
aws iam detach-role-policy \ --role-name EKS-CW-Observability-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy aws iam delete-role \ --role-name EKS-CW-Observability-Role
Vérifiez les données dans CloudWatch
Après avoir installé le graphique Helm, les données de Container Insights apparaissent dans CloudWatch un délai de 3 à 5 minutes.
Vérifiez les métriques
Pour vérifier les métriques dans CloudWatch
-
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans le volet de navigation, choisissez Container Insights.
-
Vérifiez que votre cluster apparaît dans la liste des clusters et que les métriques d'infrastructure sont renseignées.
Vérifiez les journaux
Pour vérifier que des groupes de journaux existent pour votre cluster, exécutez la commande suivante. cluster-nameRemplacez-le par le nom de votre cluster Amazon EKS.
aws logs describe-log-groups \ --log-group-name-prefix "/aws/containerinsights/cluster-name" \ --query "logGroups[].logGroupName" \ --output table
Résolution des problèmes
Suivez les instructions suivantes pour résoudre les problèmes courants lors du déploiement d'OTel Container Insights avec Helm.
Module de commande intégré CrashLoopBackOff
Symptôme : Lorsque vous exécutezkubectl get pods -n
amazon-cloudwatch, le module opérateur affiche l'CrashLoopBackOffétat.
Cause : Le pod de l'opérateur ne peut pas démarrer en raison de problèmes liés au certificat TLS ou d'autorisations insuffisantes.
Solution : Procédez comme suit pour résoudre ce problème.
-
Consultez les journaux du poste de commande pour détecter les erreurs liées aux certificats.
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability --tail=50 -
Vérifiez que le secret TLS du webhook existe dans l'espace de noms.
kubectl get secrets -n amazon-cloudwatch | grep webhook -
Si vous utilisez cert-manager, vérifiez que l'état de la
Certificateressource s'affiche.Readykubectl get certificate -n amazon-cloudwatch -
Si le certificat est manquant ou non valide, désinstallez et réinstallez le graphique pour régénérer les certificats.
helm uninstall amazon-cloudwatch-observability -n amazon-cloudwatch
Les pods d'agent ne sont pas planifiés sur tous les nœuds
Symptôme : L'agent DaemonSet affiche moins de pods que le nombre de nœuds de votre cluster.
Cause : la saturation des nœuds, les contraintes de ressources ou les sélecteurs de nœuds empêchent les pods d'agents de planifier sur certains nœuds.
Solution : Procédez comme suit pour résoudre ce problème.
-
Vérifiez l' DaemonSet état des problèmes de planification.
kubectl get daemonset -n amazon-cloudwatch cloudwatch-agent -
Vérifiez s'il n'y a pas de modules imprévus et consultez leurs événements.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --field-selector=status.phase!=Running -
Si les nœuds présentent des taches, ajoutez des tolérances aux valeurs du graphique de Helm. Par exemple, pour tolérer toutes les taches, améliorez le graphique avec l'indicateur suivant.
helm upgrade amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --reuse-values \ --set "agent.tolerations[0].operator=Exists" -
Vérifiez que les modules d'agent s'exécutent désormais sur tous les nœuds.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -o wide