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.
Argomenti
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:
-
Devi avere un cluster Amazon EKS.
-
Il tuo cluster Amazon EKS deve avere il controllo degli accessi agli endpoint del cluster impostato per includere l'accesso privato. Può includere aree private e pubbliche, ma deve includere quelle private.
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.
Di seguito è riportato un elenco completo delle operazioni dello scraper che è possibile utilizzare con l' AWS API:
-
Crea uno scraper con l'operazione CreateScraperAPI.
-
Elenca i tuoi scraper esistenti con l'operazione ListScrapersAPI.
-
Elimina uno scraper con l'operazione DeleteScraperAPI.
-
Ottieni maggiori dettagli su uno scraper con l'operazione DescribeScraperAPI.
-
Ottieni una configurazione generica per gli scraper con l'operazione GetDefaultScraperConfigurationAPI.
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'
CreateScraper
API.
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
oAPI_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
-
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
-
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 eaps-collector-user
come nome utente. -
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
-
Dai risultati di
describe-scraper
, trova il fileroleArn
, 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
-
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
--regionregion-id
--arnroleArn
--username aps-collector-userCiò 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'ListScrapers
operazione, 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'GetDefaultScraperConfiguration
operazione 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<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 alcunup
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_config
Potrebbe essere necessario modificare il rilevamento oppure è possibile che vi sia un problema con l'oggettorole
utilizzato per il rilevamento. -
up
è presente, ma è sempre 0: seup
è 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 (http
ohttps
), l'endpoint o la porta che si sta utilizzando. Puoi anche verificare che l'endpoint risponda con una200
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: seup
è 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 delleup
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.