AWS Utilizzo di un raccoglitore gestito - Amazon Managed Service per Prometheus

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS Utilizzo di un raccoglitore gestito

Per utilizzare un raccoglitore del servizio gestito da Amazon per Prometheus, devi creare uno scraper che rilevi e recuperi i parametri nel tuo cluster Amazon EKS.

  • Puoi creare uno scraper come parte della creazione del cluster Amazon EKS. Per ulteriori informazioni sulla creazione di un cluster Amazon EKS, inclusa la creazione di uno scraper, consulta Creazione di un cluster Amazon EKS nella Guida per l'utente di Amazon EKS.

  • Puoi creare il tuo scraper, a livello di codice con l' AWS API o utilizzando il. AWS CLI

Nota

Le aree di lavoro Amazon Managed Service for Prometheus create con chiavi gestite dal cliente non possono utilizzare raccoglitori gestiti per l'ingestione. AWS

Un raccoglitore del servizio gestito da Amazon per Prometheus analizza parametri compatibili con Prometheus. Per ulteriori informazioni sui parametri compatibili con Prometheus, consulta Quali sono i parametri compatibili con Prometheus?.

I seguenti argomenti descrivono come creare, gestire e configurare scraper.

Creare uno scraper

Un raccoglitore del servizio gestito da Amazon per Prometheus è costituito da uno scraper che rileva e raccoglie i parametri da un cluster Amazon EKS. Il servizio gestito da Amazon per Prometheus gestisce lo scraper per te, offrendoti la scalabilità, la sicurezza e l'affidabilità di cui hai bisogno, senza dover gestire personalmente istanze, agenti o scraper.

Uno scraper viene creato automaticamente per te quando crei un cluster Amazon EKS tramite la console Amazon EKS. Tuttavia, in alcune situazioni potresti voler creare uno scraper da solo. Ad esempio, se desideri aggiungere un raccoglitore AWS gestito a un cluster Amazon EKS esistente o se desideri modificare la configurazione di un raccoglitore esistente.

Puoi creare uno scraper utilizzando l' AWS API o il. AWS CLI

Esistono alcuni prerequisiti per creare il proprio scraper:

Nota

Il cluster verrà associato allo scraper tramite il relativo nome di risorsa Amazon (ARN). Se elimini un cluster e poi ne crei uno nuovo con lo stesso nome, l'ARN verrà riutilizzato per il nuovo cluster. Per questo motivo, lo scraper tenterà di raccogliere le metriche per il nuovo cluster. Gli scraper vengono eliminati separatamente dall'eliminazione del cluster.

AWS API

Per creare uno scraper utilizzando l'API AWS

Utilizza l'operazione CreateScraper API per creare uno scraper con l' AWS API. Nell'esempio seguente viene creato uno scraper nella us-west-2 regione. Devi sostituire le informazioni relative all'area di lavoro Account AWS, alla sicurezza e al cluster Amazon EKS con i tuoi ID e fornire la configurazione da utilizzare per il tuo scraper.

Nota

Devi includere minimo due sottoreti in almeno due zone disponibili.

scrapeConfiguration è un file YAML di configurazione Prometheus con codifica base64. È possibile scaricare una configurazione generica con l'operazione API GetDefaultScraperConfiguration. Per ulteriori informazioni sul formato discrapeConfiguration, consulta. Configurazione dello scraper

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

Per creare un raschietto utilizzando il AWS CLI

Utilizzate il create-scraper comando per creare un raschietto con. AWS CLI Nell'esempio seguente viene creato uno scraper nella us-west-2 regione. Devi sostituire le informazioni relative all'area di lavoro Account AWS, alla sicurezza e al cluster Amazon EKS con i tuoi ID e fornire la configurazione da utilizzare per il tuo scraper.

Nota

Devi includere minimo due sottoreti in almeno due zone disponibili.

scrape-configuration è un file YAML di configurazione Prometheus con codifica base64. È possibile scaricare una configurazione generica con il get-default-scraper-configuration comando. Per ulteriori informazioni sul formato discrape-configuration, vedereConfigurazione dello scraper.

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'}"

