Solución para monitorizar la EKS infraestructura de Amazon con Grafana gestionada por Amazon - Amazon Managed Grafana

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución para monitorizar la EKS infraestructura de Amazon con Grafana gestionada por Amazon

La supervisión de la infraestructura de Amazon Elastic Kubernetes Service es uno de los escenarios más comunes en los que se utiliza Amazon Managed Grafana. En esta página se describe una plantilla que proporciona una solución para este escenario. La solución se puede instalar mediante AWS Cloud Development Kit (AWS CDK) o con Terraform.

Esta solución configura:

  • Tu espacio de trabajo de Amazon Managed Service for Prometheus almacena las métricas de tu clúster de EKS Amazon y crea un recopilador gestionado para recopilar las métricas y enviarlas a ese espacio de trabajo. Para obtener más información, consulta Ingesta métricas con recopiladores gestionados. AWS

  • Recopilación de registros de tu EKS clúster de Amazon mediante un CloudWatch agente. Los registros se almacenan en CloudWatch Grafana gestionada por Amazon y son consultados por ellos. Para obtener más información, consulta Logging for Amazon EKS

  • Su espacio de trabajo de Amazon Managed Grafana puede extraer esos registros y métricas, y crear paneles y alertas que lo ayuden a supervisar su clúster.

Al aplicar esta solución, se crearán paneles y alertas que:

  • Evalúe el estado general EKS del clúster de Amazon.

  • Muestra el estado y el rendimiento del plano de EKS control de Amazon.

  • Muestre el estado y el rendimiento del plano de EKS datos de Amazon.

  • Muestra información sobre las EKS cargas de trabajo de Amazon en los espacios de nombres de Kubernetes.

  • Muestre el uso de los recursos en los espacios de nombres, incluido el uso de memoriaCPU, disco y red.

Acerca de esta solución

Esta solución configura un espacio de trabajo de Grafana gestionado por Amazon para proporcionar métricas para su clúster de AmazonEKS. Las métricas se utilizan para generar paneles y alertas.

Las métricas le ayudan a gestionar EKS los clústeres de Amazon de forma más eficaz, ya que proporcionan información sobre el estado y el rendimiento del plano de datos y control de Kubernetes. Puedes entender tu EKS clúster de Amazon desde el nivel de nodo, pasando por los pods y hasta el nivel de Kubernetes, incluida la supervisión detallada del uso de los recursos.

La solución ofrece capacidades tanto anticipatorias como correctivas:

  • Las capacidades anticipatorias incluyen:

    • Administración de la eficiencia de los recursos impulsando las decisiones de programación. Por ejemplo, para proporcionar rendimiento y confiabilidad SLAs a los usuarios internos del EKS clúster de Amazon, puede asignar suficientes CPU recursos de memoria a sus cargas de trabajo en función del seguimiento del uso histórico.

    • Previsiones de uso: en función del uso actual de los recursos de tu EKS clúster de Amazon, como nodos, volúmenes persistentes respaldados por Amazon EBS o balanceadores de carga de aplicaciones, puedes planificar con antelación, por ejemplo, un nuevo producto o proyecto con demandas similares.

    • Detección anticipada de los posibles problemas: por ejemplo, al analizar las tendencias de consumo de recursos de nivel de espacio de nombres de Kubernetes, podrá comprender la estacionalidad del uso de la carga de trabajo.

  • Las capacidades correctivas incluyen:

    • Reduzca el tiempo medio de detección (MTTD) de los problemas en la infraestructura y el nivel de carga de trabajo de Kubernetes. Por ejemplo, si consulta el panel de resolución de problemas, puede probar rápidamente hipótesis sobre lo que salió mal y eliminarlas.

    • Determinación de en qué parte de la pila se está produciendo un problema. Por ejemplo, el plano de EKS control de Amazon está totalmente gestionado por, AWS y determinadas operaciones, como la actualización de una implementación de Kubernetes, pueden fallar si el API servidor está sobrecargado o la conectividad se ve afectada.

En la siguiente imagen se muestra un ejemplo de la carpeta del panel de la solución.

Imagen en la que se muestra un ejemplo de una carpeta de panel de Grafana creada con esta solución.

Puede elegir un panel para ver más detalles; por ejemplo, si elige ver los recursos de computación de las cargas de trabajo, se mostrará un panel como el que se muestra en la siguiente imagen.

Una imagen que muestra un ejemplo de un panel de control de Grafana que muestra el CPU uso creado con esta solución.

Las métricas se recopilan con un intervalo de extracción de 1 minuto. Los paneles muestran las métricas agregadas en 1 minuto, 5 minutos o más, en función de la métrica específica.

Los registros también se muestran en los paneles, de modo que puede consultarlos y analizarlos para encontrar las causas fundamentales de los problemas. En la siguiente imagen se muestra un ejemplo de panel de registros.

Imagen en la que se muestra un ejemplo de un panel de Grafana con registros, creado con esta solución.

Para obtener una lista de las métricas rastreadas por esta solución, consulte Lista de métricas rastreadas.

Para obtener una lista de las alertas creadas por la solución, consulte Lista de alertas creadas.

Costos

Esta solución crea y utiliza recursos en su espacio de trabajo. Se le cobrará por el uso estándar de los recursos creados, que incluyen:

  • Acceso de los usuarios al espacio de trabajo de Amazon Managed Grafana. Para obtener más información acerca de los precios, consulte Precios de Amazon Managed Grafana.

  • Amazon Managed Service para Prometheus: ingesta y almacenamiento de métricas, que incluye el uso del recopilador sin agente de Amazon Managed Service para Prometheus y el análisis de métricas (procesamiento de muestras de consulta). La cantidad de métricas que utiliza esta solución depende de la configuración y el uso del EKS clúster de Amazon.

    Puedes ver las métricas de ingesta y almacenamiento en Amazon Managed Service for Prometheus CloudWatch utilizando Para obtener más información, consulta las CloudWatchmétricas en la Guía del usuario de Amazon Managed Service for Prometheus.

    Puede calcular el costo utilizando la calculadora de precios de la página Precios de Amazon Managed Service para Prometheus. El número de métricas dependerá del número de nodos del clúster y de las métricas que generen las aplicaciones.

  • CloudWatch Registra la ingesta, el almacenamiento y el análisis. De forma predeterminada, la retención de registros está configurada para que no caduque nunca. Puede ajustarlo en CloudWatch. Para obtener más información sobre los precios, consulta Amazon CloudWatch Pricing.

  • Costos de red. Puede incurrir en cargos de AWS red estándar por tráfico de zonas de disponibilidad cruzada, región u otro tipo de tráfico.

