Gérez Amazon Managed Service pour Prometheus AWS avec des contrôleurs pour Kubernetes - Amazon Managed Service for Prometheus

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) 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 AWS Controllers for Kubernetes, les définitions de ressources personnalisées (CRD) 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 et le contrôleur ACK pour Amazon Managed Service for Prometheus.

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.

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
  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 dans la documentation des AWS contrôleurs pour Kubernetes sur. GitHub Utilisez la région approprié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 | 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_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.

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

  4. 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. Remplacez WORKSPACE-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. Remplacez WORKSPACE-ID par l’ID d’espace de travail de l’étape précédente. Remplacez TOPIC-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.

  5. 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 ResourceTypepar le type de ressource que vous souhaitez supprimer WorkspaceAlertManagerDefinition, ouRuleGroupNamespace. Remplacez ResourceNamepar 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
  1. Utilisez la commande suivante pour obtenir le prometheusEndpoint pour votre espace de travail. Remplacez WORKSPACE-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.

  2. Créez un fichier avec le texte suivant et nommez-le prometheus-config.yaml. Remplacez compte par votre ID de compte, workspaceURL/ par l’URL que vous venez de trouver et ré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
  3. 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.

  4. Exécutez la commande suivante en utilisant le PrometheusChartNamePrometheusNamespace, et PrometheusChartVersiontrouvé à 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.

  5. 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. Remplacez Region par celle 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 (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.