Tutorial para agregar un nuevo destino de raspado de Prometheus: Redis OSS en clústeres de Amazon EKS y de Kubernetes
Este tutorial proporciona una introducción práctica para raspar las métricas de Prometheus de una aplicación de muestra de Redis OSS en Amazon EKS y Kubernetes. Redis OSS (https://redis.io/) es un almacén de estructuras de datos en memoria de código abierto (con licencia BSD), utilizado como base de datos, caché y agente de mensajes. Para obtener más información, consulte redis
redis_exporter (con licencia MIT) se utiliza para exponer las métricas de Redis OSS Prometheus en el puerto especificado (predeterminado: 0.0.0.0:9121). Para obtener más información, consulte redis_exporter
En este tutorial se utilizan las imágenes de Docker en los siguientes dos repositorios de Docker Hub:
Para instalar una carga de trabajo de Redis OSS de muestra que exponga las métricas de Prometheus
-
Establezca el espacio de nombres para la carga de trabajo de Redis OSS de muestra.
REDIS_NAMESPACE=redis-sample
-
Si ejecuta Redis OSS en un clúster con el tipo de lanzamiento de Fargate, debe configurar un perfil de Fargate. Para configurar el perfil, ingrese el siguiente comando: Sustituya
MyCluster
por el nombre del clúster.eksctl create fargateprofile --cluster
MyCluster
\ --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE -
Ingrese el siguiente comando para instalar la carga de trabajo de Redis OSS de muestra.
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 -
-
La instalación incluye un servicio llamado
my-redis-metrics
que expone la métrica de Redis OSS Prometheus en el puerto 9121; ingrese el siguiente comando para obtener los detalles del servicio:kubectl describe service/my-redis-metrics -n $REDIS_NAMESPACE
En la sección
Annotations
de los resultados, verá dos anotaciones que concuerdan con la configuración de raspado de Prometheus del agente de CloudWatch, para que pueda detectar automáticamente las cargas de trabajo:prometheus.io/port: 9121 prometheus.io/scrape: true
La configuración de raspado de Prometheus relacionada se encuentra en la sección
- job_name: kubernetes-service-endpoints
dekubernetes-eks.yaml
okubernetes-k8s.yaml
.
Para empezar a recopilar métricas de Redis OSS Prometheus en CloudWatch
-
Descargue la última versión del archivo de
kubernetes-eks.yaml
o el archivokubernetes-k8s.yaml
con uno de los siguientes comandos. Para un clúster de Amazon EKS con el tipo de lanzamiento de EC2, ingrese este comando.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
Para un clúster de Amazon EKS con el tipo de lanzamiento de Fargate, ingrese este comando.
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
En los clústeres de Kubernetes que se ejecuten en una instancia de Amazon EC2, ingrese el siguiente comando.
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
-
Abra el archivo con un editor de texto y busque la sección
cwagentconfig.json
. Agregue la subsección siguiente y guarde los cambios. Asegúrese de seguir el patrón existente de sangría.{ "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 sección que agregó coloca las métricas de Redis OSS en la lista de permitidos del agente de CloudWatch. Para obtener la lista de estas métricas, consulte la siguiente sección.
-
Si el agente de CloudWatch compatible con Prometheus ya está implementado en el clúster, debe eliminarlo con el siguiente comando:
kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
-
Implemente el agente de CloudWatch con la configuración actualizada con uno de los siguientes comandos. Reemplace
MyCluster
y laRegión
para que concuerde con la configuración.Para un clúster de Amazon EKS con el tipo de lanzamiento de EC2, ingrese este comando.
kubectl apply -f prometheus-eks.yaml
Para un clúster de Amazon EKS con el tipo de lanzamiento de Fargate, ingrese este comando.
cat prometheus-eks-fargate.yaml \ | sed "s/{{cluster_name}}/
MyCluster
/;s/{{region_name}}/region
/" \ | kubectl apply -f -Para un clúster de Kubernetes, escriba este comando:
cat prometheus-k8s.yaml \ | sed "s/{{cluster_name}}/
MyCluster
/;s/{{region_name}}/region
/" \ | kubectl apply -f -
Visualización de las métricas de Redis OSS Prometheus
En este tutorial se envían las siguientes métricas al espacio de nombres ContainerInsights/Prometheus en CloudWatch. Puede utilizar la consola de CloudWatch para ver las métricas de ese espacio de nombres.
Nombre de métrica | Dimensiones |
---|---|
|
ClusterName, |
|
ClusterName, |
|
ClusterName, |
|
ClusterName, |
|
ClusterName, |
|
ClusterName, |
|
ClusterName, |
|
ClusterName, |
|
ClusterName, |
|
ClusterName, |
nota
Los valores de la dimensión cmd pueden ser: append
, client
, command
, config
, dbsize
, flushall
, get
, incr
, info
, latency
o slowlog
.
Los valores de la dimensión db pueden ir de db0
a db15
.
También puede crear un panel de CloudWatch para las métricas de Redis OSS Prometheus.
Para crear un panel para las métricas de Redis OSS Prometheus
-
Cree variables de entorno mediante el reemplazo de los siguientes valores para que concuerden con la implementación.
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
-
Ingrese el siguiente comando para crear el panel.
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" \