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
Amazon Managed Service for Prometheus est intégré à AWS Controllers for Kubernetes (ACK)
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
Prérequis
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 pour créer des rôles Amazon Managed Service for Prometheus et IAM par programmation.
-
Vous devez disposer d’un cluster Amazon EKS 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
YOUR_CLUSTER_NAME
etAWS_REGION
par les valeurs pertinentes pour votre compte.eksctl utils associate-iam-oidc-provider \ --cluster ${
YOUR_CLUSTER_NAME
} --region ${AWS_REGION
} \ --approvePour plus d’informations sur l’utilisation d’OIDC avec Amazon EKS, consultez les sections Authentification du fournisseur d’identité OIDC et Creating an IAM OIDC provider dans le Guide l’utilisateur Amazon EKS.
-
Le pilote CIS Amazon EBS doit être installé sur votre cluster Amazon EKS.
-
L’AWS CLI doit être installée. Le AWS CLI est utilisé pour appeler des AWS fonctionnalités depuis la ligne de commande.
-
Helm, le gestionnaire de packages pour Kubernetes, doit être installé.
-
Les métriques du plan de contrôle avec Prometheus doivent être configurées dans votre cluster Amazon EKS.
-
Vous devez disposer d’une rubrique Amazon Simple Notification Service (Amazon 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.
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
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
-
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
dans la documentation des AWS contrôleurs pour Kubernetes sur. GitHub Utilisez la région
appropriée à votre système, par exempleus-east-1
.export SERVICE=prometheusservice export RELEASE_VERSION=`curl -sL https://api.github.com/repos/aws-controllers-k8s/$SERVICE-controller/releases/latest | grep '"tag_name":' | cut -d'"' -f4` 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_REGIONAprè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
, notammentstatus: deployed
. -
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
-
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
. kubectl describe workspace my-amp-workspace -n $ACK_SYSTEM_NAMESPACE
Note
Vous pouvez également utiliser un espace de travail existant
plutôt que d’en créer un. -
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
. RemplacezWORKSPACE-ID
par l’ID d’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
. RemplacezWORKSPACE-ID
par l’ID d’espace de travail de l’étape précédente. RemplacezTOPIC-ARN
par l'ARN de la rubrique Amazon SNS à laquelle envoyer des notifications,et
REGION par Région AWS celui que vous utilisez. N’oubliez pas qu’Amazon Managed Service for Prometheus doit disposer d’autorisations 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 RuleGroupsNamespaceDataet AlertManagerDefinitionData.
-
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 supprimerWorkspace
AlertManagerDefinition
, ouRuleGroupNamespace
. RemplacezResourceName
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
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 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
-
Utilisez la commande suivante pour obtenir le
prometheusEndpoint
pour votre espace de travail. RemplacezWORKSPACE-ID
par l’ID d’espace de travail de 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.
-
Créez un fichier avec le texte suivant et nommez-le
prometheus-config.yaml
. Remplacezcompte
par votre ID de compte,workspaceURL/
par l’URL que vous venez de trouver etrégion
par la Région AWS appropriée à 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 -
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 être15.2.0
. -
Exécutez la commande suivante en utilisant le
PrometheusChartName
, etPrometheusNamespace
PrometheusChartVersion
trouvé à l'étape précédente.helm upgrade
PrometheusChartName
prometheus-community/prometheus -nPrometheusNamespace
-f prometheus-config.yaml --versionPrometheusChartVersion
Après quelques minutes, un message s’affiche, indiquant que la mise à niveau a réussi.
-
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
. RemplacezRegion
par celle Région AWS que vous utilisez, etWorkspaceURL/
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 (CRD), se trouvent dans 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.