Las calculadoras de precios, disponibles en la página de precios de cada producto, pueden ayudarlo a comprender los posibles costos de su solución. La siguiente información puede ayudar a obtener un coste base para la solución que se ejecuta en la misma zona de disponibilidad que el EKS clúster de Amazon.

Producto Métrica de la calculadora Valor

Servicio administrado por Amazon para Prometheus

Serie activa

8000 (base)

15 000 (por nodo)

Intervalo promedio de recopilación

60 (segundos)

Amazon Managed Service para Prometheus (recopilador administrado)

Número de recopiladores

1

Número de muestras

15 (base)

150 (por nodo)

Número de regalas

16.1

Intervalo promedio de extracción de reglas

60 (segundos)

Amazon Managed Grafana

Número de editores o administradores activos

1 (o más, en función de sus usuarios)

CloudWatch (Registros)

Registros estándar: datos ingeridos

24,5 GB (base)

0,5 GB (por nodo)

Almacenamiento o archivado de registros (registros estándar o distribuidos)

Sí, para almacenar registros: suponiendo una retención de 1 mes

Datos de registros esperados analizados

Cada consulta de información de registros de Grafana analizará todo el contenido del registro del grupo durante el periodo de tiempo especificado.

Estos números son los números base de una solución que se ejecuta EKS sin software adicional. Esto le proporcionará una estimación de los costos base. También omite los costos de uso de la red, que variarán en función de si el espacio de trabajo de Grafana gestionado por Amazon, el espacio de trabajo de Amazon Managed Service for Prometheus y el clúster de EKS Amazon se encuentran en la misma zona de disponibilidad, y. Región de AWS VPN

nota

Cuando un elemento de esta tabla incluye un valor (base) y un valor por recurso (por ejemplo, (per node)), debe sumar el valor base al valor por recurso multiplicado por el número de ese recurso del que disponga. Por ejemplo, en la serie temporal promedio activa, ingrese un número que sea 8000 + the number of nodes in your cluster * 15,000. Si tiene 2 nodos, debe ingresar 38,000, que es 8000 + ( 2 * 15,000 ).

Requisitos previos

Esta solución requiere que haya hecho lo siguiente antes de utilizarla.

  1. Debe tener o crear un clúster de Amazon Elastic Kubernetes Service que desee supervisar y el clúster debe tener al menos un nodo. El clúster debe tener configurado el acceso al punto final API del servidor para incluir el acceso privado (también puede permitir el acceso público).

    El modo de autenticación debe incluir el API acceso (se puede configurar en uno API u otroAPI_AND_CONFIG_MAP). Esto permite que la implementación de la solución utilice entradas de acceso.

    Se debe instalar lo siguiente en el clúster (el valor es válido de forma predeterminada al crear el clúster mediante la consola, pero se debe añadir si se crea el clúster con AWS API o AWS CLI): AWS CNI Core DNS y AddOns Kube-proxy.

    Guarde el nombre del clúster para especificarlo más adelante. Puedes encontrarlo en los detalles del clúster en la EKS consola de Amazon.

    nota

    Para obtener más información sobre cómo crear un EKS clúster de Amazon, consulta Cómo empezar con Amazon EKS.

  2. Debe crear un espacio de trabajo de Amazon Managed Service for Prometheus en el Cuenta de AWS mismo lugar que su clúster de Amazon. EKS Para obtener más información, consulte Create a workspace en la Guía del usuario de Amazon Managed Service para Prometheus.

    Guarda el ARN espacio de trabajo de Amazon Managed Service for Prometheus para especificarlo más adelante.

  3. Debe crear un espacio de trabajo de Grafana gestionado por Amazon con Grafana versión 9 o posterior, al igual que Región de AWS su clúster de Amazon. EKS Para obtener más información sobre la creación de un nuevo espacio de trabajo, consulte Creación de un espacio de trabajo de Amazon Managed Grafana.

    El rol de espacio de trabajo debe tener permisos para acceder a Amazon Managed Service para Prometheus y Amazon. CloudWatch APIs La forma más sencilla de hacerlo es utilizar los permisos gestionados por el servicio y seleccionar Amazon Managed Service for Prometheus y. CloudWatch También puedes añadir manualmente las AmazonGrafanaCloudWatchAccesspolíticas AmazonPrometheusQueryAccessy a tu rol en el espacio de trabajo. IAM

    Guarde el ID y el punto de conexión del espacio de trabajo de Amazon Managed Grafana para especificarlos más adelante. El ID tiene el formato g-123example. El ID y el punto de conexión se encuentran en la consola de Amazon Managed Grafana. El punto final es URL el del espacio de trabajo e incluye el ID. Por ejemplo, https://g-123example.grafana-workspace.<region>.amazonaws.com/.

  4. Si va a implementar la solución con Terraform, debe crear un bucket de Amazon S3 al que pueda acceder desde su cuenta. Se utilizará para almacenar los archivos de estado de Terraform para la implementación.

    Guarde el ID del bucket de Amazon S3 para especificarlo más adelante.

  5. Para ver las reglas de alertas de Amazon Managed Service para Prometheus, debe habilitar las alertas de Grafana para el espacio de trabajo de Amazon Managed Grafana.

    Amazon Managed Grafana debe tener los siguientes permisos para acceder los recursos de Prometheus. Debe agregarlos a las políticas administradas por el servicio o administradas por el cliente que se describen en Permisos y políticas de Amazon Managed Grafana para los orígenes de datos de AWS.

    • aps:ListRules

    • aps:ListAlertManagerSilences

    • aps:ListAlertManagerAlerts

    • aps:GetAlertManagerStatus

    • aps:ListAlertManagerAlertGroups

    • aps:PutAlertManagerSilences

    • aps:DeleteAlertManagerSilence

