Este tema le muestra cómo exportar registros y métricas desde un clúster de usuarios de GKE en AWS a Cloud Logging y Cloud Monitoring.
Descripción general
Existen múltiples opciones para registrar y monitorear con GKE en AWS. GKE Enterprise se puede integrar con Cloud Logging y Cloud Monitoring. Dado que GKE Enterprise se basa en Kubernetes de código abierto, muchas herramientas de código abierto y de terceros son compatibles.
Opciones de registro y monitoreo
Tiene varias opciones de registro y supervisión para su clúster de GKE Enterprise:
Implemente los agentes Cloud Logging y Cloud Monitoring para supervisar y ver los registros de sus cargas de trabajo en Google Cloud consola. Este tema explica esta solución.
Utilice herramientas de código abierto como Prometheus, Grafana y Elasticsearch. Este tema no describe esta solución.
Utilice soluciones de terceros como Datadog. Este tema no describe esta solución.
Registro y monitoreo de la nube
Con GKE Enterprise, Cloud Logging y Cloud Monitoring, puede crear paneles, enviar alertas, supervisar y revisar registros de las cargas de trabajo que se ejecutan en su clúster. Debe configurar los agentes de Cloud Logging y Cloud Monitoring para recopilar registros y métricas en su clúster. Google Cloudproyecto. Si no configura estos agentes, GKE en AWS no recopila datos de registro ni monitoreo.
¿Qué datos se recopilan?
Una vez configurados, los agentes recopilan registros y datos de métricas de su clúster y de las cargas de trabajo que se ejecutan en él. Estos datos se almacenan en suGoogle Cloud proyecto. Configure el ID del proyecto en el campo project_id en un archivo de configuración cuando instale el reenvío de registros .
Los datos recopilados incluyen lo siguiente:
- Registros de los servicios del sistema en cada uno de los nodos de trabajo.
- Registros de aplicaciones para todas las cargas de trabajo que se ejecutan en el clúster.
- Métricas del clúster y los servicios del sistema. Para obtener más información sobre métricas específicas, consulte Métricas de GKE Enterprise .
- Si sus aplicaciones están configuradas con objetivos de raspado de Prometheus y anotadas con una configuración que incluye
prometheus.io/scrape,prometheus.io/pathyprometheus.io/port, métricas de aplicación para pods.
Los agentes se pueden deshabilitar en cualquier momento. Para más información, consulte Limpieza . Los datos recopilados por los agentes se pueden administrar y eliminar como cualquier otra métrica o dato de registro, como se describe en la documentación de Cloud Monitoring y Cloud Logging .
Los datos de registro se almacenan según las reglas de retención configuradas . La retención de datos de métricas varía según el tipo .
Componentes de registro y monitorización
Para exportar telemetría a nivel de clúster desde GKE en AWS aGoogle Cloud, implementa los siguientes componentes en tu clúster:
- Reenvío de registros de Stackdriver (stackdriver-log-forwarder-*). Un conjunto de daemons de Fluentbit que reenvía registros desde cada nodo de Kubernetes a Cloud Logging.
- Agente de métricas de GKE (gke-metrics-agent-*). Un DaemonSet basado en el recopilador OpenTelemetry que recopila datos de métricas y los envía a Cloud Monitoring.
Los manifiestos de estos componentes se encuentran en el repositorio anthos-samples en GitHub.
Prerrequisitos
A Google Cloud Proyecto con facturación habilitada. Para obtener más información sobre los costos, consulte Precios de Google Cloud Observability .
El proyecto también debe tener habilitadas las API de Cloud Logging y Cloud Monitoring. Para habilitarlas, ejecute los siguientes comandos:
gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.comUn entorno de GKE en AWS, que incluye un clúster de usuarios registrado con Connect. Ejecute el siguiente comando para verificar que el clúster esté registrado.
gcloud container fleet memberships listSi su clúster está registrado, Google Cloud CLI imprime el nombre y el ID del clúster.
NAME EXTERNAL_ID cluster-0 1abcdef-1234-4266-90ab-123456abcdefSi no ve su clúster en la lista, consulte Conectarse a un clúster con Connect
Instale la herramienta de línea de comandos
giten su máquina.
Configuración de permisos para Google Cloud Observability
Los agentes de registro y monitorización utilizan Fleet Workload Identity para comunicarse con Cloud Logging y Cloud Monitoring. La identidad necesita permisos para escribir registros y métricas en el proyecto. Para agregar los permisos, ejecute 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
Reemplace PROJECT_ID con su Google Cloud proyecto.
Conectarse al host bastión
Para conectarse a sus recursos de GKE en AWS, siga estos pasos. Seleccione si ya tiene una VPC de AWS (o una conexión directa a su VPC) o si creó una VPC dedicada al crear su servicio de administración.
VPC existente
Si tiene una conexión directa o VPN a una VPC existente, omita la línea env HTTP_PROXY=http://localhost:8118 de los comandos de este tema.
VPC dedicada
Cuando crea un servicio de administración en una VPC dedicada, GKE en AWS incluye un host bastión en una subred pública.
Para conectarse a su servicio de administración, realice los siguientes pasos:
Vaya al directorio con su configuración de GKE en AWS. Este directorio se creó al instalar el servicio de administración .
cd anthos-aws
Para abrir el túnel, ejecute el script
bastion-tunnel.sh. El túnel redirecciona alocalhost:8118.Para abrir un túnel al host bastión, ejecute el siguiente comando:
./bastion-tunnel.sh -NLos mensajes del túnel SSH aparecen en esta ventana. Cuando esté listo para cerrar la conexión, detenga el proceso usando Control+C o cerrando la ventana.
Abra una nueva terminal y cámbiese a su directorio
anthos-aws.cd anthos-aws
Comprueba que puedes conectarte al clúster con
kubectl.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-infoLa salida incluye la URL del servidor API del servicio de administración.
Registro y monitoreo de la nube 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 nuevos clústeres de usuarios. Para habilitar Cloud Logging o Cloud Monitoring, complete la sección controlPlane.cloudOperations de la configuración de AWSCluster .
cloudOperations:
projectID: PROJECT_ID
location: GC_REGION
enableLogging: ENABLE_LOGGING
enableMonitoring: ENABLE_MONITORING
Reemplace lo siguiente:
-
PROJECT_ID: su ID de proyecto. -
GC_REGION: el Google Cloud Región donde desea almacenar registros. Elija una región cercana a la región de AWS. Para obtener más información, consulte Ubicaciones globales - Regiones y zonas ; por ejemplo,us-central1. -
ENABLE_LOGGING:trueofalse, si el registro en la nube está habilitado en los nodos del plano de control. -
ENABLE_MONITORING:trueofalse, si Cloud Monitoring está habilitado en los nodos del plano de control.
A continuación, siga los pasos que se indican en Crear un clúster de usuarios personalizado .
Registro y monitoreo de la nube en nodos de trabajo
Eliminar la versión anterior
Si ha configurado una versión anterior de los agentes de registro y monitoreo que incluye stackdriver-log-aggregator (Fluentd) y stackdriver-prometheus-k8s (Prometheus), es posible que desee desinstalarlos primero antes de continuar.
Instalación del reenvío de registros
En esta sección, instalará Stackdriver Log Forwarder en su clúster.
Desde el directorio
anthos-samples/aws-logging-monitoring/, cambie al directoriologging/.cd logging/Modifique el archivo
forwarder.yamlpara que coincida con la configuración de su 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.yamlReemplace lo siguiente:
-
PROJECT_ID: su ID de proyecto. -
CLUSTER_NAME: El nombre de su clúster, por ejemplo,cluster-0 -
GC_REGION: el Google Cloud Región donde desea almacenar registros. Elija una región cercana a la región de AWS. Para obtener más información, consulte Ubicaciones globales - Regiones y zonas ; por ejemplo,us-central1.
-
(Opcional) Según sus cargas de trabajo, la cantidad de nodos en su clúster y la cantidad de pods por nodo, es posible que deba configurar solicitudes de recursos de memoria y CPU. Para obtener más información, consulte Asignaciones recomendadas de CPU y memoria .
Desde su directorio
anthos-aws, useanthos-gkepara cambiar el contexto a su clúster de usuarios. Reemplace CLUSTER_NAME con el nombre de su clúster de usuarios.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Cree la cuenta de servicio
stackdriversi no existe e implemente el reenvío 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.yamlUtilice
kubectlpara verificar que los pods se hayan iniciado.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods -n kube-system | grep stackdriver-logDebería ver un pod de reenvío por nodo en un grupo de nodos. Por ejemplo, en un clúster de 6 nodos, debería 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 de reenvío de registros
En esta sección, implementará en su clúster una carga de trabajo que contiene un servidor web HTTP básico con un generador de carga. A continuación, comprobará la presencia de registros en Cloud Logging.
Antes de instalar esta carga de trabajo, puede verificar los manifiestos del servidor web y el generador de carga .
Implemente el servidor web y el generador de carga en su 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.yamlPara verificar que puede ver los registros de su clúster en el panel de Cloud Logging, vaya al Explorador de registros en el Google Cloud consola:
Copie la consulta de muestra a continuación en el campo Generador de consultas .
resource.type="k8s_container" resource.labels.cluster_name="CLUSTER_NAME"Reemplace CLUSTER_NAME con el nombre de su clúster.
Haz clic en "Ejecutar consulta" . Deberías ver los registros recientes del clúster en "Resultados de la consulta" .

