Uso de datos de asignación de costos divididos con Amazon Managed Service para Prometheus
Para dividir los datos de costos de Amazon EKS, es necesario recopilar y almacenar las métricas de los clústeres, incluido el uso de memoria y CPU. Amazon Managed Service para Prometheus se puede utilizar para este propósito.
Cuando haya optado por los datos de asignación de costos divididos y su espacio de trabajo de Amazon Managed Service para Prometheus comience a recibir las dos métricas requeridas (container_cpu_usage_seconds_total y container_memory_working_set_bytes), los datos de asignación de costos divididos reconocerán las métricas y las utilizarán automáticamente.
nota
Las dos métricas requeridas (container_cpu_usage_seconds_total y container_memory_working_set_bytes) están presentes en la configuración predeterminada del analizador de Prometheus y en la configuración predeterminada que se proporciona con un recopilador administrado por AWS. Sin embargo, si personaliza estas configuraciones, no vuelva a etiquetar y no modifique ni elimine de las métricas container_cpu_usage_seconds_total y container_memory_working_set_bytes las siguientes etiquetas: name, namespace, y pod. Si vuelve a etiquetar o si modifica o elimina estas etiquetas, la ingesta de sus métricas puede verse afectada.
Puede usar Amazon Managed Service para Prometheus para recopilar métricas de EKS de una sola cuenta de uso en una sola región. El espacio de trabajo de Amazon Managed Service para Prometheus debe estar en esa cuenta y región. Necesita una instancia de Amazon Managed Service para Prometheus para cada cuenta de uso y región cuyos costos desee monitorizar. Puede recopilar métricas para varios clústeres en el espacio de trabajo de Amazon Managed Service para Prometheus, siempre y cuando estén en la misma cuenta de uso y región.
En las siguientes secciones se describe cómo enviar las métricas correctas de un clúster de EKS al espacio de trabajo de Amazon Managed Service para Prometheus.
Requisitos previos
Para usar Amazon Managed Service para Prometheus con datos de asignación de costos divididos se han de cumplir los siguientes requisitos previos:
-
Debe habilitar los datos de asignación de costos divididos en la consola de Administración de costos y facturación de AWS. Para obtener más información, consulte Habilitación de los datos de asignación de costos divididos. Al optar por los datos de asignación de costos divididos, se crea un rol vinculado al servicio en cada cuenta de uso para consultar a Amazon Managed Service para Prometheus las métricas del clúster de Amazon EKS de esa cuenta. Para obtener más información, consulte Roles vinculados a servicios para datos de asignación de costos divididos.
-
Necesita un clúster de EKS en el cual desee realizar el seguimiento de los datos de asignación de costos divididos. Puede elegir un clúster existente, o bien crear uno nuevo. Para obtener más información, consulte Creación de un clúster de Amazon EKS en la Guía del usuario de Amazon EKS.
nota
Necesitará el
EKS cluster ARN,security group IDsy al menos dossubnet IDs(en diferentes zonas de disponibilidad) para usarlos en pasos posteriores.(opcional) Configure el modo de autenticación de su clúster de EKS en
APIoAPI_AND_CONFIG_MAP. -
Necesita una instancia de Amazon Managed Service para Prometheus en la misma cuenta y región que su clúster de EKS. Si aún no dispone de ninguna instancia, deberá crear una. Para obtener información sobre cómo crear una instancia de Amazon Managed Service para Prometheus, consulte Creación de un espacio de trabajo en la Guía del usuario de Amazon Managed Service para Prometheus.
nota
Necesitará utilizar el
Amazon Managed Service for Prometheus workspace ARNen los pasos posteriores.
Reenvío de métricas de EKS a Amazon Managed Service para Prometheus
Una vez que tenga un clúster de EKS y una instancia de Amazon Managed Service para Prometheus, podrá reenviar las métricas del clúster a la instancia. Puede enviar métricas de dos maneras.
-
Opción 1: utilice un recopilador administrado por AWS. Esta es la forma más sencilla de enviar métricas de un clúster de EKS a Amazon Managed Service para Prometheus. Sin embargo, presenta el límite de analizar métricas cada 30 segundos como máximo.
-
Opción 2: cree su propio agente de Prometheus. En este caso, tendrá más control sobre la configuración del analizador, pero deberá administrar el agente después de crearlo.
Opción 1: uso de un recopilador administrado por AWS
El uso de un recopilador administrado por AWS (un analizador) es la forma más sencilla de enviar métricas desde un clúster de EKS a una instancia de Amazon Managed Service para Prometheus. A continuación se muestran los pasos para crear un recopilador administrado por AWS. Para obtener más información detallada, consulte Recopiladores administrados por AWS en la Guía del usuario de Amazon Managed Service para Prometheus.
nota
Los recopiladores administrados por AWS tienen un intervalo de análisis mínimo de 30 segundos. Si tiene pods de corta duración, la recomendación es fijar el intervalo de análisis en 15 segundos. Para usar un intervalo de 15 segundos, utilice la opción 2 para crear su propio agente de Prometheus.
Para crear un recopilador administrado por AWS hay que seguir tres pasos:
-
Crear una configuración del analizador.
-
Crear el analizador.
-
Configurar el clúster de EKS para permitir que el analizador acceda a las métricas.
Paso 1: creación de una configuración del analizador
Para poder crear un analizador, en primer lugar debe disponer de una configuración del analizador. Puede usar una configuración predeterminada, o bien crear la suya propia. A continuación se muestran tres formas de obtener una configuración del analizador:
-
Obtenga la configuración predeterminada mediante la AWS CLI, llamando a:
aws amp get-default-scraper-configuration -
Cree su propia configuración. Para obtener más información, consulte las instrucciones de Scraper configuration en la Guía del usuario de Amazon Managed Service for Prometheus.
-
Copie el ejemplo de configuración que se proporciona en las mismas instrucciones de Scraper configuration en la Guía del usuario de Amazon Managed Service para Prometheus.
Puede editar la configuración del analizador para modificar el intervalo de análisis o filtrar las métricas que se extraigan, por ejemplo.
Para filtrar las métricas que se extraen e incluir solo las dos que se necesitan para los datos de asignación de costos divididos, utilice la siguiente configuración de extracción:
global: scrape_interval: 30s #external_labels: #clusterArn: <REPLACE_ME> scrape_configs: - job_name: kubernetes-nodes-cadvisor scrape_interval: 30s scrape_timeout: 10s scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - regex: (.+) replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor source_labels: - __meta_kubernetes_node_name target_label: __metrics_path__ - replacement: kubernetes.default.svc:443 target_label: __address__ metric_relabel_configs: - source_labels: [__name__] regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes' action: keep
Una vez que tenga la configuración del analizador, debe codificarla en base64 para utilizarla en el paso 2. La configuración es un archivo de texto YAML. Para codificar el archivo, utilice un sitio web como https://www.base64encode.org/
Paso 2: creación del analizador
Ahora que tiene un archivo de configuración, debe crear el analizador. Cree un analizador mediante el siguiente comando de la AWS CLI, en función de las variables descritas en la sección de requisitos previos. Debe utilizar la información de su clúster de EKS para los campos <EKS-CLUSTER-ARN>, <SG-SECURITY-GROUP-ID> y <SUBNET-ID>, sustituir <BASE64-CONFIGURATION-BLOB> por la configuración del analizador que creó en el paso anterior, y sustituir <AMP_WORKSPACE_ARN> por el ARN del espacio de trabajo de Amazon Managed Service para Prometheus.
aws amp create-scraper \ --source eksConfiguration="{clusterArn=<EKS-CLUSTER-ARN>,securityGroupIds=[<SG-SECURITY-GROUP-ID>],subnetIds=[<SUBNET-ID>]}" \ --scrape-configuration configurationBlob=<BASE64-CONFIGURATION-BLOB>\ --destination ampConfiguration={workspaceArn="<AMP_WORKSPACE_ARN>"}
Anote el scraperId que se devuelve para usarlo en el paso 3.
Paso 3: configuración del clúster de EKS para permitir que el analizador acceda a las métricas
Si el modo de autenticación de su clúster de EKS está configurado en API o API_AND_CONFIG_MAP, su analizador tendrá automáticamente la política de acceso correcta en el clúster y los analizadores tendrán acceso a su clúster. No se requiere ninguna configuración adicional, y las métricas deberían transferirse a Amazon Managed Service para Prometheus.
Si el modo de autenticación de su clúster de EKS no está configurado en API o API_AND_CONFIG_MAP, tendrá que configurar el clúster manualmente para permitir que el analizador acceda a sus métricas mediante un ClusterRole y un ClusterRoleBinding. Para obtener información sobre cómo habilitar estos permisos, consulte Manually configuring an EKS cluster for scraper access en la Guía del usuario de Amazon Managed Service para Prometheus.
Cuando el analizador esté activo, compruebe que ambas métricas (container_cpu_usage_seconds_total y container_memory_working_set_bytes) se estén transfiriendo a su espacio de trabajo de Amazon Managed Service para Prometheus.
awscurl --service="aps" --region="<REGION>" "https://aps-workspaces.<REGION>.amazonaws.com/workspaces/<WorkSpace_ID>/api/v1/label/__name__/values"
Salida:
{ "status": "success", "data": [ "container_cpu_usage_seconds_total", "container_memory_working_set_bytes", "scrape_duration_seconds", "scrape_samples_post_metric_relabeling", "scrape_samples_scraped", "scrape_series_added", "up" ] }
Opción 2: creación de su propio agente de Prometheus
Si no puede usar el recopilador administrado por AWS o si ya tiene su propio servidor de Prometheus, puede usar su propia instancia de Prometheus como agente para analizar las métricas de su clúster de EKS y enviarlas a Amazon Managed Service para Prometheus.
Para obtener instrucciones detalladas sobre cómo usar su propia instancia de Prometheus como agente, consulte Uso de una instancia de Prometheus como recopilador en la Guía del usuario de Amazon Managed Service para Prometheus.
El siguiente es un ejemplo de configuración del analizador de Prometheus que incluye el intervalo de análisis del servidor de Prometheus y las métricas del contenedor necesarias para los datos de asignación de costos divididos. Si tiene pods de corta duración, la recomendación es reducir el intervalo de análisis predeterminado del servidor de Prometheus de 30 a 15 segundos. Tenga en cuenta que esto puede provocar un uso elevado de la memoria del servidor de Prometheus.
global: scrape_interval: 30s #external_labels: #clusterArn: <REPLACE_ME> scrape_configs: - job_name: kubernetes-nodes-cadvisor scrape_interval: 30s scrape_timeout: 10s scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - regex: (.+) replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor source_labels: - __meta_kubernetes_node_name target_label: __metrics_path__ - replacement: kubernetes.default.svc:443 target_label: __address__ metric_relabel_configs: - source_labels: [__name__] regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes' action: keep
Si siguió la sección Configuración de la ingesta desde un nuevo servidor de Prometheus con Helm en la Guía del usuario de Amazon Managed Service para Prometheus, podrá actualizar la configuración del analizador.
Para actualizar la configuración del analizador
-
Edite
my_prometheus_values_yamldesde la guía e incluya el ejemplo de configuración del analizador en el bloqueserver. -
Ejecute el siguiente comando, mediante
prometheus-chart-nameyprometheus-namespacedesde la Guía del usuario de Amazon Managed Service para Prometheus.
helm upgrade prometheus-chart-name prometheus-community/prometheus -n prometheus-namespace -f my_prometheus_values_yaml
Para obtener más información sobre scrape_interval o sobre cómo usar un scrape_interval que no sea global, consulte Prometheus scrape configuration
Como alternativa, puede usar el recopilador de AWS Distro para OpenTelemetry, que incluye un receptor de Prometheus, un exportador de escritura remota de Prometheus y la extensión de autenticación Sigv4 de AWS, a fin de conseguir acceso de escritura remoto a Amazon Managed Service para Prometheus.
nota
Una vez que haya configurado su agente de Prometheus, a diferencia de los recopiladores administrados por AWS, será responsable de mantener el agente actualizado y en funcionamiento para recopilar las métricas.
Cálculo de los costos de Amazon Managed Service para Prometheus
Puede usar la calculadora de precios de AWS para calcular el costo de usar Amazon Managed Service para Prometheus para los datos de asignación de costos divididos.
Para configurar Amazon Managed Service para Prometheus para su cálculo
-
Abra la calculadora de precios de AWS en https://calculator.aws/#/
. -
Elija Crear presupuesto.
-
En la página Añadir servicio, introduzca Amazon Managed Service para Prometheus en el campo de búsqueda y, a continuación, seleccione Configurar.
-
En el campo Descripción, escriba una descripción de su estimación.
-
Elija una región en Region.
-
Seleccione Calcular el costo con los detalles de su infraestructura. Esta opción le permite calcular los costos de ingesta, almacenamiento y muestra de consultas en función de la configuración de infraestructura actual o propuesta.
-
En Número de instancias de EC2, introduzca el número total de instancias de EC2 en todos los clústeres de toda la familia de facturación unificada (incluidas todas las cuentas y regiones). Si usa AWS Fargate, utilice el número de tareas de Fargate como proxy para el recuento de instancias de EC2.
-
Los datos de asignación de costos divididos requieren dos métricas:
container_cpu_usage_seconds_totalycontainer_memory_working_set_bytes. En Métricas de Prometheus por instancia de EC2, introduzca 2. -
Los datos de asignación de costos divididos sugieren un intervalo de análisis de 15 segundos. En Intervalo de recopilación de métricas (en segundos), introduzca 15. Si usó un intervalo diferente (por ejemplo, 30 segundos), cámbielo por el intervalo que configuró.
-
Los datos de asignación de costos divididos no imponen requisitos específicos para los demás parámetros, por lo que debe introducir los valores adecuados para el resto de los parámetros de entrada según los requisitos de su empresa.
-
Haga clic en Guardar y agregar servicio.