nota

Si bien no es estrictamente obligatorio configurar la solución, debe configurar la autenticación de usuario en su espacio de trabajo de Amazon Managed Grafana antes de que los usuarios puedan acceder a los paneles creados. Para obtener más información, consulte Autenticación de usuarios en los espacios de trabajo de Amazon Managed Grafana.

Uso de esta solución

Esta solución configura la AWS infraestructura para admitir las métricas de informes y monitoreo de un EKS clúster de Amazon. Puede instalarla mediante AWS Cloud Development Kit (AWS CDK) o con Terraform.

Using AWS CDK

Una forma en que se le proporciona esta solución es como una AWS CDK aplicación. Proporcionará información sobre los recursos que desea utilizar y la solución creará automáticamente el recopilador, los registros y los paneles.

nota

En estos pasos se da por sentado que tiene un entorno con y AWS CLI AWS CDK, y ambos, Node.js e NPMinstalado. Utilizará make y brew para simplificar la compilación y otras acciones comunes.

Para usar esta solución para monitorear un EKS clúster de Amazon con AWS CDK
  1. Asegúrese de que completar todos los pasos previos.

  2. Descargue todos los archivos de la solución desde Amazon S3. Los archivos se encuentran en s3://aws-observability-solutions/EKS/OSS/CDK/v3.0.0/iac y puede descargarlos con el siguiente comando de Amazon S3. Ejecute este comando desde una carpeta de su entorno de línea de comandos.

    aws s3 sync s3://aws-observability-solutions/EKS/OSS/CDK/v3.0.0/iac/ .

    No es necesario modificar estos archivos.

  3. En su entorno de línea de comandos (desde la carpeta en la que descargó los archivos de la solución), ejecute los siguientes comandos.

    Establezca las variables de entorno necesarias. Sustituya REGION AMG_ENDPOINTEKS_CLUSTER, y AMP_ARN por el punto final del espacio de trabajo de Grafana gestionado por Amazon (en el formulariohttp://g-123example.grafana-workspace.us-east-1.amazonaws.com), el nombre del EKS clúster de Amazon y el espacio de trabajo de Amazon Managed Service for Prometheus. Región de AWS ARN

    export AWS_REGION=REGION export AMG_ENDPOINT=AMG_ENDPOINT export EKS_CLUSTER_NAME=EKS_CLUSTER export AMP_WS_ARN=AMP_ARN
  4. Debes crear un token de cuenta de servicio con ADMIN acceso para llamar a Grafana HTTPAPIs. Para obtener más información, consulte Uso de cuentas de servicio para autenticarse con las API HTTP de Grafana. Puedes usarlo AWS CLI con los siguientes comandos para crear el token. Deberás sustituirlo por el GRAFANA_ID ID de tu espacio de trabajo de Grafana (aparecerá en el formulariog-123example). Esta clave caducará después de 7200 segundos o 2 horas. Si es necesario, puede cambiar la hora (seconds-to-live). La implementación tarda menos de una hora.

    GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \ --workspace-id GRAFANA_ID \ --grafana-role ADMIN \ --name grafana-operator-key \ --query 'id' \ --output text) # creates a new token for calling APIs export AMG_API_KEY=$(aws grafana create-workspace-service-account-token \ --workspace-id $managed_grafana_workspace_id \ --name "grafana-operator-key-$(date +%s)" \ --seconds-to-live 7200 \ --service-account-id $GRAFANA_SA_ID \ --query 'serviceAccountToken.key' \ --output text)

    Haz que la API clave esté disponible para el AWS CDK agregándola AWS Systems Manager con el siguiente comando. AWS_REGIONSustitúyala por la región en la que se ejecutará la solución (en el formularious-east-1).

    aws ssm put-parameter --name "/observability-aws-solution-eks-infra/grafana-api-key" \ --type "SecureString" \ --value $AMG_API_KEY \ --region AWS_REGION \ --overwrite
  5. Ejecute el siguiente comando make, que instalará cualquier otra dependencia del proyecto.

    make deps
  6. Por último, ejecute el AWS CDK proyecto:

    make build && make pattern aws-observability-solution-eks-infra-$EKS_CLUSTER_NAME deploy
  7. [Opcional] Una vez finalizada la creación de la pila, puedes usar el mismo entorno para crear más instancias de la pila para otros EKS clústeres de Amazon de la misma región, siempre y cuando cumplas los demás requisitos previos para cada uno de ellos (incluidos los espacios de trabajo independientes de Amazon Managed Grafana y Amazon Managed Service for Prometheus). Deberá redefinir los comandos export con los nuevos parámetros.

Cuando se complete la creación de la pila, tu espacio de trabajo de Grafana gestionado por Amazon se rellenará con un panel con las métricas de tu clúster de AmazonEKS. Las métricas tardarán unos minutos en mostrarse, a medida que el recopilador comience a reunirlas.

Using Terraform

Una forma en que se le proporciona esta solución es mediante una solución de Terraform. Proporcionará información sobre los recursos que desea utilizar y la solución creará automáticamente el recopilador, los registros y los paneles.

