En este tema se explica cómo exportar registros y métricas de un clúster de usuario de GKE en AWS a Cloud Logging y Cloud Monitoring.
Información general
Hay varias opciones para registrar y monitorizar con GKE en AWS. GKE se puede integrar con Cloud Logging y Cloud Monitoring. Como GKE se basa en Kubernetes de código abierto, muchas herramientas de código abierto y de terceros son compatibles.
Opciones de registro y monitorización
Tienes varias opciones de registro y monitorización para tu clúster de GKE en AWS:
Despliega los agentes de Cloud Logging y Cloud Monitoring para monitorizar y ver los registros de tus cargas de trabajo en la Google Cloud consola. En este tema se explica esta solución.
Usa herramientas de código abierto como Prometheus, Grafana y Elasticsearch. En este tema no se describe esta solución.
Utiliza soluciones de terceros, como Datadog. En este tema no se describe esta solución.
Cloud Logging y Cloud Monitoring
Con Cloud Logging y Cloud Monitoring, puedes crear paneles de control, enviar alertas, monitorizar y revisar los registros de las cargas de trabajo que se ejecutan en tu clúster. Debe configurar los agentes de Cloud Logging y Cloud Monitoring para recoger registros y métricas en su proyecto de Google Cloud. Si no configuras estos agentes, GKE en AWS no recogerá datos de registro ni de monitorización.
Qué datos se recogen
Una vez configurados, los agentes recogen registros y datos de métricas de tu clúster y de las cargas de trabajo que se ejecutan en él. Estos datos se almacenan en tu proyectoGoogle Cloud . El ID de proyecto se configura en el campo project_id
de un archivo de configuración al instalar el reenviador de registros.
Entre los datos recogidos se incluyen los siguientes:
- Registros de los servicios del sistema en cada uno de los nodos de trabajador.
- Registros de aplicaciones de todas las cargas de trabajo que se ejecutan en el clúster.
- Métricas de los servicios del clúster y del sistema. Para obtener más información sobre métricas específicas, consulta el artículo Métricas de Google Distributed Cloud.
- Si tus aplicaciones están configuradas con objetivos de extracción de Prometheus y anotadas con una configuración que incluye
prometheus.io/scrape
,prometheus.io/path
yprometheus.io/port
, métricas de aplicación de pods.
Los agentes se pueden inhabilitar en cualquier momento. Para obtener más información, consulta la sección Limpieza. Los datos recogidos por los agentes se pueden gestionar y eliminar como cualquier otro dato de métricas y registros, tal como se describe en la documentación de Cloud Monitoring y Cloud Logging.
Los datos de registro se almacenan de acuerdo con las reglas de conservación configuradas. La conservación de los datos de métricas varía en función del tipo.
Componentes de registro y monitorización
Para exportar la telemetría a nivel de clúster de GKE en AWS aGoogle Cloud, debe implementar los siguientes componentes en su clúster:
- Stackdriver Log Forwarder (stackdriver-log-forwarder-*). Un DaemonSet de Fluentbit que reenvía los registros de cada nodo de Kubernetes a Cloud Logging.
- Agente de métricas de GKE (gke-metrics-agent-*). Un DaemonSet basado en OpenTelemetry Collector que recoge datos de métricas y los reenvía a Cloud Monitoring.
Los manifiestos de estos componentes se encuentran en el repositorio anthos-samples de GitHub.
Requisitos previos
Un Google Cloud proyecto con la facturación habilitada. Para obtener más información sobre los costes, consulta la página Precios de Google Cloud Observability.
El proyecto también debe tener habilitadas las APIs Cloud Logging y Cloud Monitoring. Para habilitar estas APIs, ejecuta los siguientes comandos:
gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
Un entorno de GKE en AWS, incluido un clúster de usuario registrado en Connect. Ejecuta el siguiente comando para verificar que tu clúster está registrado.
gcloud container fleet memberships list
Si el clúster está registrado, la CLI de Google Cloud muestra el nombre y el ID del clúster.
NAME EXTERNAL_ID cluster-0 1abcdef-1234-4266-90ab-123456abcdef
Si no ves tu clúster en la lista, consulta el artículo Conectarse a un clúster mediante Connect.
Instala la herramienta de línea de comandos
git
en tu máquina.
Configurar permisos para Google Cloud Observability
Los agentes de registro y monitorización usan Workload Identity de flota para comunicarse con Cloud Logging y Cloud Monitoring. La identidad necesita permisos para escribir registros y métricas en tu proyecto. Para añadir los permisos, ejecuta los siguientes comandos:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver]" \
--role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver]" \
--role=roles/monitoring.metricWriter
Sustituye PROJECT_ID
por tu Google Cloud proyecto.
Conectarse al host bastión
Para conectarte a tus recursos de GKE en AWS, sigue estos pasos. Selecciona si tienes una VPC de AWS (o una conexión directa a tu VPC) o si has creado una VPC específica al crear tu servicio de gestión.
VPC ya creada
Si tienes una conexión directa o VPN a una VPC, omite la línea env HTTP_PROXY=http://localhost:8118
de los comandos de este tema.
VPC dedicada
Cuando creas un servicio de gestión en una VPC dedicada, GKE en AWS incluye un host bastión en una subred pública.
Para conectarte a tu servicio de gestión, sigue estos pasos:
Cambia al directorio con tu configuración de GKE en AWS. Has creado este directorio al instalar el servicio de gestión.
cd anthos-aws
Para abrir el túnel, ejecuta la secuencia de comandos
bastion-tunnel.sh
. El túnel reenvía alocalhost:8118
.Para abrir un túnel al host bastion, ejecuta el siguiente comando:
./bastion-tunnel.sh -N
Los mensajes del túnel SSH aparecen en esta ventana. Cuando quieras cerrar la conexión, detén el proceso con Control+C o cierra la ventana.
Abre una terminal nueva y ve al directorio
anthos-aws
.cd anthos-aws
Comprueba que puedes conectarte al clúster con
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
La salida incluye la URL del servidor de la API del servicio de gestión.
Cloud Logging y Cloud Monitoring en nodos del plano de control
Con GKE en AWS 1.8.0 y versiones posteriores, Cloud Logging y Cloud Monitoring para nodos del plano de control se pueden configurar automáticamente al crear clústeres de usuario. Para habilitar Cloud Logging o Cloud Monitoring, rellena la sección controlPlane.cloudOperations
de la configuración de AWSCluster
.
cloudOperations:
projectID: PROJECT_ID
location: GC_REGION
enableLogging: ENABLE_LOGGING
enableMonitoring: ENABLE_MONITORING
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyecto.GC_REGION
: la Google Cloud región en la que quieras almacenar los registros. Elige una región cercana a la región de AWS. Para obtener más información, consulta Ubicaciones globales: regiones y zonas, comous-central1
.ENABLE_LOGGING
:true
ofalse
, si Cloud Logging está habilitado en los nodos del plano de control.ENABLE_MONITORING
:true
ofalse
, si Cloud Monitoring está habilitado en los nodos del plano de control.
A continuación, sigue los pasos que se indican en Crear un clúster de usuarios personalizado .
Cloud Logging y Cloud Monitoring en nodos de trabajo
Eliminar la versión anterior
Si has configurado una versión anterior de los agentes de registro y monitorización que incluye stackdriver-log-aggregator
(Fluentd) y stackdriver-prometheus-k8s
(Prometheus), te recomendamos que los desinstales primero antes de continuar.
Instalar el reenviador de registros
En esta sección, instalarás Stackdriver Log Forwarder en tu clúster.
En el directorio
anthos-samples/aws-logging-monitoring/
, cambia al directoriologging/
.cd logging/
Modifica el archivo
forwarder.yaml
para que coincida con la configuración de tu proyecto:sed -i "s/PROJECT_ID/PROJECT_ID/g" forwarder.yaml sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" forwarder.yaml sed -i "s/CLUSTER_LOCATION/GC_REGION/g" forwarder.yaml
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyecto.CLUSTER_NAME
: el nombre de tu clúster (por ejemplo,cluster-0
).GC_REGION
: la Google Cloud región en la que quieras almacenar los registros. Elige una región cercana a la región de AWS. Para obtener más información, consulta Ubicaciones globales: regiones y zonas, comous-central1
.
(Opcional) En función de tus cargas de trabajo, el número de nodos de tu clúster y el número de pods por nodo, es posible que tengas que definir solicitudes de recursos de memoria y CPU. Para obtener más información, consulta Asignaciones de CPU y memoria recomendadas.
En tu directorio de
anthos-aws
, usaanthos-gke
para cambiar el contexto a tu clúster de usuarios. Sustituye CLUSTER_NAME por el nombre de tu clúster de usuario.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Crea la cuenta de servicio
stackdriver
si no existe e implementa el reenviador de registros en el clúster.env HTTPS_PROXY=http://localhost:8118 \ kubectl create serviceaccount stackdriver -n kube-system env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f forwarder.yaml
Usa
kubectl
para verificar que los pods se han iniciado.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods -n kube-system | grep stackdriver-log
Deberías ver un pod de reenvío por cada nodo de un grupo de nodos. Por ejemplo, en un clúster de 6 nodos, deberías ver seis pods de reenvío.
stackdriver-log-forwarder-2vlxb 2/2 Running 0 21s stackdriver-log-forwarder-dwgb7 2/2 Running 0 21s stackdriver-log-forwarder-rfrdk 2/2 Running 0 21s stackdriver-log-forwarder-sqz7b 2/2 Running 0 21s stackdriver-log-forwarder-w4dhn 2/2 Running 0 21s stackdriver-log-forwarder-wrfg4 2/2 Running 0 21s
Prueba del reenvío de registros
En esta sección, desplegarás en tu clúster una carga de trabajo que contenga un servidor web HTTP básico con un generador de carga. A continuación, comprueba que los registros están en Cloud Logging.
Antes de instalar esta carga de trabajo, puedes verificar los manifiestos del servidor web y del generador de carga.
Despliega el servidor web y el generador de carga en tu clúster.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/server/server.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/loadgen/loadgen.yaml
Para comprobar que puedes ver los registros de tu clúster en el panel de control de Cloud Logging, ve al Explorador de registros en la Google Cloud consola:
Copia la consulta de ejemplo que aparece a continuación en el campo Generador de consultas.
resource.type="k8s_container" resource.labels.cluster_name="CLUSTER_NAME"
Sustituye CLUSTER_NAME por el nombre de tu clúster.
Haz clic en Realizar una consulta. Deberían aparecer los registros recientes del clúster en Resultados de la consulta.
Una vez que hayas confirmado que los registros aparecen en los resultados de la consulta, elimina el generador de carga y el servidor web.
env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/loadgen/loadgen.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/server/server.yaml
Instalar el recopilador de métricas
En esta sección, instalarás un agente para enviar datos a Cloud Monitoring.
En el directorio
anthos-samples/aws-logging-monitoring/logging/
, cambia al directorioanthos-samples/aws-logging-monitoring/monitoring/
.cd ../monitoring
Modifica el archivo
gke-metrics-agent.yaml
para que coincida con la configuración de tu proyecto:sed -i "s/PROJECT_ID/PROJECT_ID/g" gke-metrics-agent.yaml sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" gke-metrics-agent.yaml sed -i "s/CLUSTER_LOCATION/GC_REGION/g" gke-metrics-agent.yaml
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyecto.CLUSTER_NAME
: el nombre de tu clúster (por ejemplo,cluster-0
).GC_REGION
: la Google Cloud región en la que quieras almacenar los registros. Elige una región cercana a la región de AWS. Para obtener más información, consulta Ubicaciones globales: regiones y zonas, comous-central1
.
(Opcional) En función de tus cargas de trabajo, el número de nodos de tu clúster y el número de pods por nodo, es posible que tengas que definir solicitudes de recursos de memoria y CPU. Para obtener más información, consulta Asignaciones de CPU y memoria recomendadas.
Crea la cuenta de servicio
stackdriver
si no existe e implementa el agente de métricas en tu clúster.env HTTPS_PROXY=http://localhost:8118 \ kubectl create serviceaccount stackdriver -n kube-system env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f gke-metrics-agent.yaml
Usa la herramienta
kubectl
para verificar que el podgke-metrics-agent
se está ejecutando.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods -n kube-system | grep gke-metrics-agent
Deberías ver un pod de agente por nodo en un grupo de nodos. Por ejemplo, en un clúster de 3 nodos, deberías ver tres pods de agente.
gke-metrics-agent-gjxdj 2/2 Running 0 102s gke-metrics-agent-lrnzl 2/2 Running 0 102s gke-metrics-agent-s6p47 2/2 Running 0 102s
Para verificar que las métricas de tu clúster se están exportando a Cloud Monitoring, ve al explorador de métricas en la Google Cloud consola:
En el explorador de métricas, haz clic en Editor de consultas y copia el siguiente comando:
fetch k8s_container | metric 'kubernetes.io/anthos/otelcol_exporter_sent_metric_points' | filter resource.project_id == 'PROJECT_ID' && (resource.cluster_name =='CLUSTER_NAME') | align rate(1m) | every 1m
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyecto.CLUSTER_NAME
: el nombre del clúster que has usado al crear un clúster de usuarios. Por ejemplo,cluster-0
.
Haz clic en Realizar una consulta. Se muestra la tasa de puntos de métricas enviados a Cloud Monitoring desde cada pod
gke-metrics-agent
de tu clúster.Otras métricas que merece la pena probar son las siguientes:
kubernetes.io/anthos/container_memory_working_set_bytes
: uso de memoria del contenedor.kubernetes.io/anthos/container_cpu_usage_seconds_total
: uso de CPU del contenedor.kubernetes.io/anthos/apiserver_aggregated_request_total
: número de solicitudes de kube-apiserver. Solo está disponible si Cloud Monitoring está habilitado en el plano de control.
Para ver una lista completa de las métricas disponibles, consulta Métricas de Anthos. Para obtener información sobre cómo usar la interfaz de usuario, consulta Explorador de métricas.
Crear un panel de control en Cloud Monitoring
En esta sección, crearás un panel de control de Cloud Monitoring que monitorice el estado de los contenedores de tu clúster.
En el directorio
anthos-samples/aws-logging-monitoring/monitoring/
, cambia al directorioanthos-samples/aws-logging-monitoring/monitoring/dashboards
.cd dashboards
Sustituye las instancias de la cadena
CLUSTER_NAME
enpod-status.json
por el nombre de tu clúster.sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" pod-status.json
Sustituye
CLUSTER_NAME
por el nombre de tu clúster.Crea un panel de control personalizado con el archivo de configuración ejecutando el siguiente comando:
gcloud monitoring dashboards create --config-from-file=pod-status.json
Para verificar que se ha creado el panel de control, ve a Paneles de control de Cloud Monitoring en la Google Cloud consola.
Abre el panel de control que acabas de crear con un nombre en el formato de
CLUSTER_NAME (Anthos cluster on AWS) pod status
.
Eliminar los recursos utilizados
En esta sección, eliminarás los componentes de registro y monitorización de tu clúster.
Elimina el panel de control de monitorización en la vista de lista de paneles de la consolaGoogle Cloud haciendo clic en el botón de eliminar asociado al nombre del panel de control.
Cambia al directorio
anthos-samples/aws-logging-monitoring/
.cd anthos-samples/aws-logging-monitoring
Para eliminar todos los recursos creados en esta guía, ejecuta los siguientes comandos:
env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f logging/ env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f monitoring/
Asignaciones de CPU y memoria recomendadas
En esta sección se incluyen las recomendaciones de CPU y asignaciones para los componentes individuales que se usan en el registro y la monitorización. En cada una de las siguientes tablas se indican las solicitudes de CPU y memoria de un clúster con un intervalo de tamaños de nodo. Define las solicitudes de recursos de un componente en el archivo que se indica en la tabla.
Para obtener más información, consulta Prácticas recomendadas de Kubernetes: solicitudes y límites de recursos y Gestión de recursos de contenedores.
De 1 a 10 nodos
Archivo | Recurso | Solicitudes de CPU | Límites de CPU | Solicitudes de memoria | Límites de memoria |
---|---|---|---|---|---|
monitoring/gke-metrics-agent.yaml |
gke-metrics-agent | 30 min | 100 m | 50 mi | 500Mi |
logging/forwarder.yaml |
stackdriver-log-forwarder | 50 m | 100 m | 100Mi | 600 mi |
Entre 10 y 100 nodos
Archivo | Recurso | Solicitudes de CPU | Límites de CPU | Solicitudes de memoria | Límites de memoria |
---|---|---|---|---|---|
monitoring/gke-metrics-agent.yaml |
gke-metrics-agent | 50 m | 100 m | 50 mi | 500Mi |
logging/forwarder.yaml |
stackdriver-log-forwarder | 60 m | 100 m | 100Mi | 600 mi |
Más de 100 nodos
Archivo | Recurso | Solicitudes de CPU | Límites de CPU | Solicitudes de memoria | Límites de memoria |
---|---|---|---|---|---|
monitoring/gke-metrics-agent.yaml |
gke-metrics-agent | 50 m | 100 m | 100Mi | N/A |
logging/forwarder.yaml |
stackdriver-log-forwarder | 60 m | 100 m | 100Mi | 600 mi |
Siguientes pasos
Consulta información sobre Cloud Logging:
- Resumen de Cloud Logging
- Usar el Explorador de registros
- Crear consultas para Cloud Logging
- Crear métricas basadas en registros