Uso de un recopilador gestionado AWS - Servicio administrado por Amazon para Prometheus

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.

Uso de un recopilador gestionado AWS

Para utilizar un recopilador de Amazon Managed Service para Prometheus, se debe crear un raspador que detecte y extraiga las métricas del clúster de Amazon EKS.

  • Es posible crear un raspador como parte de la creación del clúster de Amazon EKS. Para obtener más información sobre la creación de un clúster de Amazon EKS, incluida la creación de un raspador, consulte Creación de un clúster de Amazon EKS en la Guía del usuario de Amazon EKS.

  • Puede crear su propio raspador, mediante programación con la AWS API o mediante el. AWS CLI

nota

Los espacios de trabajo de Amazon Managed Service for Prometheus creados con claves administradas por el cliente no pueden AWS usar recopiladores administrados para la ingestión.

Un recopilador de Amazon Managed Service para Prometheus recopila métricas que son compatibles con Prometheus. Para obtener más información acerca de las métricas compatibles con Prometheus, consulte ¿Cuáles son las métricas compatibles con Prometheus?.

En los temas siguientes se describe cómo crear, administrar y configurar raspadores.

Crear un raspador

Un recopilador de Amazon Managed Service para Prometheus consta de un raspador que descubre y recopila métricas de un clúster de Amazon EKS. Amazon Managed Service para Prometheus gestiona el raspador por usted y le brinda la escalabilidad, la seguridad y la fiabilidad que necesita, sin tener que gestionar usted mismo ninguna instancia, agente o raspador.

Al crear un clúster de Amazon EKS a través de la consola de Amazon EKS, se crea automáticamente un raspador. No obstante, en algunas situaciones, es posible que desee crear un raspador usted mismo. Por ejemplo, si quiere añadir un recopilador AWS gestionado a un clúster de Amazon EKS existente o si quiere cambiar la configuración de un recopilador existente.

Puede crear un raspador mediante la AWS API o el AWS CLI.

Existen algunos requisitos previos para crear su propio raspador:

nota

El clúster se asociará al raspador por su nombre de recurso de Amazon (ARN). Si elimina un clúster y, a continuación, crea uno nuevo con el mismo nombre, el ARN se reutilizará para el nuevo clúster. Por este motivo, el rastreador intentará recopilar métricas para el nuevo clúster. Los raspadores se eliminan por separado de la eliminación del clúster.

AWS API

Para crear un raspador mediante la API AWS

Utilice la operación de la API CreateScraper para crear un raspador con la API AWS . En el siguiente ejemplo se crea un raspador en la región us-west-2. Debe reemplazar la información sobre el espacio de trabajo Cuenta de AWS, la seguridad y el clúster de Amazon EKS por sus propios ID y proporcionar la configuración que utilizará para su raspador.

nota

Debe incluir al menos dos subredes en al menos dos zonas de disponibilidad.

scrapeConfiguration es un archivo YAML de configuración de Prometheus codificado en base64. Puede descargar una configuración de uso general con la operación de la API GetDefaultScraperConfiguration. Para obtener más información sobre el formato delscrapeConfiguration, consulteConfiguración del raspador.

POST /scrapers HTTP/1.1 Content-Length: 415 Authorization: AUTHPARAMS X-Amz-Date: 20201201T193725Z User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6 { "alias": "myScraper", "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id" } }, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account-id:cluster/cluster-name", "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": <base64-encoded-blob> } }
AWS CLI

Para crear un raspador utilizando el AWS CLI

Utilice el create-scraper comando para crear un raspador con el. AWS CLI En el siguiente ejemplo se crea un raspador en la región us-west-2. Debe reemplazar la información sobre el espacio de trabajo Cuenta de AWS, la seguridad y el clúster de Amazon EKS por sus propios ID y proporcionar la configuración que utilizará para su raspador.

nota

Debe incluir al menos dos subredes en al menos dos zonas de disponibilidad.

scrape-configuration es un archivo YAML de configuración de Prometheus codificado en base64. Puede descargar una configuración de uso general con el get-default-scraper-configuration comando. Para obtener más información sobre el formato descrape-configuration, consulteConfiguración del raspador.

aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/cluster-name', securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"

A continuación se muestra una lista completa de las operaciones del raspador que puede usar con la API de AWS :

nota

El clúster de Amazon EKS que está recopilando debe estar configurado para permitir que Amazon Managed Service para Prometheus acceda a las métricas. En el siguiente tema se describe cómo configurar el clúster.