Para usar esta solución para monitorear un EKS clúster de Amazon con Terraform
  1. Asegúrese de que completar todos los pasos previos.

  2. Descargue todos los archivos de la solución desde Amazon S3. Los archivos se encuentran en s3://aws-observability-solutions/EKS/OSS/Terraform/v3.0.0/ y puede descargarlos con el siguiente comando de Amazon S3. Ejecute este comando desde una carpeta de su entorno de línea de comandos y, a continuación, cambie el directorio a la carpeta desde la que efectuará la implementación.

    aws s3 sync s3://aws-observability-solutions/EKS/OSS/Terraform/v3.0.0/ . cd eks-monitoring

    No es necesario modificar estos archivos.

  3. En su entorno de línea de comandos (desde la carpeta en la que descargó los archivos de la solución), ejecute los siguientes comandos.

    Establezca las variables de entorno necesarias. SustituyaREGION,AMG_ENDPOINT,EKS_CLUSTER, y AMP_ARNS3_ID, por el Región de AWS lugar donde desee que se desplieguen los nuevos recursos (por ejemplo,us-east-1), el punto de enlace del espacio de trabajo de Amazon Managed Grafana (en el formulariohttp://g-123example.grafana-workspace.us-east-1.amazonaws.com), el nombre del EKS clúster de Amazon, el espacio de trabajo de Amazon Managed Service for Prometheus y el ID de bucket de ARN Amazon S3.

    export TF_VAR_aws_region=REGION export TF_VAR_amg_endpoint=AMG_ENDPOINT export TF_VAR_eks_cluster_name=EKS_CLUSTER export TF_VAR_amp_ws_arn=AMP_ARN export TF_VAR_s3_bucket_id=S3_ID
  4. Debes crear un token de cuenta de servicio con ADMIN acceso para llamar a Grafana HTTPAPIs. Para obtener más información, consulte Uso de cuentas de servicio para autenticarse con las API HTTP de Grafana. Puedes usarlo AWS CLI con los siguientes comandos para crear el token. Deberás sustituirlo por el GRAFANA_ID ID de tu espacio de trabajo de Grafana (aparecerá en el formulariog-123example). Esta clave caducará después de 7200 segundos o 2 horas. Si es necesario, puede cambiar la hora (seconds-to-live). La implementación tarda menos de una hora.

    GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \ --workspace-id GRAFANA_ID \ --grafana-role ADMIN \ --name grafana-operator-key \ --query 'id' \ --output text) # creates a new token for running Terraform export TF_VAR_grafana_api_key=$(aws grafana create-workspace-service-account-token \ --workspace-id $managed_grafana_workspace_id \ --name "grafana-operator-key-$(date +%s)" \ --seconds-to-live 7200 \ --service-account-id $GRAFANA_SA_ID \ --query 'serviceAccountToken.key' \ --output text)
    nota

    El primer paso indicado anteriormente, es decir, crear una cuenta de servicio para el espacio de trabajo, no es necesario si ya tiene una cuenta de servicio. En este caso, sustitúyalo $GRAFANA_SA_ID por el ID de tu cuenta de servicio.

  5. Ejecute el siguiente comando terraform para inicializar Terraform con la solución.

    terraform init -reconfigure \ -backend-config="bucket=${TF_VAR_s3_bucket_id}" \ -backend-config="region=${TF_VAR_aws_region}" \ -backend-config="key=state/${TF_VAR_eks_cluster_name}/terraform.tfstate"
  6. Por último, implemente el proyecto de Terraform:

    terraform apply

Cuando se complete la creación de la solución, tu espacio de trabajo de Grafana gestionado por Amazon se rellenará con un panel con las métricas de tu clúster de AmazonEKS. Las métricas tardarán unos minutos en mostrarse, a medida que el recopilador comience a reunirlas.

Lista de métricas rastreadas

Esta solución crea un raspador que recopila las métricas de tu EKS clúster de Amazon. Estas métricas se almacenan en Amazon Managed Service para Prometheus y, después, se muestran en los paneles de Amazon Managed Grafana. De forma predeterminada, el recopilador reúne todas las métricas compatibles con Prometheus que expone el clúster. Si instala un software en su clúster que produce más métricas, aumentarán las métricas recopiladas. Si lo desea, puede reducir la cantidad de métricas actualizando el recopilador con una configuración que filtre las métricas.

Con esta solución se realiza un seguimiento de las siguientes métricas, en una configuración de EKS clúster de Amazon básica sin necesidad de instalar ningún software adicional.

Métrica Descripción o finalidad

aggregator_unavailable_apiservice

Los indicadores están marcados como no disponibles desglosados por APIService nombre. APIServices

apiserver_admission_webhook_admission_duration_seconds_bucket

Histograma de latencia de webhook de admisión en segundos, identificado por su nombre y desglosado para cada operación, API recurso y tipo (validar o admitir).

apiserver_current_inflight_requests

Número máximo de solicitudes en curso utilizadas actualmente por este apiserver por tipo de solicitud en el último segundo.

apiserver_envelope_encryption_dek_cache_fill_percent

Porcentaje de ranuras de caché ocupadas actualmente por almacenadas en caché. DEKs

apiserver_flowcontrol_current_executing_requests

Número de solicitudes en fase inicial (para unaWATCH) fase de ejecución o en cualquier fase (para una fase noWATCH) de ejecución del subsistema de API prioridad e imparcialidad.

apiserver_flowcontrol_rejected_requests_total

Número de solicitudes en fase inicial (para unaWATCH) fase de ejecución o en cualquier fase (para una fase noWATCH) de ejecución del subsistema de API prioridad y equidad que se rechazaron.

apiserver_flowcontrol_request_concurrency_limit

Número nominal de puestos de ejecución configurados para cada nivel de prioridad.

apiserver_flowcontrol_request_execution_seconds_bucket

El histograma agrupado que muestra la duración de la fase inicial (para unaWATCH) o de cualquier fase (si noWATCH) de la ejecución de una solicitud en el subsistema de API prioridad y equidad.

apiserver_flowcontrol_request_queue_length_after_enqueue_count

El recuento de la fase inicial (para unaWATCH) o cualquier fase (para una fase noWATCH) de la ejecución de una solicitud en el subsistema de API prioridad y equidad.

apiserver_request

Indica una solicitud API del servidor.

apiserver_requested_deprecated_apis

Indicador de los artículos en desuso APIs que se han solicitado, desglosado por API grupo, versión, recurso, subrecurso y removed_release.

apiserver_request_duration_seconds

Distribución de la latencia de respuesta en segundos para cada verbo, valor de ensayo, grupo, versión, recurso, subrecurso, ámbito y componente.

apiserver_request_duration_seconds_bucket

Histograma agrupado en buckets de la distribución de la latencia de respuesta en segundos para cada verbo, valor de ensayo, grupo, versión, recurso, subrecurso, ámbito y componente.

apiserver_request_slo_duration_seconds

La distribución de la latencia de respuesta de Service Level Objective (SLO) en segundos para cada verbo, valor de ensayo, grupo, versión, recurso, subrecurso, ámbito y componente.

apiserver_request_terminations_total

Número de solicitudes que apiserver canceló en defensa propia.

apiserver_request_total

