Instale el agente de CloudWatch con la colección de métricas de Prometheus en clústeres de Amazon EKS y de Kubernetes
En esta sección se explica cómo se configura el agente de CloudWatch con supervisión de Prometheus en un clúster que ejecute Amazon EKS o Kubernetes. Después de hacerlo, el agente raspa e importa automáticamente las métricas para las siguientes cargas de trabajo que se ejecutan en ese clúster.
-
AWS App Mesh
-
NGINX
-
Memcached
-
Java/JMX
-
HAProxy
-
Fluent Bit
También puede configurar el agente para que raspe e importe cargas de trabajo y fuentes de Prometheus adicionales.
Antes de seguir estos pasos e instalar el agente de CloudWatch para recopilar métricas de Prometheus, debe contar con un clúster que se ejecute en Amazon EKS o un clúster de Kubernetes que se ejecute en una instancia de Amazon EC2.
Requisitos del grupo de seguridad de la VPC
Las reglas de entrada de los grupos de seguridad para las cargas de trabajo de Prometheus deben abrir los puertos de Prometheus al agente de CloudWatch para raspar las métricas de Prometheus por la IP privada.
Las reglas de salida del grupo de seguridad para el agente de CloudWatch deben permitir que el agente de CloudWatch se conecte al puerto de cargas de trabajo de Prometheus mediante la IP privada.
Instale el agente de CloudWatch con la obtención de métricas de Prometheus en clústeres de Amazon EKS y de Kubernetes
En esta sección se explica cómo se configura el agente de CloudWatch con supervisión de Prometheus en un clúster que ejecute Amazon EKS o Kubernetes. Después de hacerlo, el agente raspa e importa automáticamente las métricas para las siguientes cargas de trabajo que se ejecutan en ese clúster.
-
AWS App Mesh
-
NGINX
-
Memcached
-
Java/JMX
-
HAProxy
-
Fluent Bit
También puede configurar el agente para que raspe e importe cargas de trabajo y fuentes de Prometheus adicionales.
Antes de seguir estos pasos e instalar el agente de CloudWatch para recopilar métricas de Prometheus, debe contar con un clúster que se ejecute en Amazon EKS o un clúster de Kubernetes que se ejecute en una instancia de Amazon EC2.
Requisitos del grupo de seguridad de la VPC
Las reglas de entrada de los grupos de seguridad para las cargas de trabajo de Prometheus deben abrir los puertos de Prometheus al agente de CloudWatch para raspar las métricas de Prometheus por la IP privada.
Las reglas de salida del grupo de seguridad para el agente de CloudWatch deben permitir que el agente de CloudWatch se conecte al puerto de cargas de trabajo de Prometheus mediante la IP privada.
Temas
Configuración de roles de IAM
El primer paso es configurar el rol de IAM necesario en el clúster. Hay dos métodos:
-
Configure un rol de IAM para una cuenta de servicio, también conocida como Función de servicio. Este método funciona tanto para el tipo de lanzamiento de EC2 como para el tipo de lanzamiento de Fargate.
-
Agregue una política de IAM al rol de IAM que se utiliza en el clúster. Esto solo funciona para el tipo de lanzamiento de EC2.
Configure una función de servicio (tipo de lanzamiento de EC2 y tipo de lanzamiento de Fargate)
Para configurar una función de servicio, ingrese el siguiente comando. Sustituya MyCluster
por el nombre del clúster.
eksctl create iamserviceaccount \ --name cwagent-prometheus \ --namespace amazon-cloudwatch \ --cluster
MyCluster
\ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
Agregue una política al rol de IAM del grupo de nodos (solo tipo de lanzamiento de EC2)
Para configurar la política de IAM en un grupo de nodos para la compatibilidad con Prometheus
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel de navegación, seleccione Instances (Instancias).
-
Debe encontrar el prefijo en el nombre del rol de IAM de ese clúster. Para ello, active la casilla situada junto al nombre de una instancia del clúster y seleccione Acciones, Seguridad, Modificar rol de IAM. Después, copie el prefijo del rol de IAM; por ejemplo,
eksctl-dev303-workshop-nodegroup
. Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Seleccione Roles en el panel de navegación.
-
Utilice el cuadro de búsqueda para buscar el prefijo que copió anteriormente en este procedimiento y elija ese rol.
-
Seleccione Asociar políticas.
-
Utilice el cuadro de búsqueda para buscar CloudWatchAgentServerPolicy. Active la casilla de verificación situada junto a CloudWatchAgentServerPolicy y elija Asociar política.
Instalación del agente de CloudWatch para recopilar métricas de Prometheus
Debe instalarse el agente de CloudWatch en el clúster para recopilar las métricas. La instalación del agente es diferente en los clústeres de Amazon EKS y en los de Kubernetes.
Elimine las versiones anteriores del agente de CloudWatch compatible con Prometheus
Si ya ha instalado en el clúster una versión del agente de CloudWatch compatible con Prometheus, debe eliminar esa versión con el siguiente comando. Solo es necesario hacerlo con las versiones anteriores del agente compatible con Prometheus. No es necesario que elimine el agente de CloudWatch que habilita Información de contenedores sin compatibilidad con Prometheus.
kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
Instalación del agente de CloudWatch en clústeres de Amazon EKS con el tipo de lanzamiento de EC2
Para instalar el agente de CloudWatch compatible con Prometheus en un clúster de Amazon EKS, siga estos pasos.
Para instalar el agente de CloudWatch compatible con Prometheus en un clúster de Amazon EKS
-
Ejecute el siguiente comando para comprobar si el espacio de nombres de
amazon-cloudwatch
ya se ha creado:kubectl get namespace
-
Si
amazon-cloudwatch
no aparece en los resultados, créelo con el siguiente comando:kubectl create namespace amazon-cloudwatch
-
Para implementar el agente con la configuración predeterminada y hacer que envíe datos a la región de AWS en la que está instalado, escriba el siguiente comando:
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
Para que el agente envíe datos a una otra región, siga estos pasos:
-
Descargue el archivo YAML del agente con 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-eks.yaml
-
Abra el archivo con un editor de texto y busque el bloque
cwagentconfig.json
del archivo. -
Agregue las líneas resaltadas, especificando la región que desee:
cwagentconfig.json: | {
"agent": { "region": "us-east-2" },
"logs": { ... -
Guarde el archivo e implemente el agente utilizando el archivo actualizado.
kubectl apply -f prometheus-eks.yaml
-
Instalación del agente de CloudWatch en clústeres de Amazon EKS con el tipo de lanzamiento de Fargate
Para instalar el agente de CloudWatch compatible con Prometheus en un clúster de Amazon EKS con el tipo de lanzamiento Fargate, siga estos pasos.
Para instalar el agente de CloudWatch compatible con Prometheus en un clúster de Amazon EKS con el tipo de lanzamiento de Fargate
-
Ingrese el siguiente comando para crear un perfil de Fargate para el agente de CloudWatch de modo que pueda ejecutarse dentro del clúster. Sustituya
MyCluster
por el nombre del clúster.eksctl create fargateprofile --cluster
MyCluster
\ --name amazon-cloudwatch \ --namespace amazon-cloudwatch -
Para instalar el agente de CloudWatch, ingrese el siguiente comando. Sustituya
MyCluster
por el nombre del clúster. Este nombre se utiliza en el nombre del grupo de registros donde se almacenan los eventos de registro recopilados por el agente y también se utiliza como dimensión en las métricas recopiladas por el agente.Sustituya
Región
por el nombre de la Región a la que desea enviar la métrica. Por ejemplo,us-west-1
.curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml | sed "s/{{cluster_name}}/
MyCluster
/;s/{{region_name}}/region
/" | kubectl apply -f -
Instalación del agente de CloudWatch en un clúster de Kubernetes
Para instalar el agente de CloudWatch compatible con Prometheus en un clúster en el que se ejecuta Kubernetes, ingrese el siguiente comando:
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" | kubectl apply -f -
Sustituya MyCluster
por el nombre del clúster. Este nombre se utiliza en el nombre del grupo de registros donde se almacenan los eventos de registro recopilados por el agente y también se utiliza como dimensión en las métricas recopiladas por el agente.
Sustituya region
por el nombre de la región de AWS a la que desea enviar la métrica. Por ejemplo, us-west-1
.
Verifique que el agente esté en ejecución
En los clústeres de Amazon EKS y en los de Kubernetes, puede ingresar el siguiente comando para confirmar que el agente se está ejecutando.
kubectl get pod -l "app=cwagent-prometheus" -n amazon-cloudwatch
Si en los resultados solo aparece un pod del agente de CloudWatch con el estado Running
, el agente está ejecutando y recopilando métricas de Prometheus. De forma predeterminada, el agente de CloudWatch recopila métricas para App Mesh, NGINX, Memcached, Java/JMX y HAProxy por minuto. Para obtener más información sobre estas métricas, consulte Métricas de Prometheus que el agente de CloudWatch recopila. Para obtener instrucciones sobre cómo ver las métricas de Prometheus en CloudWatch, consulte Visualización de las métricas de Prometheus
También puede configurar el agente de CloudWatch para que recopile métricas de otros exportadores de Prometheus. Para obtener más información, consulte El raspado de fuentes de Prometheus adicionales y la importación de tales métricas.