Tutorial zum Hinzufügen eines neuen Prometheus-Scrape-Ziels: Redis OSS auf Amazon-EKS- und Kubernetes-Clustern
Dieses Tutorial bietet eine praktische Einführung zum Scraping der Prometheus-Metriken einer Redis-OSS-Beispielanwendung auf Amazon EKS und Kubernetes. Redis OSS (https://redis.io/) ist ein Open Source (BSD lizenziert), In-Memory-Datenstrukturspeicher, der als Datenbank, Cache und Message Broker verwendet wird. Weitere Informationen finden Sie unter redis
redis_exporter (mit 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:
So installieren Sie eine Redis-OSS-Beispiel-Workload, die Prometheus-Metriken verfügbar macht
-
Legen Sie den Namespace für die Redis-OSS-Beispiel-Workload fest.
REDIS_NAMESPACE=redis-sample -
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
MyClusterdurch den Namen Ihres Clusters.eksctl create fargateprofile --clusterMyCluster\ --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE -
Geben Sie den folgenden Befehl ein, um die 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 - -
Die Installation umfasst einen Service namens
my-redis-metrics, der die Redis-OSS-Prometheus-Metrik auf Port 9121 verfügbar macht. Geben Sie den folgenden Befehl ein, um die Details des Services abzurufen:kubectl describe service/my-redis-metrics -n $REDIS_NAMESPACEIm Abschnitt
Annotationsder Ergebnisse sehen Sie zwei Anmerkungen, die der Scrape-Konfiguration von Prometheus des CloudWatch-Agenten entsprechen, damit er die Workloads automatisch erkennen kann:prometheus.io/port: 9121 prometheus.io/scrape: trueDie zugehörige Prometheus-Scrape-Konfiguration finden Sie im
- job_name: kubernetes-service-endpoints-Abschnitt vonkubernetes-eks.yamloderkubernetes-k8s.yaml.
So beginnen Sie mit der Erfassung von Redis-OSS-Prometheus-Metriken in CloudWatch
-
Laden Sie die aktuelle Version der
kubernetes-eks.yaml- oderkubernetes-k8s.yaml-Datei herunter, indem Sie einen der folgenden Befehle eingeben. Geben Sie diesen Befehl für einen Amazon-EKS-Cluster mit dem EC2-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.yamlGeben 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.yamlGeben Sie für einen Kubernetes-Cluster, der auf einer Amazon-EC2-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 -
Ö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 hinzugefügten Abschnitt werden die Redis-OSS-Metriken in die Zulassungsliste des CloudWatch Agenten eingefügt. Eine Liste dieser Metriken finden Sie im folgenden Abschnitt.
-
Wenn der CloudWatch-Agent mit Prometheus-Unterstützung bereits in dem Cluster bereitgestellt ist, müssen Sie ihn löschen, indem Sie den folgenden Befehl eingeben.
kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch -
Stellen Sie den CloudWatch-Agenten mit Ihrer aktualisierten Konfiguration bereit, indem Sie einen der folgenden Befehle eingeben. Ersetzen Sie
MyClusterundRegionentsprechend Ihren Einstellungen.Geben Sie diesen Befehl für einen Amazon-EKS-Cluster mit dem EC2-Starttyp ein.
kubectl apply -f prometheus-eks.yamlGeben 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 -
Anzeigen Ihrer Redis-OSS-Prometheus-Metriken
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 anzuzeigen.
| Metrikname | Dimensions (Abmessungen) |
|---|---|
|
|
ClusterName, |
|
|
ClusterName, |
|
|
ClusterName, |
|
|
ClusterName, |
|
|
ClusterName, |
|
|
ClusterName, |
|
|
ClusterName, |
|
|
ClusterName, |
|
|
ClusterName, |
|
|
ClusterName, |
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.
So erstellen Sie ein Dashboard für Redis-OSS-Prometheus-Metriken
-
Erstellen Sie Umgebungsvariablen und ersetzen Sie die folgenden Werte entsprechend Ihrer Bereitstellung.
DASHBOARD_NAME=your_cw_dashboard_nameREGION_NAME=your_metric_region_such_as_us-east-1CLUSTER_NAME=your_k8s_cluster_name_hereNAMESPACE=your_redis_service_namespace_here -
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" \