Di seguito è riportato un elenco completo delle operazioni dello scraper che è possibile utilizzare con l' AWS API:

Nota

Il cluster Amazon EKS di cui stai effettuando lo scraping deve essere configurato per consentire al servizio gestito da Amazon per Prometheus di accedere ai parametri. Nell'argomento successivo viene descritto come configurare il cluster.

Errori comuni durante la creazione di raschietti

Di seguito sono riportati i problemi più comuni che si verificano quando si tenta di creare un nuovo scraper.

  • AWS Le risorse richieste non esistono. Il gruppo di sicurezza, la sottorete e il cluster Amazon EKS specificati devono esistere.

  • Spazio per indirizzi IP insufficiente. È necessario disporre di almeno un indirizzo IP in ogni sottorete che si passa all'CreateScraperAPI.

Configurazione del cluster Amazon EKS

Il cluster Amazon EKS deve essere configurato per consentire allo scraper di accedere ai parametri. Esistono due opzioni per questa configurazione:

  • Utilizza le voci di accesso di Amazon EKS per fornire automaticamente ai collezionisti Amazon Managed Service for Prometheus l'accesso al tuo cluster.

  • Configura manualmente il tuo cluster Amazon EKS per lo scraping dei parametri gestito.

I seguenti argomenti descrivono ciascuno di questi aspetti in modo più dettagliato.

Configura Amazon EKS per l'accesso allo scraper con voci di accesso

L'utilizzo delle voci di accesso per Amazon EKS è il modo più semplice per consentire ad Amazon Managed Service for Prometheus di accedere alle metriche del cluster.

Il cluster Amazon EKS di cui stai effettuando lo scraping deve essere configurato per consentire l'autenticazione tramite API. La modalità di autenticazione del cluster deve essere impostata su API oAPI_AND_CONFIG_MAP. È visualizzabile nella console Amazon EKS nella scheda di configurazione dell'accesso dei dettagli del cluster. Per ulteriori informazioni, consulta Consentire ai ruoli o agli utenti IAM di accedere all'oggetto Kubernetes sul tuo cluster Amazon EKS nella Guida per l'utente di Amazon EKS.

Puoi creare lo scraper durante la creazione del cluster o dopo averlo creato:

  • Quando crei un cluster: puoi configurare questo accesso quando crei un cluster Amazon EKS tramite la console Amazon EKS (segui le istruzioni per creare uno scraper come parte del cluster) e verrà creata automaticamente una politica di accesso che consente ad Amazon Managed Service for Prometheus di accedere ai parametri del cluster.

  • Aggiunta dopo la creazione di un cluster: se il tuo cluster Amazon EKS esiste già, imposta la modalità di autenticazione su API o API_AND_CONFIG_MAP e tutti gli scraper creati tramite l'API o la CLI di Amazon Managed Service for Prometheus avranno automaticamente la politica di accesso corretta creata per te e gli scraper avranno accesso al tuo cluster.

Politica di accesso creata

Quando crei uno scraper e lasci che Amazon Managed Service for Prometheus generi una politica di accesso per te, genera la seguente politica. Per ulteriori informazioni sulle voci di accesso, consulta Consentire ai ruoli o agli utenti IAM di accedere a Kubernetes nella Amazon EKS User Guide.

{ "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" ] } ] }

Configurazione manuale di Amazon EKS per l'accesso allo scraper

Se preferisci utilizzare l'opzione per controllare l'accesso aws-auth ConfigMap al tuo cluster Kubernetes, puoi comunque consentire agli scraper di Amazon Managed Service for Prometheus di accedere alle tue metriche. I seguenti passaggi consentiranno ad Amazon Managed Service for Prometheus di accedere alle metriche di scrape dal tuo cluster Amazon EKS.

Nota

Per ulteriori informazioni ConfigMap e per accedere alle voci, consulta Consentire ai ruoli o agli utenti IAM di accedere a Kubernetes nella Amazon EKS User Guide.

Questa procedura utilizza kubectl e la AWS CLI. Per informazioni sull'installazione di kubectl, consulta Installazione di kubectl nella Guida per l'utente di Amazon EKS.

