Didacticiel pour ajouter une nouvelle cible de récupération Prometheus : Redis OSS sur les clusters Amazon EKS et Kubernetes - Amazon CloudWatch

Didacticiel pour ajouter une nouvelle cible de récupération Prometheus : Redis OSS sur les clusters Amazon EKS et Kubernetes

Ce didacticiel propose une présentation pratique de l’utilisation des métriques Prometheus d’un exemple d’application Redis OSS sur Amazon EKS et Kubernetes. Redis OSS (https://redis.io/) est un magasin de structures de données open source (sous licence BSD) en mémoire, utilisé comme base de données, cache et agent de messages. Pour en savoir plus, consultez redis.

redis_exportateur (sous licence MIT) est utilisé pour exposer les métriques Prometheus Redis OSS sur le port spécifié (par défaut : 0.0.0.0:9121). Pour en savoir plus, consultez redis_exporter.

Les images Docker dans les deux référentiels Docker Hub suivants sont utilisées dans ce didacticiel :

Pour installer un exemple de charge de travail Redis OSS qui expose les métriques Prometheus
  1. Définissez l’espace de noms pour l’exemple de charge de travail Redis OSS.

    REDIS_NAMESPACE=redis-sample
  2. Si vous exécutez Redis OSS sur un cluster avec le type de lancement Fargate, vous devez configurer un profil Fargate. Pour configurer le profil, saisissez la commande suivante. Remplacez MyCluster par le nom de votre cluster.

    eksctl create fargateprofile --cluster MyCluster \ --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE
  3. Saisissez la commande suivante pour installer l’exemple de charge de travail Redis OSS.

    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_traffic/redis/redis-traffic-sample.yaml \ | sed "s/{{namespace}}/$REDIS_NAMESPACE/g" \ | kubectl apply -f -
  4. L’installation comprend un service nommé my-redis-metrics qui expose les métriques Redis OSS Prometheus sur le port 9121. Saisissez la commande suivante pour obtenir les détails du service :

    kubectl describe service/my-redis-metrics -n $REDIS_NAMESPACE

    Dans la section Annotations des résultats, vous verrez deux annotations correspondant à la configuration de récupération Prometheus de l'agent CloudWatch, afin qu'il puisse détecter automatiquement les applications :

    prometheus.io/port: 9121 prometheus.io/scrape: true

    La configuration de récupération Prometheus associée est disponible dans la section - job_name: kubernetes-service-endpoints de kubernetes-eks.yaml ou kubernetes-k8s.yaml.

Pour commencer à collecter les métriques Prometheus Redis OSS dans CloudWatch
  1. Téléchargez la dernière version du fichier kubernetes-eks.yaml ou kubernetes-k8s.yaml en saisissant l'une des commandes suivantes. Pour un cluster Amazon EKS avec le type de lancement EC2, saisissez cette commande.

    curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml

    Pour un cluster Amazon EKS avec le type de lancement Fargate, saisissez cette commande.

    curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml

    Pour un cluster Kubernetes s'exécutant sur une instance Amazon EC2, saisissez cette commande :

    curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
  2. Ouvrez le fichier avec un éditeur de texte et trouvez la section cwagentconfig.json. Ajoutez la sous-section suivante et enregistrez les modifications. Assurez-vous que l'indentation suive le modèle existant.

    { "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName"]], "metric_selectors": [ "^redis_net_(in|out)put_bytes_total$", "^redis_(expired|evicted)_keys_total$", "^redis_keyspace_(hits|misses)_total$", "^redis_memory_used_bytes$", "^redis_connected_clients$" ] }, { "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName","cmd"]], "metric_selectors": [ "^redis_commands_total$" ] }, { "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName","db"]], "metric_selectors": [ "^redis_db_keys$" ] },

    La section que vous avez ajoutée place les métriques Redis OSS dans la liste d’autorisations de l’agent CloudWatch. Pour une liste de ces métriques, reportez-vous à la section suivante.

  3. Si vous avez déjà déployé l'agent CloudWatch avec prise en charge de Prometheus dans ce cluster, vous devez le supprimer en saisissant la commande suivante.

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
  4. Déployez l'agent CloudWatch avec votre configuration mise à jour en saisissant l'une des commandes suivantes : Remplacez MyCluster (MonCluster) et region (région) pour correspondre à vos paramètres.

    Pour un cluster Amazon EKS avec le type de lancement EC2, saisissez cette commande.

    kubectl apply -f prometheus-eks.yaml

    Pour un cluster Amazon EKS avec le type de lancement Fargate, saisissez cette commande.

    cat prometheus-eks-fargate.yaml \ | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \ | kubectl apply -f -

    Pour un cluster Kubernetes, saisissez cette commande.

    cat prometheus-k8s.yaml \ | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \ | kubectl apply -f -

Affichage de vos métriques Prometheus Redis OSS

Ce didacticiel envoie les métriques suivantes à l'espace de noms ContainerInsights/Prometheus dans CloudWatch. Vous pouvez utiliser la console CloudWatch pour afficher les métriques dans cet espace de noms.

Nom de la métrique Dimensions

redis_net_input_bytes_total

ClusterName, Namespace

redis_net_output_bytes_total

ClusterName, Namespace

redis_expired_keys_total

ClusterName, Namespace

redis_evicted_keys_total

ClusterName, Namespace

redis_keyspace_hits_total

ClusterName, Namespace

redis_keyspace_misses_total

ClusterName, Namespace

redis_memory_used_bytes

ClusterName, Namespace

redis_connected_clients

ClusterName, Namespace

redis_commands_total

ClusterName, Namespace, cmd

redis_db_keys

ClusterName, Namespace, db

Note

Les valeurs de la dimension cmd peuvent être : append, client, command, config, dbsize, flushall, get, incr, info, latency ou slowlog.

Les valeurs de la dimension db peuvent être db0 ou db15.

Vous pouvez également créer un tableau de bord CloudWatch pour vos métriques Prometheus Redis OSS.

Pour créer un tableau de bord pour les métriques Prometheus Redis OSS
  1. Créez des variables d'environnement, en remplaçant les valeurs ci-dessous pour correspondre à votre déploiement.

    DASHBOARD_NAME=your_cw_dashboard_name REGION_NAME=your_metric_region_such_as_us-east-1 CLUSTER_NAME=your_k8s_cluster_name_here NAMESPACE=your_redis_service_namespace_here
  2. Saisissez la commande suivante pour créer le tableau de bord.

    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/redis/cw_dashboard_redis.json \ | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \ | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \ | sed "s/{{YOUR_NAMESPACE}}/${NAMESPACE}/g" \