Después de haber confirmado que los registros aparecen en los resultados de la consulta, elimine 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
Instalación del recopilador de métricas
En esta sección, instala un agente para enviar datos a Cloud Monitoring.
Desde el directorio
anthos-samples/aws-logging-monitoring/logging/, cambie al directorioanthos-samples/aws-logging-monitoring/monitoring/.cd ../monitoringModifique el archivo
gke-metrics-agent.yamlpara que coincida con la configuración de su 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.yamlReemplace lo siguiente:
-
PROJECT_ID: su ID de proyecto. -
CLUSTER_NAME: El nombre de su clúster, por ejemplo,cluster-0 -
GC_REGION: el Google Cloud Región donde desea almacenar registros. Elija una región cercana a la región de AWS. Para obtener más información, consulte Ubicaciones globales - Regiones y zonas ; por ejemplo,us-central1.
-
(Opcional) Según sus cargas de trabajo, la cantidad de nodos en su clúster y la cantidad de pods por nodo, es posible que deba configurar solicitudes de recursos de memoria y CPU. Para obtener más información, consulte Asignaciones recomendadas de CPU y memoria .
Cree la cuenta de servicio
stackdriversi no existe e implemente el agente de métricas en su 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.yamlUtilice la herramienta
kubectlpara verificar que el podgke-metrics-agentse esté ejecutando.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods -n kube-system | grep gke-metrics-agentDebería ver un pod de agente por nodo en un grupo de nodos. Por ejemplo, en un clúster de 3 nodos, debería 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 su clúster se estén exportando a Cloud Monitoring, vaya al Explorador de métricas en el Google Cloud consola:
En el Explorador de métricas, haga clic en Editor de consultas y luego copie 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 1mReemplace lo siguiente:
-
PROJECT_ID: su ID de proyecto. -
CLUSTER_NAME: el nombre del clúster que utilizó al crear un clúster de usuarios , por ejemplo,cluster-0.
-
Haz clic en "Ejecutar consulta" . Se mostrará la tasa de puntos métricos enviados a Cloud Monitoring desde cada pod
gke-metrics-agentdel clúster.
Algunas otras métricas que vale la pena probar son, entre otras:
-
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: recuento de solicitudes de kube-apiserver, solo disponible si Cloud Monitoring está habilitado en el plano de control.
Para obtener una lista completa de las métricas disponibles, consulte Métricas de Anthos . Para obtener información sobre cómo usar la interfaz de usuario, consulte el Explorador de métricas .
-
Creación de un panel de control en Cloud Monitoring
En esta sección, creará un panel de monitoreo de la nube que monitorea el estado del contenedor en su clúster.
Desde el directorio
anthos-samples/aws-logging-monitoring/monitoring/, cambie al directorioanthos-samples/aws-logging-monitoring/monitoring/dashboards.cd dashboardsReemplace las instancias de la cadena
CLUSTER_NAMEenpod-status.jsoncon el nombre de su clúster.sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" pod-status.jsonReemplace
CLUSTER_NAMEcon el nombre de su clúster.Cree un panel personalizado con el archivo de configuración ejecutando el siguiente comando:
gcloud monitoring dashboards create --config-from-file=pod-status.jsonPara verificar que su panel esté creado, vaya a Paneles de monitoreo de la nube en el Google Cloud consola.
Abra el panel recién creado con un nombre en el formato
CLUSTER_NAME (Anthos cluster on AWS) pod status.
Limpiando
En esta sección, eliminará los componentes de registro y monitoreo de su clúster.
Eliminar el panel de control de monitoreo en la vista de lista Paneles en elGoogle Cloud consola haciendo clic en el botón eliminar asociado con el nombre del panel.
Cambie al directorio
anthos-samples/aws-logging-monitoring/.cd anthos-samples/aws-logging-monitoringPara eliminar todos los recursos creados en esta guía, ejecute 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
Esta sección incluye las CPU y asignaciones recomendadas para los componentes individuales utilizados en el registro y la monitorización. Las siguientes tablas enumeran las solicitudes de CPU y memoria para un clúster con distintos tamaños de nodo. Las solicitudes de recursos para un componente se configuran en el archivo de la tabla.
Para obtener más información, consulte Mejores prácticas de Kubernetes: Solicitudes y límites de recursos y Administración de recursos para contenedores .
1-10 nodos
| Archivo | Recurso | Solicitudes de CPU | Límites de CPU | Solicitudes de memoria | Límites de memoria |
|---|---|---|---|---|---|
monitoring/gke-metrics-agent.yaml | agente de métricas de gke | 30 metros | 100 metros | 50 millas | 500 millas |
logging/forwarder.yaml | reenvío de registros de stackdriver | 50 metros | 100 metros | 100 millas | 600 millas |
10-100 nodos
| Archivo | Recurso | Solicitudes de CPU | Límites de CPU | Solicitudes de memoria | Límites de memoria |
|---|---|---|---|---|---|
monitoring/gke-metrics-agent.yaml | agente de métricas de gke | 50 metros | 100 metros | 50 millas | 500 millas |
logging/forwarder.yaml | reenvío de registros de stackdriver | 60 metros | 100 metros | 100 millas | 600 millas |
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 | agente de métricas de gke | 50 metros | 100 metros | 100 millas | N / A |
logging/forwarder.yaml | reenvío de registros de stackdriver | 60 metros | 100 metros | 100 millas | 600 millas |
¿Que sigue?
Obtenga más información sobre el registro en la nube:
- Descripción general del registro en la nube
- Uso del explorador de registros
- Creación de consultas para Cloud Logging
- Crear métricas basadas en registros
Obtenga más información sobre la monitorización de la nube:
- Uso del Explorador de métricas
- Creación de consultas para la monitorización de la nube
- Configuración de alertas