Per configurare manualmente il cluster Amazon EKS per lo scraping dei parametri gestito
  1. Crea un file denominato clusterrole-binding.yml con il testo seguente:

    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. Esegui il comando seguente nel tuo cluster.

    kubectl apply -f clusterrole-binding.yml

    Ciò creerà l'associazione e la regola del ruolo del cluster. Questo esempio utilizza aps-collector-role come nome del ruolo e aps-collector-user come nome utente.

  3. Il comando seguente fornisce informazioni sullo scraper con l'ID scraper-id. Questo è lo scraper creato utilizzando il comando nella sezione precedente.

    aws amp describe-scraper --scraper-id scraper-id
  4. Dai risultati di describe-scraper, trova il file roleArn, che avrà il seguente formato:

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

    Amazon EKS richiede un formato diverso per questo ARN. È necessario modificare il formato dell'ARN restituito da utilizzare nel passaggio successivo. Modificalo in modo che corrisponda a questo formato:

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

    Per esempio, questo ARN:

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

    Deve essere riscritto come:

    arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
  5. Esegui il comando seguente nel cluster, utilizzando roleArn modificato dal passaggio precedente, oltre al nome e alla regione del cluster.

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

    Ciò consente allo scraper di accedere al cluster utilizzando il ruolo e l'utente creati nel clusterrole-binding.yml file.

Trova ed elimina gli scraper

Puoi utilizzare l' AWS API o AWS CLI per elencare gli scraper presenti nel tuo account o eliminarli.

Nota

Assicurati di utilizzare la versione più recente di AWS CLI o SDK. La versione più recente offre le caratteristiche e le funzionalità più recenti, oltre agli aggiornamenti di sicurezza. In alternativa, usa AWS Cloudshell, che fornisce un'esperienza sempre a riga di up-to-date comando, automaticamente.

Per elencare tutti gli scraper del tuo account, utilizza l'ListScrapersoperazione API.

In alternativa, con AWS CLI, chiama:

aws amp list-scrapers

ListScrapers restituisce tutti gli scraper del tuo account, ad esempio:

{ "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" } } } ] }

Per eliminare un raschietto, individuate quello relativo allo scraper che desiderate eliminare, utilizzando l'ListScrapersoperazione, quindi utilizzate l'DeleteScraperoperazione per eliminarlo. scraperId

In alternativa, con AWS CLI, chiama:

aws amp delete-scraper --scraper-id scraperId

Configurazione dello scraper

Puoi controllare il modo in cui il tuo scraper rileva e raccoglie i parametri con una configurazione dello scraper compatibile con Prometheus. Ad esempio, puoi modificare l'intervallo di invio dei parametri all'area di lavoro. Puoi anche utilizzare la rietichettatura per riscrivere dinamicamente le etichette di un parametro. La configurazione dello scraper è un file YAML che fa parte della definizione dello scraper.

Quando viene creato un nuovo scraper, si specifica una configurazione fornendo un file YAML con codifica base64 nella chiamata API. Puoi scaricare un file di configurazione generico con l'GetDefaultScraperConfigurationoperazione nell'API del servizio gestito da Amazon per Prometheus.

Per modificare la configurazione di uno scraper, elimina lo scraper e ricrealo con la nuova configurazione.

Configurazione supportata

Per informazioni sul formato di configurazione dello scraper, inclusa una suddivisione dettagliata dei valori possibili, vedere Configurazione nella documentazione di Prometheus. Le opzioni e le opzioni di configurazione globali descrivono le <scrape_config> opzioni più comunemente necessarie.

Poiché Amazon EKS è l'unico servizio supportato, l'unico servizio di discovery config (<*_sd_config>) supportato è il<kubernetes_sd_config>.

L'elenco completo delle sezioni di configurazione consentite:

  • <global>

  • <scrape_config>

  • <static_config>

  • <relabel_config>

  • <metric_relabel_configs>

  • <kubernetes_sd_config>

Le limitazioni all'interno di queste sezioni sono elencate dopo il file di configurazione di esempio.

Esempio di configurazione di un file

Di seguito è riportato un esempio di file di configurazione YAML con un intervallo di scraping di 30 secondi.

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

