Tutorial zum Hinzufügen eines neuen Prometheus-Scrape-Ziels: Redis OSS auf Amazon EKS- und Kubernetes-Clustern - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Tutorial zum Hinzufügen eines neuen Prometheus-Scrape-Ziels: Redis OSS auf Amazon EKS- und Kubernetes-Clustern

Dieses Tutorial bietet eine praktische Einführung in das Scrapen der Prometheus-Metriken einer Redis OSS-Beispielanwendung auf Amazon EKS und Kubernetes. Redis OSS (https://redis.io/) ist ein Open-Source-Datenstrukturspeicher (BSD-lizenziert), der im Speicher gespeichert ist und als Datenbank, Cache und Nachrichtenbroker verwendet wird. Weitere Informationen finden Sie unter redis.

redis_exporter (MIT-Lizenz lizenziert) wird verwendet, um die Redis OSS Prometheus-Metriken auf dem angegebenen Port verfügbar zu machen (Standard: 0.0.0. 0:9121). Weitere Informationen finden Sie unter redis_exporter.

Die Docker-Images in den folgenden zwei Docker Hub-Repositories werden in diesem Tutorial verwendet:

Um einen Redis OSS-Beispiel-Workload zu installieren, der Prometheus-Metriken bereitstellt
  1. Legen Sie den Namespace für den Redis OSS-Beispiel-Workload fest.

    REDIS_NAMESPACE=redis-sample
  2. Wenn Sie Redis OSS auf einem Cluster mit dem Starttyp Fargate ausführen, müssen Sie ein Fargate-Profil einrichten. Geben Sie zum Einrichten des Profils den folgenden Befehl ein. Ersetzen Sie MyCluster mit dem Namen Ihres Clusters.

    eksctl create fargateprofile --cluster MyCluster \ --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE
  3. Geben Sie den folgenden Befehl ein, um den Redis OSS-Beispiel-Workload zu installieren.

    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. Die Installation umfasst einen Dienst mit dem Namenmy-redis-metrics, der die Redis OSS Prometheus-Metrik auf Port 9121 verfügbar macht. Geben Sie den folgenden Befehl ein, um die Details des Dienstes abzurufen:

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

    Im Annotations Bereich der Ergebnisse sehen Sie zwei Anmerkungen, die der Prometheus-Scrape-Konfiguration des CloudWatch Agenten entsprechen, sodass er die Workloads automatisch erkennen kann:

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

    Die zugehörige Prometheus-Scrape-Konfiguration finden Sie im - job_name: kubernetes-service-endpoints-Abschnitt von kubernetes-eks.yaml oder kubernetes-k8s.yaml.

Um mit der Erfassung von Redis OSS Prometheus-Metriken zu beginnen in CloudWatch
  1. Laden Sie die aktuelle Version der kubernetes-eks.yaml- oder kubernetes-k8s.yaml-Datei herunter, indem Sie einen der folgenden Befehle eingeben. Geben Sie für einen Amazon EKS-Cluster mit dem EC2 Starttyp diesen Befehl ein.

    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

    Geben Sie diesen Befehl für einen Amazon-EKS-Cluster mit dem Fargate-Starttyp ein.

    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

    Geben Sie für einen Kubernetes-Cluster, der auf einer EC2 Amazon-Instance ausgeführt wird, diesen Befehl ein.

    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. Öffnen Sie die Datei mit einem Texteditor und suchen Sie den Abschnitt cwagentconfig.json. Fügen Sie den folgenden Unterabschnitt hinzu und speichern Sie die Änderungen. Stellen Sie sicher, dass die Einrückung dem vorhandenen Muster folgt.

    { "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$" ] },

    In dem von Ihnen hinzugefügten Abschnitt werden die Redis OSS-Metriken in die Zulassungsliste für CloudWatch Agenten aufgenommen. Eine Liste dieser Metriken finden Sie im folgenden Abschnitt.

  3. Wenn Sie den CloudWatch Agenten mit Prometheus-Unterstützung bereits in diesem Cluster bereitgestellt haben, müssen Sie ihn löschen, indem Sie den folgenden Befehl eingeben.

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
  4. Stellen Sie den CloudWatch Agenten mit Ihrer aktualisierten Konfiguration bereit, indem Sie einen der folgenden Befehle eingeben. Ersetzen Sie ihn MyCluster und passen region Sie ihn Ihren Einstellungen an.

    Geben Sie für einen Amazon EKS-Cluster mit dem EC2 Starttyp diesen Befehl ein.

    kubectl apply -f prometheus-eks.yaml

    Geben Sie diesen Befehl für einen Amazon-EKS-Cluster mit dem Fargate-Starttyp ein.

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

    Geben Sie für einen Kubernetes-Cluster folgenden Befehl ein.

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

Ihre Redis OSS Prometheus-Metriken anzeigen

Dieses Tutorial sendet die folgenden Metriken an den ContainerInsights/Prometheus-Namespace in. CloudWatch Sie können die CloudWatch Konsole verwenden, um die Metriken in diesem Namespace zu sehen.

Metrikname Dimensionen

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

Anmerkung

Die Werte der cmd-Dimension können append, client, command, config, dbsize, flushall, get, incr, info, latency oder slowlog sein.

Die Werte der Db-Dimension können db0 oder db15 sein.

Sie können auch ein CloudWatch Dashboard für Ihre Redis OSS Prometheus-Metriken erstellen.

Um ein Dashboard für Redis OSS Prometheus-Metriken zu erstellen
  1. Erstellen Sie Umgebungsvariablen und ersetzen Sie die folgenden Werte entsprechend Ihrer Bereitstellung.

    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. Verwenden Sie den folgenden Befehl, um das Dashboard zu erstellen.

    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" \