Contador de solicitudes de apiserver desglosadas por verbo, valor de ensayo, grupo, versión, recurso, ámbito, componente y código de respuesta. HTTP

container_cpu_usage_seconds_total

Tiempo acumulado de CPU consumido.

container_fs_reads_bytes_total

Recuento acumulado de bytes leídos.

container_fs_reads_total

Recuento acumulado de lecturas completadas.

container_fs_writes_bytes_total

Recuento acumulado de bytes escritos.

container_fs_writes_total

Recuento acumulado de escrituras completadas.

container_memory_cache

Memoria caché del total de páginas.

container_memory_rss

Tamaño de. RSS

container_memory_swap

Uso de cambios de contenedores.

container_memory_working_set_bytes

Conjunto de trabajo actual.

container_network_receive_bytes_total

Recuento acumulado de bytes recibidos.

container_network_receive_packets_dropped_total

Recuento acumulado de paquetes descartados durante la recepción.

container_network_receive_packets_total

Recuento acumulado de paquetes recibidos.

container_network_transmit_bytes_total

Recuento acumulado de bytes transmitidos.

container_network_transmit_packets_dropped_total

Recuento acumulado de paquetes descartados durante la transmisión.

container_network_transmit_packets_total

Recuento acumulado de paquetes transmitidos.

etcd_request_duration_seconds_bucket

El histograma agrupado en buckets de latencia de solicitudes de etcd en segundos para cada operación y tipo de objeto.

go_goroutines

Número de gorrutinas que existen actualmente.

go_threads

Número de subprocesos del sistema operativo creados.

kubelet_cgroup_manager_duration_seconds_bucket

Histograma agrupado en buckets de la duración en segundos de las operaciones del administrador de cgroup. Desglosado por método.

kubelet_cgroup_manager_duration_seconds_count

Duración en segundos de las operaciones del administrador de cgroup. Desglosado por método.

kubelet_node_config_error

Esta métrica es verdadera (1) si el nodo está experimentando un error relacionado con la configuración y falsa (0) en caso contrario.

kubelet_node_name

Nombre del nodo. El recuento siempre es 1.

kubelet_pleg_relist_duration_seconds_bucket

El histograma agrupado de la duración en segundos para volver a poner en venta los pods. PLEG

kubelet_pleg_relist_duration_seconds_count

El recuento en segundos de la duración de volver a poner en venta los cápsulas que se han vuelto a poner en venta. PLEG

kubelet_pleg_relist_interval_seconds_bucket

El histograma agrupado del intervalo en segundos entre el momento en que se vuelve a poner en venta. PLEG

kubelet_pod_start_duration_seconds_count

Recuento en segundos de la duración desde que Kubelet ve un pod por primera vez hasta que el pod empieza a ejecutarse.

kubelet_pod_worker_duration_seconds_bucket

Histograma agrupado en buckets de la duración en segundos para sincronizar un solo pod. Desglosado por tipo de operación: crear, actualizar o sincronizar.

kubelet_pod_worker_duration_seconds_count

Recuento de la duración en segundos para sincronizar un solo pod. Desglosado por tipo de operación: crear, actualizar o sincronizar.

kubelet_running_containers

Número de contenedores en ejecución actualmente.

kubelet_running_pods

Número de pods que tienen un entorno de pruebas limitado de pods en funcionamiento.

kubelet_runtime_operations_duration_seconds_bucket

Histograma agrupado en buckets de la duración en segundos de las operaciones del tiempo de ejecución. Desglosado por tipo de operación.

kubelet_runtime_operations_errors_total

Número acumulado de errores de operaciones en tiempo de ejecución por tipo de operación.

kubelet_runtime_operations_total

Número acumulado de operaciones en tiempo de ejecución por tipo de operación.

kube_node_status_allocatable

Cantidad de recursos que se pueden asignar a los pods (después de reservar algunos para los daemons del sistema).

kube_node_status_capacity

Cantidad total de recursos disponibles para un nodo.

kube_pod_container_resource_limits (CPU)

Cantidad de recursos límite solicitados por contenedor.

kube_pod_container_resource_limits (Memory)

Cantidad de recursos límite solicitados por contenedor.

kube_pod_container_resource_requests (CPU)

Número de recursos de solicitud solicitados por un contenedor.

kube_pod_container_resource_requests (Memory)

Número de recursos de solicitud solicitados por un contenedor.

kube_pod_owner

Información sobre el propietario del pod.

kube_resourcequota

Las cuotas de recursos en Kubernetes imponen límites de uso a recursos como la memoria y el almacenamiento dentro de los espacios de CPU nombres.

node_cpu

Las métricas CPU de uso de un nodo, incluido el uso por núcleo y el uso total.

node_cpu_seconds_total

Los segundos CPUs gastados en cada modo.

node_disk_io_time_seconds

Cantidad acumulada de tiempo que un nodo dedica a hacer operaciones de E/S en el disco.

node_disk_io_time_seconds_total

Cantidad total de tiempo que un nodo dedica a hacer operaciones de E/S en el disco.

node_disk_read_bytes_total

Número total de bytes que el nodo leyó de los discos.

node_disk_written_bytes_total

Número total de bytes que el nodo escribió en los discos.

node_filesystem_avail_bytes

Cantidad de espacio disponible en bytes en el sistema de archivos de un nodo de un clúster de Kubernetes.

node_filesystem_size_bytes

Tamaño total del sistema de archivos del nodo.

node_load1

El promedio de carga de 1 minuto del CPU uso de un nodo.

node_load15

El promedio de carga de 15 minutos del CPU uso de un nodo.

node_load5

El promedio de carga de 5 minutos del CPU uso de un nodo.

node_memory_Buffers_bytes

Cantidad de memoria utilizada por el sistema operativo del nodo para el almacenamiento en la caché del búfer.

node_memory_Cached_bytes,

Cantidad de memoria utilizada por el sistema operativo del nodo para el almacenamiento en la caché del disco.

node_memory_MemAvailable_bytes

Cantidad de memoria disponible para que las aplicaciones y las cachés la utilicen.

node_memory_MemFree_bytes

Cantidad de memoria libre disponible en el nodo.

node_memory_MemTotal_bytes