Di seguito sono riportate le limitazioni specifiche dei raccoglitori AWS gestiti:

  • Intervallo di scrape: la configurazione dello scraper non può specificare un intervallo inferiore a 30 secondi.

  • Destinazioni: le destinazioni in static_config devono essere specificate come indirizzi IP.

  • Autorizzazione: ometti se non è necessaria alcuna autorizzazione. Se è necessaria, l'autorizzazione deve essere Bearer e deve puntare al file/var/run/secrets/kubernetes.io/serviceaccount/token. In altre parole, se utilizzata, la sezione di autorizzazione deve avere il seguente aspetto:

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

    type: Bearerè l'impostazione predefinita, quindi può essere omessa.

Risoluzione degli errori di configurazione dello scrape

I raccoglitori del servizio gestito da Amazon per Prometheus rilevano e raccolgono automaticamente i parametri. Ma come puoi risolvere i problemi quando non vedi un parametro che ti aspetti di vedere nella tua area di lavoro del servizio gestito da Amazon per Prometheus?

Il up parametro è uno strumento utile. Per ogni endpoint rilevato da un raccoglitore del servizio gestito da Amazon per Prometheus, questo parametro viene automaticamente modificato. Esistono tre stati di questo parametro che possono aiutarti a risolvere ciò che accade all'interno del raccoglitore.

  • up non è presente: se non è presente alcun up parametro per un endpoint, significa che il raccoglitore non è riuscito a trovare l'endpoint.

    Se sei sicuro che l'endpoint esista, probabilmente dovrai modificare la configurazione dello scrape. relabel_configPotrebbe essere necessario modificare il rilevamento oppure è possibile che vi sia un problema con l'oggetto role utilizzato per il rilevamento.

  • up è presente, ma è sempre 0: se up è presente ma è 0, il raccoglitore è in grado di scoprire l'endpoint, ma non riesce a trovare alcun parametro compatibile con Prometheus.

    In questo caso, si può provare a utilizzare un curl comando direttamente sull'endpoint. È possibile verificare che i dettagli siano corretti, ad esempio il protocollo (httpohttps), l'endpoint o la porta che si sta utilizzando. Puoi anche verificare che l'endpoint risponda con una 200 risposta valida e segua il formato Prometheus. Infine, il corpo della risposta non può essere più grande della dimensione massima consentita. (Per i limiti relativi ai raccoglitori AWS gestiti, consultate la sezione seguente).

  • up è presente e maggiore di 0: se up è presente ed è maggiore di 0, i parametri vengono inviati al servizio gestito da Amazon per Prometheus.

    Verifica che stai cercando i parametri corretti nel servizio gestito da Amazon per Prometheus (o nella tua dashboard alternativa, come Grafana gestito da Amazon). Puoi utilizzare nuovamente curl per verificare i dati previsti nel tuo endpoint /metrics. Verifica anche di non aver superato altri limiti, come il numero di endpoint per scraper. Puoi controllare il numero di endpoint delle metriche che vengono analizzate controllando il conteggio delle up metriche, utilizzando. count(up)

Limitazioni dello scraper

Esistono alcune limitazioni agli scraper completamente gestiti forniti da Amazon Managed Service per Prometheus.

  • Regione: il cluster EKS, lo scraper gestito e l'area di lavoro del servizio gestito da Amazon per Prometheus devono trovarsi tutti nella stessa AWS regione.

  • Account: il cluster EKS, lo scraper gestito e l'area di lavoro del servizio gestito da Amazon per Prometheus devono trovarsi tutti nello stesso Account AWS.

  • Raccoglitori: puoi avere un massimo di 10 scraper il servizio gestito da Amazon per Prometheus per regione per account.

    Nota

    Puoi richiedere un aumento di questo limite richiedendo un aumento della quota.

  • Risposta ai parametri: il corpo di una risposta da una richiesta di /metrics endpoint non può superare i 50 megabyte (MB).

  • Endpoint per scraper: uno scraper può eseguire lo scraper per un massimo di 30.000 /metrics endpoint.

  • Intervallo di scrape: la configurazione dello scraper non può specificare un intervallo inferiore a 30 secondi.