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à.
Configura l'inserimento dei parametri utilizzando AWS Distro for OpenTelemetry su un cluster Amazon Elastic Kubernetes Service
Puoi utilizzare il collettore AWS Distor for OpenTelemetry (ADOT) per acquisire metriche da un'applicazione basata su Prometheus e inviarle ad Amazon Managed Service for Prometheus.
Nota
ADOTPer ulteriori informazioni sul AWS collector
Per ulteriori informazioni sulle applicazioni con strumentazione Prometheus, vedere. Quali sono i parametri compatibili con Prometheus?
La raccolta delle metriche di Prometheus ADOT include tre OpenTelemetry componenti: Prometheus Receiver, Prometheus Remote Write Exporter e Sigv4 Authentication Extension.
È possibile configurare il ricevitore Prometheus utilizzando la configurazione Prometheus esistente per eseguire il rilevamento dei servizi e lo scraping metrico. Il ricevitore Prometheus analizza i parametri nel formato di esposizione Prometheus. Tutte le applicazioni o gli endpoint che si desidera eseguire lo scraping devono essere configurati con la libreria client Prometheus. Il ricevitore Prometheus supporta il set completo di configurazioni di scraping e re-etichettatura di Prometheus descritte in Configurazione
Prometheus Remote Write Exporter utilizza l'endpoint per inviare i parametri eliminate remote_write
all'area di lavoro del portale di gestione. Le HTTP richieste di esportazione dei dati verranno firmate con AWS SigV4, il AWS protocollo per l'autenticazione sicura, con l'estensione Sigv4 Authentication. Per ulteriori informazioni, consulta Processo di firma di Signature versione 4.
Il raccoglitore rileva automaticamente gli endpoint delle metriche di Prometheus su Amazon e utilizza la configurazione disponibile in. EKS
La seguente demo è un esempio di questa configurazione su un cluster che esegue Amazon Elastic Kubernetes Service o Kubernetes autogestito. Per eseguire questi passaggi, è necessario disporre delle AWS
credenziali di una qualsiasi delle possibili opzioni della catena di credenziali predefinita. AWS Per ulteriori informazioni, consulta Configurazione di for Go. AWS SDK Questa demo utilizza un'app di esempio utilizzata per i test di integrazione del processo. L'app di esempio espone i parametri sull'/metrics
endpoint, come la libreria client Prometheus.
Prerequisiti
Prima di iniziare i seguenti passaggi di configurazione dell'ingestione, è necessario configurare il proprio IAM ruolo per l'account di servizio e la politica di fiducia.
Per impostare il IAM ruolo per l'account di servizio e la politica di fiducia
-
Crea il IAM ruolo per l'account di servizio seguendo la procedura riportata di seguitoConfigura i ruoli di servizio per l'acquisizione di metriche dai cluster Amazon EKS..
The ADOT Collector utilizzerà questo ruolo per raccogliere ed esportare le metriche.
-
Successivamente, modifica la policy di fiducia. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/
-
Nel riquadro di navigazione a sinistra, scegli Ruoli e trova amp-iamproxy-ingest-rolequello che hai creato nel passaggio 1.
-
Seleziona la scheda Relazioni di attendibilità e scegli Modifica relazione di attendibilità.
-
Nella politica sulle relazioni di fiduciaJSON, sostituisci
aws-amp
conadot-col
e quindi scegli Aggiorna politica di fiducia. Il risultato della policy di fiducia sarà simile al seguente.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::
account-id
:oidc-provider
/oidc.eks.region
.amazonaws.com/id/openid
" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region
.amazonaws.com/id/openid:sub": "system:serviceaccount:adot-col:amp-iamproxy-ingest-service-account" } } } ] } -
Scegli la scheda Autorizzazioni e assicurati che al ruolo sia associata la seguente policy di autorizzazioni.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aps:RemoteWrite", "aps:GetSeries", "aps:GetLabels", "aps:GetMetricMetadata" ], "Resource": "*" } ] }
Abilitazione della raccolta di parametri Prometheus
Nota
Quando crei uno spazio dei nomi in AmazonEKS, alertmanager
gli esportatori di nodi sono disabilitati per impostazione predefinita.
Per abilitare la raccolta Prometheus su un cluster Amazon o Kubernetes EKS
-
Fork e clona l'app di esempio dal repository all'indirizzo. aws-otel-community
Quindi, eseguire i seguenti comandi.
cd ./sample-apps/prometheus-sample-app docker build . -t prometheus-sample-app:latest
-
Invia questa immagine a un registro come Amazon ECR o DockerHub.
-
Distribuisci l'app di esempio nel cluster copiando questa configurazione di Kubernetes e applicandola. Cambia l'immagine con quella che hai appena inserito sostituendo
{{PUBLIC_SAMPLE_APP_IMAGE}}
nel fileprometheus-sample-app.yaml
.curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/examples/eks/aws-prometheus/prometheus-sample-app.yaml -o prometheus-sample-app.yaml kubectl apply -f prometheus-sample-app.yaml
-
Esegui il comando seguente per verificare che l'app di prova sia stata avviata. Nell'output del comando, vedrai
prometheus-sample-app
nellaNAME
colonna.kubectl get all -n aoc-prometheus-pipeline-demo
-
Avvia un'istanza predefinita del ADOT Collector. Per farlo, inserisci prima il seguente comando per estrarre la configurazione di Kubernetes per Collector. ADOT
curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/examples/eks/aws-prometheus/prometheus-daemonset.yaml -o prometheus-daemonset.yaml
Quindi modifica il file modello, sostituendo l'endpoint remote_write con la tua area di lavoro del servizio gestito da Amazon per Prometheus per
YOUR_ENDPOINT
e la tua regione perYOUR_REGION
. Usa l'endpoint remote_write visualizzato nella console del servizio gestito da Amazon per Prometheus quando esamini i dettagli della tua area di lavoro.Dovrai anche modificare l'ID del tuo account
YOUR_ACCOUNT_ID
nella sezione relativa all'account di servizio della configurazione di Kubernetes. AWSIn questo esempio, la configurazione ADOT Collector utilizza un'annotation (
scrape=true
) per indicare quali endpoint di destinazione eseguire lo scraping. Ciò consente a ADOT Collector di distinguere l'endpoint dell'app di esempio dagli endpoint del sistema kube nel cluster. Puoi rimuoverlo dalle configurazioni di rietichettatura se desideri eliminare un'altra app di esempio. -
Immettete il seguente comando per distribuire il collector. ADOT
kubectl apply -f prometheus-daemonset.yaml
-
Immettete il comando seguente per verificare che il ADOT raccoglitore sia stato avviato. Cerca
adot-col
nella colonnaNAMESPACE
.kubectl get pods -n adot-col
-
Verifica che la pipeline funzioni utilizzando il logging exporter. Il nostro modello di esempio è già integrato con il logging exporter. Esegui i comandi seguenti:
kubectl get pods -A kubectl logs -n adot-col
name_of_your_adot_collector_pod
Alcune dei parametri estratte dall'app di esempio saranno simili all'esempio seguente.
Resource labels: -> service.name: STRING(kubernetes-service-endpoints) -> host.name: STRING(192.168.16.238) -> port: STRING(8080) -> scheme: STRING(http) InstrumentationLibraryMetrics #0 Metric #0 Descriptor: -> Name: test_gauge0 -> Description: This is my gauge -> Unit: -> DataType: DoubleGauge DoubleDataPoints #0 StartTime: 0 Timestamp: 1606511460471000000 Value: 0.000000
-
Per verificare se il servizio gestito da Amazon per Prometheus ha ricevuto i parametri, usa
awscurl
. Questo strumento ti consente di inviare HTTP richieste tramite la riga di comando con l'autenticazione AWS Sigv4, quindi devi avere AWS le credenziali configurate localmente con le autorizzazioni corrette per eseguire query da Amazon Managed Service for Prometheus. Per istruzioni sull'installazione, consulta awscurl.awscurl
Nel comando seguente
AMP_REGION
, sostituisci eAMP_ENDPOINT
con le informazioni per la tua area di lavoro del servizio gestito da Amazon per Prometheus.awscurl --service="aps" --region="
AMP_REGION
" "https://AMP_ENDPOINT
/api/v1/query?query=adot_test_gauge0" {"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"adot_test_gauge0"},"value":[1606512592.493,"16.87214000011479"]}]}}Se ricevi un parametro come risposta, significa che la configurazione della pipeline è stata completata correttamente e il parametro è stato propagato con successo dall'app di esempio al servizio gestito da Amazon per Prometheus.
Pulizia
Per ripulire questa demo, inserisci i seguenti comandi.
kubectl delete namespace aoc-prometheus-pipeline-demo kubectl delete namespace adot-col
Configurazione avanzata
Il ricevitore Prometheus supporta il set completo di configurazioni di scraping e re-etichettatura di Prometheus descritte in Configurazione
La configurazione per il ricevitore Prometheus include il rilevamento dei servizi, le configurazioni di scraping e le configurazioni di rietichettatura. La configurazione del ricevitore è simile alla seguente.
receivers: prometheus: config: [
[Your Prometheus configuration]
]
Di seguito è riportato un esempio di configurazione.
receivers: prometheus: config: global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: kubernetes-service-endpoints sample_limit: 10000 kubernetes_sd_configs: - role: endpoints tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
Se disponi di una configurazione Prometheus esistente, devi sostituire i caratteri $
con$$
per evitare che i valori vengano sostituiti con variabili di ambiente. *Questo è particolarmente importante per il valore sostitutivo di relabel_configurations. Ad esempio, se inizi con la seguente relabel_configuration:
relabel_configs: - source_labels: [__meta_kubernetes_ingress_scheme,__address__,__meta_kubernetes_ingress_path] regex: (.+);(.+);(.+) replacement: ${1}://${2}${3} target_label: __param_target
Diventerebbe il seguente:
relabel_configs: - source_labels: [__meta_kubernetes_ingress_scheme,__address__,__meta_kubernetes_ingress_path] regex: (.+);(.+);(.+) replacement: $${1}://${2}${3} target_label: __param_target
Esportatore di scrittura remota Prometheus ed estensione di autenticazione Sigv4
La configurazione for Prometheus Remote Write Exporter e Sigv4 Authentication Extension è più semplice del ricevitore Prometheus. In questa fase della pipeline, i parametri sono già stati inseriti e siamo pronti per esportare questi dati nel servizio gestito da Amazon per Prometheus. Il requisito minimo per una corretta configurazione per comunicare con il servizio gestito da Amazon per Prometheus è illustrato nell'esempio seguente.
extensions: sigv4auth: service: "aps" region: "user-region" exporters: prometheusremotewrite: endpoint: "https://aws-managed-prometheus-endpoint/api/v1/remote_write" auth: authenticator: "sigv4auth"
Questa configurazione invia una HTTPS richiesta firmata da AWS SigV4 utilizzando le credenziali della catena di AWS credenziali predefinita. AWS Per ulteriori informazioni, consultare la pagina relativa alla configurazione di AWS SDK for Go. È necessario specificare il servizio come aps
.
Indipendentemente dal metodo di distribuzione, il ADOT raccoglitore deve avere accesso a una delle opzioni elencate nella catena di credenziali predefinita. AWS L'estensione di autenticazione Sigv4 dipende da e la utilizza per recuperare le AWS SDK for Go credenziali e autenticarsi. Devi assicurarti che queste credenziali dispongano delle autorizzazioni di scrittura remota per il servizio gestito da Amazon per Prometheus.