Cantidad total de memoria física disponible en el nodo.

node_network_receive_bytes_total

Número total de bytes que recibe el nodo a través de la red.

node_network_transmit_bytes_total

Número total de bytes que transmite el nodo a través de la red.

process_cpu_seconds_total

CPUTiempo total empleado por el usuario y el sistema en segundos.

process_resident_memory_bytes

Tamaño de la memoria residente en bytes.

rest_client_requests_total

Número de HTTP solicitudes, dividido por código de estado, método y host.

rest_client_request_duration_seconds_bucket

Histograma agrupado en buckets de la latencia de solicitudes en segundos. Desglosado por verbo y host.

storage_operation_duration_seconds_bucket

Histograma agrupado en buckets de la duración en segundos de las operaciones de almacenamiento.

storage_operation_duration_seconds_count

Recuento de la duración de las operaciones de almacenamiento.

storage_operation_errors_total

Número acumulado de errores durante las operaciones de almacenamiento.

up

Métrica que indica si el objetivo supervisado (por ejemplo, el nodo) está en funcionamiento.

volume_manager_total_volumes

Número total de volúmenes administrados por el administrador de volúmenes.

workqueue_adds_total

Número total de adiciones gestionadas por cola de trabajo.

workqueue_depth

Profundidad actual de la cola de trabajo.

workqueue_queue_duration_seconds_bucket

Histograma agrupado en buckets que muestra el tiempo (en segundos) que un elemento permanece en la cola de trabajo antes de ser solicitado.

workqueue_work_duration_seconds_bucket

Histograma agrupado en buckets que muestra el tiempo en segundos que se tarda en procesar un elemento de la cola de trabajo.

Lista de alertas creadas

En las tablas siguientes se enumeran las alertas que crea esta solución. Las alertas se crean como reglas en Amazon Managed Service para Prometheus y se muestran en su espacio de trabajo de Amazon Managed Grafana.

Puede modificar las reglas, incluida la adición o eliminación de reglas, editando el archivo de configuración de reglas en su espacio de trabajo de Amazon Managed Service para Prometheus.

Estas dos alertas son alertas especiales que se administran de forma ligeramente diferente a las alertas habituales. En lugar de avisarle de un problema, le proporcionan información que se utiliza para supervisar el sistema. La descripción incluye detalles sobre cómo utilizar estas alertas.

Alerta Descripción y uso

Watchdog

Se trata de una alerta destinada a garantizar que todo el proceso de alertas funcione. Esta alerta siempre se está activando, por lo que siempre debería activarse en Alertmanager y dirigirse siempre a un receptor. Puede integrarla con su mecanismo de notificación para enviar una notificación cuando la alerta no se active. Por ejemplo, puede utilizar la DeadMansSnitchintegración en PagerDuty.

InfoInhibitor

Se trata de una alerta que se utiliza para inhibir las alertas de información. Por sí solas, las alertas de nivel de información pueden ser muy ruidosas, pero son pertinentes cuando se combinan con otras alertas. Esta alerta se activa siempre que hay una alerta severity=info y deja de activarse cuando otra alerta con una gravedad tipo warning o critical comienza a activarse en el mismo espacio de nombres. Esta alerta debe dirigirse a un receptor nulo y configurarse para inhibir las alertas con severity=info.

Las siguientes alertas proporcionan información o advertencias sobre el sistema.

Alerta Gravedad Descripción

NodeNetworkInterfaceFlapping

warning

La interfaz de red cambia su estado con frecuencia

NodeFilesystemSpaceFillingUp

warning

Se prevé que el sistema de archivos se quede sin espacio en las próximas 24 horas.

NodeFilesystemSpaceFillingUp

critical

Se prevé que el sistema de archivos se quede sin espacio en las próximas 4 horas.

NodeFilesystemAlmostOutOfSpace

warning

Al sistema de archivos le queda menos del 5 % de espacio.

NodeFilesystemAlmostOutOfSpace

critical

Al sistema de archivos le queda menos del 3 % de espacio.

NodeFilesystemFilesFillingUp

warning

Se prevé que el sistema de archivos se quede sin inodos en las próximas 24 horas.

NodeFilesystemFilesFillingUp

critical

Se prevé que el sistema de archivos se quede sin inodos en las próximas 4 horas.

NodeFilesystemAlmostOutOfFiles

warning

Al sistema de archivos le quedan menos del 5 % de inodos.

NodeFilesystemAlmostOutOfFiles

critical

Al sistema de archivos le quedan menos del 3 % de inodos.

NodeNetworkReceiveErrs

warning

La interfaz de red informa de muchos errores de recepción.

NodeNetworkTransmitErrs

warning

La interfaz de red informa de muchos errores de transmisión.

NodeHighNumberConntrackEntriesUsed

warning

El número de entradas de conntrack se acerca al límite.

NodeTextFileCollectorScrapeError

warning

El recopilador de archivos de texto de Node Exporter no se pudo extraer.

NodeClockSkewDetected

warning

Se detectó un sesgo en el reloj.

NodeClockNotSynchronizzing

warning

El reloj no se sincroniza.

NodeRAIDDegraded

critical

RAIDLa matriz está degradada

NodeRAIDDiskFailure

warning

Fallo en el dispositivo en la matriz RAID

NodeFileDescriptorLimit

warning

Se prevé que el núcleo agote pronto el límite de descriptores de archivos.

NodeFileDescriptorLimit

critical

Se prevé que el núcleo agote pronto el límite de descriptores de archivos.

KubeNodeNotReady

warning

El nodo no está listo.

KubeNodeUnreachable

warning

No se puede acceder al nodo.

KubeletTooManyPods

info

Kubelet está funcionando al máximo de su capacidad.

KubeNodeReadinessFlapping

warning

El estado de preparación del nodo es inestable.

KubeletPlegDurationHigh

warning

El generador de eventos del ciclo de vida de Kubelet Pod tarda demasiado en volver a publicarse.

KubeletPodStartUpLatencyHigh

warning

La latencia de inicio de Kubelet Pod es demasiado alta.

KubeletClientCertificateExpiration

warning

El certificado de cliente de Kubelet está a punto de caducar.

KubeletClientCertificateExpiration

