Tutoriel pour ajouter une nouvelle cible Prometheus Scrape : Redis OSS sur les clusters Amazon EKS et Kubernetes - Amazon CloudWatch

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.

Tutoriel pour ajouter une nouvelle cible Prometheus Scrape : Redis OSS sur les clusters Amazon EKS et Kubernetes

Ce didacticiel fournit une introduction pratique pour extraire les métriques Prometheus d'un exemple d'application Redis OSS sur Amazon EKS et Kubernetes. Redis OSS (https://redis.io/) est un magasin de structure de données en mémoire open source (sous licence BSD), utilisé comme base de données, cache et courtier de messages. Pour en savoir plus, consultez redis.

redis_exporter (licence MIT License) est utilisé pour exposer les métriques Prometheus de 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 de 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. Entrez 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 inclut un service nommé my-redis-metrics qui expose la métrique Prometheus de Redis OSS sur le port 9121. Entrez la commande suivante pour obtenir les détails du service :

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

    Dans la Annotations section des résultats, vous verrez deux annotations correspondant à la configuration Prometheus Scrape de l'agent, afin qu'il puisse découvrir CloudWatch automatiquement les charges de travail :

    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 de 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 EC2 lancement, entrez 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 exécuté sur une EC2 instance Amazon, entrez 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 des CloudWatch agents autorisés. Pour une liste de ces métriques, reportez-vous à la section suivante.

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

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
  4. Déployez l' CloudWatch agent avec votre configuration mise à jour en saisissant l'une des commandes suivantes. Remplacez MyCluster et region adaptez-le à vos paramètres.

    Pour un cluster Amazon EKS avec le type de EC2 lancement, entrez 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 -

Afficher vos métriques Redis OSS Prometheus

Ce didacticiel envoie les métriques suivantes à l'espace de noms ContainerInsights/Prometheus dans. CloudWatch Vous pouvez utiliser la CloudWatch console pour voir les métriques de 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

ClusterNameNamespace, cmd

redis_db_keys

ClusterName,Namespace, base de données

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 CloudWatch tableau de bord pour vos métriques Redis OSS Prometheus.

Pour créer un tableau de bord pour les métriques Prometheus de 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" \