Errores comunes al crear raspadores

Los siguientes son los problemas más comunes al intentar crear un raspador nuevo.

  • AWS Los recursos necesarios no existen. El grupo de seguridad, la subred y el clúster de Amazon EKS especificados deben existir.

  • Espacio de direcciones IP insuficiente. Debe tener al menos una dirección IP disponible en cada subred que pase a la CreateScraper API.

Configuración del clúster de Amazon EKS

Su clúster de Amazon EKS debe estar configurado para permitir que el raspador acceda a las métricas. Hay dos opciones para esta configuración:

  • Utilice las entradas de acceso de Amazon EKS para proporcionar automáticamente a los coleccionistas de Amazon Managed Service for Prometheus acceso a su clúster.

  • Configure manualmente su clúster de Amazon EKS para gestionar la extracción de métricas.

En los temas siguientes se describe cada uno de ellos con más detalle.

Configure Amazon EKS para el acceso desde el raspador con entradas de acceso

El uso de entradas de acceso para Amazon EKS es la forma más sencilla de dar acceso a Amazon Managed Service for Prometheus para extraer métricas de su clúster.

El clúster de Amazon EKS que está extrayendo debe estar configurado para permitir la autenticación de la API. El modo de autenticación del clúster debe estar configurado en API oAPI_AND_CONFIG_MAP. Se puede ver en la consola de Amazon EKS, en la pestaña Configuración de acceso de los detalles del clúster. Para obtener más información, consulte Permitir el acceso de los usuarios o roles de IAM al objeto de Kubernetes en su clúster de Amazon EKS en la Guía del usuario de Amazon EKS.

Puede crear el raspador al crear el clúster o después de crearlo:

  • Al crear un clúster: puede configurar este acceso al crear un clúster de Amazon EKS a través de la consola de Amazon EKS (siga las instrucciones para crear un raspador como parte del clúster) y se creará automáticamente una política de entrada de acceso que permitirá a Amazon Managed Service for Prometheus acceder a las métricas del clúster.

  • Añadir después de crear un clúster: si su clúster de Amazon EKS ya existe, configure el modo de autenticación en uno API o API_AND_CONFIG_MAP varios scrapers que cree a través de la API o CLI de Amazon Managed Service for Prometheus crearán automáticamente la política de entrada de acceso correcta para usted y los scrapers tendrán acceso a su clúster.

Se ha creado una política de acceso y entrada

Cuando creas un scraper y dejas que Amazon Managed Service for Prometheus genere una política de acceso y entrada para ti, generará la siguiente política. Para obtener más información sobre las entradas de acceso, consulte Permitir que los roles de IAM o los usuarios accedan a Kubernetes en la Guía del usuario de Amazon EKS.