critical

El certificado de cliente de Kubelet está a punto de caducar.

KubeletServerCertificateExpiration

warning

El certificado del servidor de Kubelet está a punto de caducar.

KubeletServerCertificateExpiration

critical

El certificado del servidor de Kubelet está a punto de caducar.

KubeletClientCertificateRenewalErrors

warning

Kubelet no ha podido renovar su certificado de cliente.

KubeletServerCertificateRenewalErrors

warning

Kubelet no ha podido renovar su certificado de servidor.

KubeletDown

critical

El objetivo desapareció de la detección del objetivo de Prometheus.

KubeVersionMismatch

warning

Se están ejecutando diferentes versiones semánticas de los componentes de Kubernetes.

KubeClientErrors

warning

El cliente del API servidor Kubernetes está experimentando errores.

KubeClientCertificateExpiration

warning

El certificado de cliente está a punto de caducar.

KubeClientCertificateExpiration

critical

El certificado de cliente está a punto de caducar.

KubeAggregatedAPIErrors

warning

El conjunto de Kubernetes ha registrado errores. API

KubeAggregatedAPIDown

warning

El agregado de Kubernetes está inactivo. API

KubeAPIDown

critical

El objetivo desapareció de la detección del objetivo de Prometheus.

KubeAPITerminatedRequests

warning

El apiserver de Kubernetes ha cancelado {{$value |}} sus solicitudes entrantes. humanizePercentage

KubePersistentVolumeFillingUp

critical

El volumen persistente se está llenando.

KubePersistentVolumeFillingUp

warning

El volumen persistente se está llenando.

KubePersistentVolumeInodesFillingUp

critical

Los inodos de volumen persistente se están llenando.

KubePersistentVolumeInodesFillingUp

warning

Los inodos de volumen persistente se están llenando.

KubePersistentVolumeErrors

critical

El volumen persistente tiene problemas con el aprovisionamiento.

KubeCPUOvercommit

warning

El clúster tiene un exceso de solicitudes de recursos comprometidas. CPU

KubeMemoryOvercommit

warning

El clúster tiene un exceso de solicitudes de recursos de memoria comprometidas.

KubeCPUQuotaOvercommit

warning

El clúster tiene un exceso de solicitudes de CPU recursos comprometidas.

KubeMemoryQuotaOvercommit

warning

El clúster tiene un exceso de solicitudes de recursos de memoria comprometidas.

KubeQuotaAlmostFull

info

La cuota de espacio de nombres se va a llenar.

KubeQuotaFullyUsed

info

La cuota de espacio de nombres se ha utilizado en su totalidad.

KubeQuotaExceeded

warning

La cuota de espacio de nombres ha superado los límites.

CPUThrottlingHigh

info

Los procesos experimentan una CPU aceleración elevada.

KubePodCrashLooping

warning

El pod se bloquea en bucle.

KubePodNotReady

warning

El pod lleva más de 15 minutos sin estar preparado.

KubeDeploymentGenerationMismatch

warning

La generación de implementaciones no coincide debido a una posible reversión.

KubeDeploymentReplicasMismatch

warning

La implementación no ha coincidido con el número de réplicas esperado.

KubeStatefulSetReplicasMismatch

warning

StatefulSet no ha coincidido con el número esperado de réplicas.

KubeStatefulSetGenerationMismatch

warning

StatefulSet discordancia generacional debido a una posible reversión

KubeStatefulSetUpdateNotRolledOut

warning

StatefulSet la actualización no se ha lanzado.

KubeDaemonSetRolloutStuck

warning

DaemonSet el lanzamiento está bloqueado.

KubeContainerWaiting

warning

El contenedor de pods lleva en espera más de 1 hora.

KubeDaemonSetNotScheduled

warning

DaemonSet los pods no están programados.

KubeDaemonSetMisScheduled

warning

DaemonSet los pods están mal programados.

KubeJobNotCompleted

warning

El trabajo no se completó a tiempo.

KubeJobFailed

warning

No se pudo completar el trabajo.

KubeHpaReplicasMismatch

warning

HPAno ha coincidido con el número deseado de réplicas.

KubeHpaMaxedOut

warning

HPAse está ejecutando al máximo de réplicas

KubeStateMetricsListErrors

critical

kube-state-metrics está experimentando errores en las operaciones de lista.

KubeStateMetricsWatchErrors

critical

kube-state-metrics está experimentando errores en las operaciones de vigilancia.

KubeStateMetricsShardingMismatch

critical

kube-state-metrics la fragmentación está mal configurada.

KubeStateMetricsShardsMissing

critical

kube-state-metrics faltan fragmentos.

KubeAPIErrorBudgetBurn

critical

El API servidor está consumiendo demasiados errores presupuestados.

KubeAPIErrorBudgetBurn

critical

El API servidor está consumiendo demasiado margen de error.

KubeAPIErrorBudgetBurn

warning

El API servidor está consumiendo demasiado margen de error.

KubeAPIErrorBudgetBurn

warning

El API servidor está consumiendo demasiado margen de error.

TargetDown

warning

Uno o más objetivos están inactivos.

etcdInsufficientMembers

critical

El clúster Etcd tiene miembros insuficientes.

etcdHighNumberOfLeaderChanges

warning

Número elevado de cambios de líder en el clúster de etcd.

etcdNoLeader

critical

El clúster de etcd no tiene líder.

etcdHighNumberOfFailedGRPCRequests

warning

Etcd agrupa un gran número de RPC solicitudes g fallidas.

etcdGRPCRequestsSlow

critical

RPCLas solicitudes del clúster g de Etcd son lentas.

etcdMemberCommunicationSlow

warning

La comunicación entre los miembros del clúster de etcd es lenta.

etcdHighNumberOfFailedProposals

warning

Número elevado de propuestas fallidas en el clúster de etcd.

etcdHighFsyncDurations

warning

El clúster de etcd tiene altas duraciones de sincronización.

etcdHighCommitDurations

warning

El clúster de etcd tiene duraciones de confirmación superiores a las esperadas.

etcdHighNumberOfFailedHTTPRequests

warning

El clúster Etcd ha fallado HTTP en las solicitudes.

etcdHighNumberOfFailedHTTPRequests

