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/path
yprometheus.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.com
Un 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 list
Si 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-123456abcdef
Si no ve su clúster en la lista, consulte Conectarse a un clúster con Connect
Instale la herramienta de línea de comandos
git
en 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 -N
Los 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-info
La 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
:true
ofalse
, si el registro en la nube 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, 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.yaml
para 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.yaml
Reemplace 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-gke
para 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
stackdriver
si 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.yaml
Utilice
kubectl
para verificar que los pods se hayan iniciado.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods -n kube-system | grep stackdriver-log
Deberí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.yaml
Para 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 ../monitoring
Modifique el archivo
gke-metrics-agent.yaml
para 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.yaml
Reemplace 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
stackdriver
si 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.yaml
Utilice 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í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 1m
Reemplace 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-agent
del 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 dashboards
Reemplace las instancias de la cadena
CLUSTER_NAME
enpod-status.json
con el nombre de su clúster.sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" pod-status.json
Reemplace
CLUSTER_NAME
con 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.json
Para 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-monitoring
Para 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