Parametri di Prometheus - Amazon EKS

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à.

Parametri di Prometheus

Prometheus è un database di monitoraggio e di serie temporali che esegue lo scraping degli endpoint. Offre la possibilità di eseguire query, aggregare e archiviare i dati raccolti. È possibile utilizzarlo anche per gli avvisi e l'aggregazione degli avvisi. Questo argomento spiega come configurare Prometheus come un'opzione gestita oppure open source. Il monitoraggio dei parametri del piano di controllo di Amazon EKS è un caso d'uso comune.

Amazon Managed Service for Prometheus è un servizio di monitoraggio e avviso compatibile con Prometheus che semplifica il monitoraggio di infrastrutture e applicazioni containerizzate su larga scala. È un servizio completamente gestito che dimensiona automaticamente l'importazione, l'archiviazione, le query e gli avvisi dei parametri. Si integra inoltre con i servizi AWS di sicurezza per consentire un accesso rapido e sicuro ai dati. È possibile utilizzare il linguaggio di query open source ProMQL per fare una query e creare avvisi relativi ai parametri.

Per ulteriori informazioni su come utilizzare i parametri Prometheus dopo averli attivati, consulta la Guida per l'utente di Amazon Managed Service for Prometheus.

Attivazione dei parametri Prometheus durante la creazione di un cluster

Importante

Le risorse di Amazon Managed Service for Prometheus non rientrano nel ciclo di vita del cluster e devono essere gestite indipendentemente dal cluster. Quando elimini il cluster, assicurati di eliminare anche tutti gli scraper applicabili per bloccare i costi applicabili. Per ulteriori informazioni, consulta Trova ed elimina gli scraper nella Guida per l'utente di Amazon Managed Service for Prometheus.

Quando si crea un nuovo cluster, è possibile attivare l'opzione per inviare i parametri a Prometheus. Nella AWS Management Console, questa opzione si trova nella fase Configura l'osservabilità della creazione di un nuovo cluster. Per ulteriori informazioni, consulta Creazione di un cluster Amazon EKS.

Prometheus rileva e raccoglie i parametri dal cluster tramite un modello basato su pull chiamato scraping. Gli scraper sono configurati per raccogliere dati dall'infrastruttura del cluster e dalle applicazioni containerizzate.

Quando attivi l'opzione di invio dei parametri Prometheus, Amazon Managed Service for Prometheus fornisce uno scraper agentless completamente gestito. Utilizza le seguenti opzioni di configurazione avanzata per personalizzare lo scraper predefinito in base alle esigenze.

Alias scraper

(Facoltativo) Inserisci un alias univoco per lo scraper.

Destinazione

Scegli un workspace Amazon Managed Service for Prometheus. Un workspace è uno spazio logico dedicato all'archiviazione e alle query dei parametri Prometheus. Con questo workspace, sarai in grado di visualizzare i parametri Prometheus di tutti gli account che vi hanno accesso. L'opzione Crea nuovo workspace consente ad Amazon EKS di creare un workspace per tuo conto utilizzando l'alias del workspace che fornisci. Con l'opzione Seleziona workspace esistente, puoi selezionare un workspace esistente da un elenco a discesa. Per ulteriori informazioni sui workspace, consulta Gestione di workspace nella Guida per l'utente di Amazon Managed Service for Prometheus.

Accesso al servizio

Questa sezione riassume le autorizzazioni concesse per l'invio di parametri Prometheus:

  • Consentire ad Amazon Managed Service for Prometheus di descrivere il cluster Amazon EKS sottoposto a scraping

  • Consentire la scrittura remota nel workspace Amazon Managed Prometheus

Se AmazonManagedScraperRole esiste già, viene utilizzato dallo scraper. Scegli il link AmazonManagedScraperRole per visualizzare i dettagli dell'autorizzazione. Se AmazonManagedScraperRole non esiste già, scegli il link Visualizza dettagli autorizzazione per vedere le autorizzazioni specifiche che concedi inviando i parametri Prometheus.

Sottoreti

Visualizza le sottoreti che vengono ereditate dallo scraper. Se è necessario modificarle, torna al passaggio di creazione del cluster Specificare la rete.

Gruppi di sicurezza

Visualizza i gruppi di sicurezza che verranno ereditati dallo scraper. Se è necessario modificarle, torna al passaggio di creazione del cluster Specificare la rete.

Configurazione dello scraper

Modifica la configurazione dello scraper in formato YAML secondo le esigenze. A tale scopo, utilizza il modulo o carica un file YAML sostitutivo. Per ulteriori informazioni, consulta Configurazione dello scraper nella Guida per l'utente di Amazon Managed Service for Prometheus.

Amazon Managed Service for Prometheus si riferisce allo scraper agentless creato insieme al cluster come raccoglitore gestito da AWS . Per ulteriori informazioni sui raccoglitori AWS gestiti, consulta AWS Managed Collector nella Guida per l'utente di Amazon Managed Service for Prometheus.

Importante

È necessario configurare aws-auth ConfigMap per fornire allo scraper le autorizzazioni in-cluster. Per ulteriori informazioni, consulta Configurazione del cluster Amazon EKS nella Guida per l'utente di Amazon Managed Service for Prometheus.

Visualizzazione dei dettagli dello scraper Prometheus

