

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.

# Gérez Amazon Managed Service pour Prometheus AWS avec des contrôleurs pour Kubernetes
<a name="integrating-ack"></a>

Amazon Managed Service for Prometheus est intégré à [AWS Controllers for Kubernetes (ACK)](https://aws-controllers-k8s.github.io/community/docs/community/overview/) et permet de gérer votre espace de travail, le gestionnaire d’alertes et les ressources de règles dans Amazon EKS. Vous pouvez utiliser les définitions de ressources personnalisées AWS Controllers for Kubernetes (CRDs) et les objets Kubernetes natifs sans avoir à définir de ressources en dehors de votre cluster.

Cette section explique comment configurer les AWS contrôleurs pour Kubernetes et Amazon Managed Service pour Prometheus dans un cluster Amazon EKS existant.

Vous pouvez également lire les articles de blog [présentant les AWS contrôleurs pour Kubernetes](https://aws.amazon.com/blogs/containers/aws-controllers-for-kubernetes-ack/) et [le contrôleur ACK pour Amazon Managed Service for](https://aws.amazon.com/blogs/mt/introducing-the-ack-controller-for-amazon-managed-service-for-prometheus/) Prometheus.

## Conditions préalables
<a name="ack-prereqs"></a>

Avant de commencer à intégrer AWS Controllers for Kubernetes et Amazon Managed Service for Prometheus à votre cluster Amazon EKS, vous devez remplir les conditions préalables suivantes.
+ Vous devez disposer d'une [autorisation Compte AWS et d'une autorisation](AMP-setting-up.md) pour créer des rôles Amazon Managed Service for Prometheus et IAM par programmation.
+ Vous devez disposer d’un [cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html) avec OpenID Connect (OIDC) activé.

  Si OIDC n’est pas activé, vous pouvez utiliser la commande suivante pour le faire. N'oubliez pas de remplacer le *YOUR\$1CLUSTER\$1NAME* et *AWS\$1REGION* par les valeurs correctes pour votre compte.

  ```
  eksctl utils associate-iam-oidc-provider \
      --cluster ${YOUR_CLUSTER_NAME} --region ${AWS_REGION} \
      --approve
  ```

  Pour plus d’informations sur l’utilisation d’OIDC avec Amazon EKS, consultez les sections [Authentification du fournisseur d’identité OIDC](https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html) et [Creating an IAM OIDC provider](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) dans le *Guide l’utilisateur Amazon EKS*. 
+ Le [pilote CIS Amazon EBS doit être installé](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html) sur votre cluster Amazon EKS.
+ L’[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) doit être installée. Le AWS CLI est utilisé pour appeler des AWS fonctionnalités depuis la ligne de commande.
+ [Helm](https://docs.aws.amazon.com/eks/latest/userguide/helm.html), le gestionnaire de packages pour Kubernetes, doit être installé.
+ [Les métriques du plan de contrôle avec Prometheus](https://docs.aws.amazon.com/eks/latest/userguide/prometheus.html) doivent être configurées dans votre cluster Amazon EKS.
+ Vous devez disposer d’une rubrique [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/)) dans laquelle vous souhaitez envoyer des alertes à partir de votre nouvel espace de travail. Assurez-vous d’avoir [autorisé Amazon Managed Service for Prometheus à envoyer des messages à la rubrique](AMP-alertmanager-receiver-AMPpermission.md).

Lorsque votre cluster Amazon EKS est correctement configuré, vous devez être en mesure de voir les métriques formatées pour Prometheus en appelant `kubectl get --raw /metrics`. Vous êtes maintenant prêt à installer un contrôleur de service AWS Controllers for Kubernetes et à l'utiliser pour déployer les ressources Amazon Managed Service for Prometheus.

## Déploiement d'un espace de travail avec AWS Controllers for Kubernetes
<a name="ack-deploy-workspace"></a>

Pour déployer un nouvel espace de travail Amazon Managed Service pour Prometheus, vous devez installer AWS un contrôleur Controllers for Kubernetes, puis l'utiliser pour créer l'espace de travail.

**Pour déployer un nouvel espace AWS de travail Amazon Managed Service pour Prometheus avec Controllers for Kubernetes**

1. Les commandes suivantes permettent d’utiliser Helm pour installer le contrôleur de service Amazon Managed Service for Prometheus. Pour plus d'informations, consultez [Installer un contrôleur ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/install/) dans la documentation des AWS contrôleurs pour Kubernetes sur. GitHub Utilisez la version *region* adaptée à votre système, par exemple`us-east-1`.

   ```
   export SERVICE=prometheusservice
   export RELEASE_VERSION=`curl -sL https://api.github.com/repos/aws-controllers-k8s/$SERVICE-controller/releases/latest | jq -r '.tag_name | ltrimstr("v")'`
   export ACK_SYSTEM_NAMESPACE=ack-system
   export AWS_REGION=region
   
   aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws
   helm install --create-namespace -n $ACK_SYSTEM_NAMESPACE ack-$SERVICE-controller \
     oci://public.ecr.aws/aws-controllers-k8s/$SERVICE-chart --version=$RELEASE_VERSION --set=aws.region=$AWS_REGION
   ```

   Après quelques instants, vous devriez voir une réponse similaire à la suivante, qui indique la réussite de l’opération.

   ```
   You are now able to create Amazon Managed Service for Prometheus (AMP) resources!
   The controller is running in "cluster" mode.
   The controller is configured to manage AWS resources in region: "us-east-1"
   ```

   Vous pouvez éventuellement vérifier que le contrôleur AWS Controllers for Kubernetes a été correctement installé à l'aide de la commande suivante.

   ```
   helm list --namespace $ACK_SYSTEM_NAMESPACE -o yaml
   ```

   Cela renverra des informations sur le contrôleur `ack-prometheusservice-controller`, notamment `status: deployed`.

1. Créez un fichier appelé `workspace.yaml` avec le texte suivant. Il sera utilisé comme configuration pour l’espace de travail que vous créez.

   ```
   apiVersion: prometheusservice.services.k8s.aws/v1alpha1
   kind: Workspace
   metadata:
     name: my-amp-workspace
   spec:
     alias: my-amp-workspace
     tags:
       ClusterName: EKS-demo
   ```

1. Exécutez la commande suivante pour créer votre espace de travail (cette commande dépend des variables système que vous avez définies à l’étape 1).

   ```
   kubectl apply -f workspace.yaml -n $ACK_SYSTEM_NAMESPACE
   ```

   Après quelques instants, vous devriez être en mesure de voir un nouvel espace de travail appelé `my-amp-workspace` dans votre compte.

   Exécutez la commande suivante pour afficher les détails et le statut de votre espace de travail, notamment l’*ID de l’espace de travail*. Vous pouvez également consulter le nouvel espace de travail dans la [console Amazon Managed Service for Prometheus](https://console.aws.amazon.com/prometheus).

   ```
   kubectl describe workspace my-amp-workspace -n $ACK_SYSTEM_NAMESPACE
   ```
**Note**  
Vous pouvez également [utiliser un espace de travail existant](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/) plutôt que d’en créer un.

1. Créez deux nouveaux fichiers yaml comme configuration pour les groupes de règles et AlertManager que vous créerez ensuite en utilisant la configuration suivante.

   Enregistrez cette configuration sous `rulegroup.yaml`. *WORKSPACE-ID*Remplacez-le par l'ID de l'espace de travail de l'étape précédente.

   ```
   apiVersion: prometheusservice.services.k8s.aws/v1alpha1
   kind: RuleGroupsNamespace
   metadata:
     name: default-rule
   spec:
     workspaceID: WORKSPACE-ID
     name: default-rule
     configuration: |
       groups:
       - name: example
         rules:
         - alert: HostHighCpuLoad
           expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 60
           for: 5m
           labels:
             severity: warning
             event_type: scale_up
           annotations:
             summary: Host high CPU load (instance {{ $labels.instance }})
             description: "CPU load is > 60%\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
         - alert: HostLowCpuLoad
           expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) < 30
           for: 5m
           labels:
             severity: warning
             event_type: scale_down
           annotations:
             summary: Host low CPU load (instance {{ $labels.instance }})
             description: "CPU load is < 30%\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
   ```

   Enregistrez la configuration suivante sous `alertmanager.yaml`. *WORKSPACE-ID*Remplacez-le par l'ID de l'espace de travail de l'étape précédente. *TOPIC-ARN*Remplacez-le par l'ARN de la rubrique Amazon SNS à laquelle envoyer des notifications, et *REGION* par le Région AWS que vous utilisez. N’oubliez pas qu’Amazon Managed Service for Prometheus [doit disposer d’autorisations](AMP-alertmanager-receiver-AMPpermission.md) pour accéder à la rubrique Amazon SNS.

   ```
   apiVersion: prometheusservice.services.k8s.aws/v1alpha1
   kind: AlertManagerDefinition
   metadata:
     name: alert-manager
   spec:
     workspaceID: WORKSPACE-ID
     configuration: |
       alertmanager_config: |
         route:
            receiver: default_receiver
         receivers:
           - name: default_receiver
             sns_configs:
             - topic_arn: TOPIC-ARN
               sigv4:
                 region: REGION
               message: |
                 alert_type: {{ .CommonLabels.alertname }}
                 event_type: {{ .CommonLabels.event_type }}
   ```
**Note**  
Pour en savoir plus sur les formats de ces fichiers de configuration, consultez les sections [RuleGroupsNamespaceData](https://docs.aws.amazon.com/prometheus/latest/APIReference/yaml-RuleGroupsNamespaceData.html) et [AlertManagerDefinitionData](https://docs.aws.amazon.com/prometheus/latest/APIReference/yaml-AlertManagerDefinitionData.html).

1. Exécutez les commandes suivantes pour créer la configuration de votre groupe de règles et de votre gestionnaire d’alertes (cette commande dépend des variables système que vous avez définies à l’étape 1).

   ```
   kubectl apply -f rulegroup.yaml -n $ACK_SYSTEM_NAMESPACE
   kubectl apply -f alertmanager.yaml -n $ACK_SYSTEM_NAMESPACE
   ```

   Les modifications seront disponibles en quelques instants.
**Note**  
Pour mettre à jour une ressource, plutôt que de la créer, il suffit de mettre à jour le fichier yaml et de réexécuter la commande `kubectl apply`.  
Pour supprimer une ressource, exécutez la commande suivante. Remplacez *ResourceType* par le type de ressource que vous souhaitez supprimer `Workspace``AlertManagerDefinition`, ou`RuleGroupNamespace`. Remplacez *ResourceName* par le nom de la ressource à supprimer.  

   ```
   kubectl delete ResourceType ResourceName -n $ACK_SYSTEM_NAMESPACE
   ```

Le déploiement du nouvel espace de travail est terminé. La section suivante décrit la configuration de votre cluster pour envoyer des métriques à cet espace de travail.

## Configuration de votre cluster Amazon EKS pour écrire dans l’espace de travail Amazon Managed Service for Prometheus
<a name="ack-configure-workspace"></a>

Cette section décrit comment utiliser Helm pour configurer l’instance Prometheus exécutée dans votre cluster Amazon EKS afin d’écrire à distance des métriques dans l’espace de travail Amazon Managed Service for Prometheus créé à la section précédente.

Pour cette procédure, vous aurez besoin du nom du rôle IAM que vous avez créé pour l’ingestion de métriques. Si vous ne l’avez pas déjà fait, consultez la section [Configuration de rôles de service pour l’ingestion de métriques à partir de clusters Amazon EKS](set-up-irsa.md#set-up-irsa-ingest) pour de plus amples informations et instructions. Si vous suivez ces instructions, le rôle IAM sera appelé `amp-iamproxy-ingest-role`.

**Pour configurer votre cluster Amazon EKS pour l’écriture à distance**

1. Utilisez la commande suivante pour obtenir le `prometheusEndpoint` pour votre espace de travail. *WORKSPACE-ID*Remplacez-le par l'ID de l'espace de travail indiqué dans la section précédente.

   ```
   aws amp describe-workspace --workspace-id WORKSPACE-ID
   ```

   Le point de terminaison prometheusEndpoint figurera dans les résultats renvoyés et sera formaté comme suit :

   ```
   https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-a1b2c3d4-a123-b456-c789-ac1234567890/
   ```

   Enregistrez cette URL pour l’utiliser lors des prochaines étapes.

1. Créez un fichier avec le texte suivant et nommez-le `prometheus-config.yaml`. *account*Remplacez-le par votre identifiant de compte, *workspaceURL/* par l'URL que vous venez de trouver et *region* par l'URL appropriée Région AWS à votre système.

   ```
   serviceAccounts:
           server:
               name: "amp-iamproxy-ingest-service-account"
               annotations:
                   eks.amazonaws.com/role-arn: "arn:aws:iam::account:role/amp-iamproxy-ingest-role"
   server:
       remoteWrite:
           - url: workspaceURL/api/v1/remote_write
             sigv4:
               region: region
             queue_config:
               max_samples_per_send: 1000
               max_shards: 200
               capacity: 2500
   ```

1. Recherchez le graphique Prometheus et les noms des espaces de noms ainsi que la version du graphique à l’aide de la commande Helm suivante.

   ```
   helm ls --all-namespaces
   ```

   D’après les étapes effectuées jusqu’à présent, le graphique Prometheus et l’espace de noms doivent tous deux être nommés `prometheus`, et la version du graphique peut être `15.2.0`.

1. Exécutez la commande suivante en utilisant le *PrometheusChartName**PrometheusNamespace*, et *PrometheusChartVersion* trouvé à l'étape précédente.

   ```
   helm upgrade PrometheusChartName prometheus-community/prometheus -n PrometheusNamespace -f prometheus-config.yaml --version PrometheusChartVersion
   ```

   Après quelques minutes, un message s’affiche, indiquant que la mise à niveau a réussi.

1. Vous pouvez éventuellement vérifier que les métriques ont bien été envoyées en interrogeant le point de terminaison Amazon Managed Service for Prometheus via `awscurl`. *Region*Remplacez-le par celui Région AWS que vous utilisez et *workspaceURL/* par l'URL que vous avez trouvée à l'étape 1.

   ```
   awscurl --service="aps" --region="Region" "workspaceURL/api/v1/query?query=node_cpu_seconds_total"
   ```

Vous avez maintenant créé un espace de travail Amazon Managed Service for Prometheus et vous y êtes connecté depuis votre cluster Amazon EKS, en utilisant des fichiers YAML comme configuration. Ces fichiers, appelés définitions de ressources personnalisées (CRDs), se trouvent au sein de votre cluster Amazon EKS. Vous pouvez utiliser le contrôleur AWS Controllers for Kubernetes pour gérer toutes vos ressources Amazon Managed Service for Prometheus directement depuis le cluster.