{ "rules": [ { "effect": "allow", "apiGroups": [ "" ], "resources": [ "nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "apiGroups": [ "extensions", "networking.k8s.io" ], "resources": [ "ingresses/status", "ingresses" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "nonResourceURLs": [ "/metrics" ], "verbs": [ "get" ] } ] }

Configuración manual de Amazon EKS para el acceso al raspador

Si prefieres usarlo para controlar el acceso aws-auth ConfigMap a tu clúster de Kubernetes, puedes seguir dando acceso a tus métricas a los scrapers de Amazon Managed Service for Prometheus. Los siguientes pasos permitirán a Amazon Managed Service for Prometheus acceder a extraer las métricas de su clúster de Amazon EKS.

nota

Para obtener más información sobre las entradas ConfigMap y acceder a ellas, consulte Permitir el acceso de usuarios o roles de IAM a Kubernetes en la Guía del usuario de Amazon EKS.

Este procedimiento utiliza kubectl y la AWS CLI. Para obtener más información sobre la instalación de kubectl, consulte Instalación de kubectl en la Guía del usuario de Amazon EKS.

Para configurar manualmente su clúster de Amazon EKS para la extracción gestionada de métricas
  1. Cree un archivo denominado clusterrole-binding.yml con el siguiente contenido:

    apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: aps-collector-role rules: - apiGroups: [""] resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"] verbs: ["describe", "get", "list", "watch"] - apiGroups: ["extensions", "networking.k8s.io"] resources: ["ingresses/status", "ingresses"] verbs: ["describe", "get", "list", "watch"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: aps-collector-user-role-binding subjects: - kind: User name: aps-collector-user apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: aps-collector-role apiGroup: rbac.authorization.k8s.io
  2. Ejecute el siguiente comando para comprobar en el clúster:

    kubectl apply -f clusterrole-binding.yml

    Esto creará el enlace y la regla del rol del clúster. En este ejemplo se utiliza aps-collector-role como el nombre de rol y aps-collector-user como el nombre de clave.

  3. El siguiente comando proporciona información sobre el raspador con el ID scraper-id. Este es el raspador que creó con el comando de la sección anterior.

    aws amp describe-scraper --scraper-id scraper-id
  4. En los resultados de describe-scraper, busque roleArn. Este tendrá el siguiente formato:

    arn:aws:iam::account-id:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    Amazon EKS requiere un formato diferente para este ARN. Debe ajustar el formato del ARN devuelto para usarlo en el siguiente paso. Edítelo para que coincida con este formato:

    arn:aws:iam::account-id:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    Por ejemplo, este ARN:

    arn:aws:iam::111122223333:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7

    Debe reescribirse como:

    arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
  5. Ejecute el siguiente comando en el clúster, utilizando el roleArn modificado del paso anterior, así como el nombre y la región del clúster:

    eksctl create iamidentitymapping --cluster cluster-name --region region-id --arn roleArn --username aps-collector-user

    Esto permite que el raspador acceda al clúster mediante el rol y el usuario que creó en el archivo clusterrole-binding.yml.

Buscar y eliminar raspadores

Puede utilizar la AWS API o la AWS CLI para enumerar los scrapers de su cuenta o eliminarlos.

nota

Asegúrese de utilizar la versión más reciente del AWS CLI o del SDK. La última versión le proporciona las funciones y funciones más recientes, así como actualizaciones de seguridad. Como alternativa, puedes usar AWS Cloudshell, que proporciona una experiencia de línea de up-to-date comandos permanente y automática.

Para ver todos los scrapers de tu cuenta, usa la ListScrapersoperación API.

O bien, con el AWS CLI comando, llama a:

aws amp list-scrapers

ListScrapers devuelve todos los raspadores de su cuenta, por ejemplo:

{ "scrapers": [ { "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890", "arn": "arn:aws:aps:us-west-2:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890", "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931", "status": { "statusCode": "DELETING" }, "createdAt": "2023-10-12T15:22:19.014000-07:00", "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00", "tags": {}, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster", "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }

Para eliminar un raspador, scraperId busque el raspador que desea eliminar mediante la ListScrapers operación y, a continuación, utilice la DeleteScraperoperación para eliminarlo.

Como alternativa, con la AWS CLI, llama a:

aws amp delete-scraper --scraper-id scraperId

Configuración del raspador

Puede controlar la forma en que su raspador descubre y recopila las métricas con una configuración de raspador compatible con Prometheus. Por ejemplo, puede cambiar el intervalo en el que se envían las métricas al espacio de trabajo. También puede usar el reetiquetado para reescribir dinámicamente las etiquetas de una métrica. La configuración del raspador es un archivo YAML que forma parte de la definición del raspador.

Cuando se crea un nuevo raspador, se especifica una configuración proporcionando un archivo YAML codificado en base64 en la llamada a la API. Puede descargar un archivo de configuración de uso general con la operación GetDefaultScraperConfiguration en la API de Amazon Managed Service para Prometheus.

Para modificar la configuración de un raspador, elimínelo y vuelva a crearlo con la nueva configuración.

Configuración compatible

Para obtener información sobre el formato de configuración del raspador, incluido un desglose detallado de los valores posibles, consulte Configuración en la documentación de Prometheus. Las opciones de configuración global y las opciones <scrape_config> describen las opciones que se necesitan con más frecuencia.

Dado que Amazon EKS es el único servicio compatible, el único servicio discovery config (<*_sd_config>) que se admite es el<kubernetes_sd_config>.

La lista completa de secciones de configuración permitidas:

  • <global>

  • <scrape_config>

  • <static_config>

  • <relabel_config>

  • <metric_relabel_configs>

  • <kubernetes_sd_config>

Las limitaciones de estas secciones se enumeran después del archivo de configuración de ejemplo.

Archivo de configuración de muestra

A continuación se muestra un ejemplo de archivo de configuración de YAML con un intervalo de raspado de 30 segundos.

global: scrape_interval: 30s external_labels: clusterArn: apiserver-test-2 scrape_configs: - job_name: pod_exporter kubernetes_sd_configs: - role: pod - job_name: cadvisor scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - replacement: kubernetes.default.svc:443 target_label: __address__ - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor # apiserver metrics - scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-apiservers kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep regex: default;kubernetes;https source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name # kube proxy metrics - job_name: kube-proxy honor_labels: true kubernetes_sd_configs: - role: pod relabel_configs: - action: keep source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_pod_name separator: '/' regex: 'kube-system/kube-proxy.+' - source_labels: - __address__ action: replace target_label: __address__ regex: (.+?)(\\:\\d+)? replacement: $1:10249

Las siguientes son limitaciones específicas de los recopiladores AWS gestionados:

  • Intervalo de raspado: la configuración del raspador no puede especificar un intervalo de raspado inferior a 30 segundos.

  • Objetivos: los objetivos de static_config deben especificarse como direcciones IP.

  • Autorización: omítala si no se necesita ninguna autorización. Si es necesaria, la autorización debe ser Bearer y debe apuntar al archivo/var/run/secrets/kubernetes.io/serviceaccount/token. En otras palabras, si se utiliza, la sección de autorización debe tener el siguiente aspecto:

    authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    nota

    type: Beareres el valor predeterminado, por lo que se puede omitir.

Solución de problemas de configuración del raspador

Los recopiladores de Amazon Managed Service para Prometheus descubren y raspan métricas automáticamente. Pero, ¿cómo puede solucionar los problemas si no ve una métrica que esperaba ver en su espacio de trabajo de Amazon Managed Service para Prometheus?

La métrica up es una herramienta útil. Esta métrica se proporciona automáticamente para cada punto de conexión que descubre un recopilador de Amazon Managed Service para Prometheus. Hay tres estados de esta métrica que pueden ayudarte a solucionar los problemas que se producen en el recopilador.

  • up no está presente: si no hay ninguna métrica up para un punto de conexión, significa que el recopilador no ha podido encontrar el punto de conexión.

    Si tiene claro que el punto de conexión existe, es probable que necesite ajustar la configuración de raspado. Es posible que sea necesario ajustar la detección de relabel_config o que haya un problema con el role utilizado para la detección.

  • up está presente, pero siempre es 0: si up está presente, pero es 0, el recopilador podrá detectar el punto de conexión, pero no podrá encontrar ninguna métrica compatible con Prometheus.

    En este caso, puede intentar utilizar un comando curl directamente según el punto de conexión. Puede validar que tiene los detalles correctos, por ejemplo, el protocolo (httpohttps), el punto final o el puerto que está utilizando. También puede comprobar que el punto final responde con una 200 respuesta válida y sigue el formato de Prometheus. Por último, el cuerpo de la respuesta no puede superar el tamaño máximo permitido. (Para conocer los límites de los recopiladores AWS gestionados, consulte la siguiente sección).

  • up está presente y es superior a 0: si up está presente y es superior a 0, las métricas se envían a Amazon Managed Service para Prometheus.

    Valide que está buscando las métricas correctas en Amazon Managed Service para Prometheus (o en su panel alternativo, como Amazon Managed Grafana). Puede volver a usar curl para comprobar los datos esperados en su punto de conexión /metrics. Compruebe también que no ha superado otros límites, como el número de puntos de conexión por raspador. Puedes comprobar el número de puntos finales de las métricas que se están recopilando comprobando el recuento de up métricas, utilizando. count(up)

Limitaciones del raspador

Los raspadores totalmente gestionados que ofrece Amazon Managed Service para Prometheus presentan pocas limitaciones.

  • Región: el clúster de EKS, el raspador administrado y el espacio de trabajo de Amazon Managed Service para Prometheus deben estar en la misma región de AWS .

  • Cuenta: el clúster de EKS, el raspador administrado y el espacio de trabajo de Amazon Managed Service para Prometheus deben estar en la misma ubicación de Cuenta de AWS.

  • Recopiladores: puede tener un máximo de 10 raspadores de Amazon Managed Service para Prometheus por región y cuenta.

    nota

    Puede solicitar un aumento de este límite solicitando un aumento de cuota.

  • Respuesta de métricas: el cuerpo de la respuesta de cualquier solicitud de punto de conexión /metrics no puede tener más de 50 megabytes (MB).

  • Puntos de conexión por raspador: un raspador puede raspar un máximo de 30 000 puntos de conexión /metrics.

  • Intervalo de raspado: la configuración del raspador no puede especificar un intervalo de raspado inferior a 30 segundos.