critical

El clúster Etcd tiene un gran número de solicitudes fallidasHTTP.

etcdHTTPRequestsSlow

warning

HTTPLas solicitudes de clústeres de Etcd son lentas.

HostClockNotSynchronizing

warning

El reloj de host no se sincroniza.

HostOomKillDetected

warning

Se ha detectado la OOM muerte del host.

Resolución de problemas

Hay algunas cosas que pueden provocar un error en la configuración del proyecto. Asegúrese de revisar lo siguiente.

  • Debe cumplir todos los requisitos previos antes de instalar la solución.

  • El clúster debe tener al menos un nodo antes de intentar crear la solución o acceder a las métricas.

  • Tu EKS clúster de Amazon debe tener instalados AWS CNI los kube-proxy complementos CoreDNS y los complementos. Si no están instalados, la solución no funcionará correctamente. Se instalan de forma predeterminada al crear el clúster a través de la consola. Es posible que tengas que instalarlos si el clúster se creó mediante un AWS SDK.

  • Se agotó el tiempo de espera para la instalación de los Amazon EKS pods. Esto puede ocurrir si no hay suficiente capacidad de nodos disponible. Estos problemas se deben a varias causas, entre las que se incluyen las siguientes:

    • El EKS clúster de Amazon se inicializó con Fargate en lugar de Amazon. EC2 Este proyecto requiere AmazonEC2.

    • Los nodos tienen taints y, por lo tanto, no están disponibles.

      Puede utilizar kubectl describe node NODENAME | grep Taints para comprobar las taints. Luego, kubectl taint node NODENAME TAINT_NAME- para eliminar las taints. Asegúrese de incluir - después del nombre de la taint.

    • Los nodos han alcanzado el límite de capacidad. En este caso, puede crear un nodo nuevo o aumentar la capacidad.

  • No ve ningún panel en Grafana: está utilizando un ID de espacio de trabajo de Grafana incorrecto.

    Ejecute el siguiente comando para obtener información acerca de Grafana:

    kubectl describe grafanas external-grafana -n grafana-operator

    Puedes comprobar los resultados para el espacio de trabajo correctoURL. Si no es la que esperaba, vuelva a implementarla con el ID de espacio de trabajo correcto.

    Spec: External: API Key: Key: GF_SECURITY_ADMIN_APIKEY Name: grafana-admin-credentials URL: https://g-123example.grafana-workspace.aws-region.amazonaws.com Status: Admin URL: https://g-123example.grafana-workspace.aws-region.amazonaws.com Dashboards: ...
  • No ves ningún panel en Grafana: estás utilizando una API clave caducada.

    Para detectar esto, tendrá que usar el operador grafana y comprobar si hay errores en los registros. Obtenga el nombre del operador de Grafana con este comando:

    kubectl get pods -n grafana-operator

    Esto devolverá el nombre del operador, por ejemplo:

    NAME READY STATUS RESTARTS AGE grafana-operator-1234abcd5678ef90 1/1 Running 0 1h2m

    Utilice el nombre del operador en el siguiente comando:

    kubectl logs grafana-operator-1234abcd5678ef90 -n grafana-operator

    Los mensajes de error como los siguientes indican que la clave ha caducadoAPI:

    ERROR error reconciling datasource {"controller": "grafanadatasource", "controllerGroup": "grafana.integreatly.org", "controllerKind": "GrafanaDatasource", "GrafanaDatasource": {"name":"grafanadatasource-sample-amp","namespace":"grafana-operator"}, "namespace": "grafana-operator", "name": "grafanadatasource-sample-amp", "reconcileID": "72cfd60c-a255-44a1-bfbd-88b0cbc4f90c", "datasource": "grafanadatasource-sample-amp", "grafana": "external-grafana", "error": "status: 401, body: {\"message\":\"Expired API key\"}\n"} github.com/grafana-operator/grafana-operator/controllers.(*GrafanaDatasourceReconciler).Reconcile

    En este caso, cree una API clave nueva y vuelva a implementar la solución. Si el problema persiste, puedes forzar la sincronización mediante el siguiente comando antes de volver a implementarlo:

    kubectl delete externalsecret/external-secrets-sm -n grafana-operator
  • CDKinstala: falta un SSM parámetro. Si ve un error similar al siguiente, ejecute cdk bootstrap y vuelva a intentarlo.

    Deployment failed: Error: aws-observability-solution-eks-infra-$EKS_CLUSTER_NAME: SSM parameter /cdk-bootstrap/xxxxxxx/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/ guide/bootstrapping.html)
  • La implementación puede fallar si el OIDC proveedor ya existe. Aparecerá un error como el siguiente (en este caso, para las CDK instalaciones):

    | CREATE_FAILED | Custom::AWSCDKOpenIdConnectProvider | OIDCProvider/Resource/Default Received response status [FAILED] from custom resource. Message returned: EntityAlreadyExistsException: Provider with url https://oidc.eks.REGION.amazonaws.com/id/PROVIDER ID already exists.

    En este caso, vaya al IAM portal, elimine el OIDC proveedor e inténtelo de nuevo.

  • Instalaciones de Terraform: aparece un mensaje de error que incluye cluster-secretstore-sm failed to create kubernetes rest client for update of resource y failed to create kubernetes rest client for update of resource.

    Este error suele indicar que el operador de secretos externos no está instalado o habilitado en su clúster de Kubernetes. Se instala como parte de la implementación de la solución, pero a veces no está listo cuando la solución lo necesita.

    Puede verificar que está instalado mediante el siguiente comando:

    kubectl get deployments -n external-secrets

    Si está instalado, el operador puede tardar algún tiempo en estar completamente listo para usarse. Puede comprobar el estado de las definiciones de recursos personalizadas (CRDs) necesarias ejecutando el siguiente comando:

    kubectl get crds|grep external-secrets

    Este comando debe enumerar los operadores CRDs relacionados con los secretos externos, incluidos clustersecretstores.external-secrets.io yexternalsecrets.external-secrets.io. Si no aparecen en la lista, espere unos minutos y revise de nuevo.

    Una vez CRDs registrados, puede terraform apply volver a ejecutarlos para implementar la solución.