Dopo aver creato un cluster con l'opzione Parametri Prometheus attivata, puoi visualizzare i dettagli dello scraper Prometheus. Quando visualizzi il cluster in AWS Management Console, scegli la scheda Osservabilità. Una tabella mostra un elenco di scraper per il cluster, incluse informazioni come l'ID, l'alias, lo stato e la data di creazione dello scraper.

Per visualizzare ulteriori dettagli sullo scraper, scegli un collegamento relativo all'ID dello scraper. Ad esempio, puoi visualizzare la configurazione dello scraper, l'ARN (Amazon Resource Name), l'URL di scrittura remota e le informazioni sulla rete. Puoi utilizzare l'ID scraper come input per operazioni dell'API di Amazon Managed Service for Prometheus come DescribeScraper e DeleteScraper. Puoi anche utilizzare l'API per creare altri scraper.

Per ulteriori informazioni sull'uso dell'API Prometheus, consulta la Documentazione di riferimento delle API di Amazon Managed Service for Prometheus.

Implementazione di Prometheus utilizzando Helm

In alternativa, puoi eseguire l'implementazione di Prometheus nel tuo cluster con Helm V3. Se hai già installato Helm, puoi controllarne la versione con il comando helm version. Helm è un gestore di pacchetti per cluster Kubernetes. Per ulteriori informazioni su Helm e su come installarlo, consulta Utilizzo di Helm con Amazon EKS.

Dopo aver configurato Helm per il tuo cluster Amazon EKS, puoi utilizzarlo per implementare Prometheus con i passaggi seguenti.

Per implementare Prometheus utilizzando Helm
  1. Crea uno spazio dei nomi Prometheus.

    kubectl create namespace prometheus
  2. Aggiungere il repository del grafico prometheus-community.

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  3. Implementa Prometheus.

    helm upgrade -i prometheus prometheus-community/prometheus \ --namespace prometheus \ --set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2"
    Nota

    Se si riceve l'errore Error: failed to download "stable/prometheus" (hint: running `helm repo update` may help) durante l'esecuzione di questo comando, eseguire helm repo update prometheus-community, quindi provare a eseguire nuovamente il comando della fase 2.

    Se si riceve l'errore Error: rendered manifests contain a resource that already exists, eseguire helm uninstall your-release-name -n namespace, quindi provare a eseguire nuovamente il comando della fase 3.

  4. Verifica che tutti i Pods nello spazio dei nomi prometheus si trovino nello stato READY.

    kubectl get pods -n prometheus

    Di seguito viene riportato un output di esempio:

    NAME READY STATUS RESTARTS AGE prometheus-alertmanager-59b4c8c744-r7bgp 1/2 Running 0 48s prometheus-kube-state-metrics-7cfd87cf99-jkz2f 1/1 Running 0 48s prometheus-node-exporter-jcjqz 1/1 Running 0 48s prometheus-node-exporter-jxv2h 1/1 Running 0 48s prometheus-node-exporter-vbdks 1/1 Running 0 48s prometheus-pushgateway-76c444b68c-82tnw 1/1 Running 0 48s prometheus-server-775957f748-mmht9 1/2 Running 0 48s
  5. Utilizza kubectl per l'inoltro della porta della console Prometheus alla tua macchina locale.

    kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
  6. Indirizza un browser web a http://localhost:9090 per visualizzare la console Prometheus.

  7. Scegliere un parametro dal menu - insert metric at cursor, quindi selezionare Execute (Esegui). Scegliere la scheda Graph (Grafico) per visualizzare il parametro nel tempo. L'immagine che segue mostra container_memory_usage_bytes nel tempo.

    
                        Parametri di Prometheus
  8. Dalla barra di navigazione superiore, scegliere Status (Stato), quindi Targets (Destinazioni).

    
                        Console Prometheus

    Vengono visualizzati tutti gli endpoint di Kubernetes connessi a Prometheus tramite il rilevamento servizi.

Visualizzazione dei parametri non elaborati del piano di controllo

In alternativa all'implementazione di Prometheus, il server API Kubernetes espone una serie di parametri rappresentati in un formato Prometheus. Questi parametri sono utili per il monitoraggio e l'analisi. Vengono esposti internamente tramite un endpoint dei parametri che fa riferimento all'API HTTP /metrics. Come altri endpoint, questo è esposto sul piano di controllo Amazon EKS. Questo endpoint è utile principalmente per esaminare un parametro specifico. Per analizzare i parametri nel tempo, consigliamo di implementare Prometheus.

Per visualizzare parametri non elaborati, utilizza kubectl con il flag --raw. Questo comando consente di inoltrare qualsiasi percorso HTTP e restituisce la risposta non elaborata.

kubectl get --raw /metrics

Di seguito viene riportato un output di esempio:

[...]
# HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.
# TYPE rest_client_requests_total counter
rest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994
rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1
rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06
rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173
rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2
rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3
rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8
# HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts
# TYPE ssh_tunnel_open_count counter
ssh_tunnel_open_count 0
# HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts
# TYPE ssh_tunnel_open_fail_count counter
ssh_tunnel_open_fail_count 0

Questo output non elaborato restituisce in modo completo ciò che il server API espone. I diversi parametri sono elencati per riga e ogni riga include un nome di parametro, tag e un valore.

metric_name{"tag"="value"[,...]}
            value