View a markdown version of this page

OpenTelemetry Collezionista - Amazon CloudWatch

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

OpenTelemetry Collezionista

OpenTelemetry Collector è un agente open source e indipendente dal fornitore che riceve, elabora ed esporta dati di telemetria. Funge da pipeline centrale tra le tue applicazioni e Amazon CloudWatch, raccogliendo metriche, log e tracce da più fonti e inviandoli all'utilizzo del protocollo (OTLP). CloudWatch OpenTelemetry

L'utilizzo di OpenTelemetry Collector con CloudWatch offre i seguenti vantaggi:

  • Raccogli dati di telemetria da più applicazioni e host tramite un unico agente, riducendo il numero di connessioni a. CloudWatch

  • Elabora e filtra la telemetria prima di inviarla a CloudWatch, inclusa l'aggiunta o la rimozione di attributi, il raggruppamento in batch dei dati e il campionamento delle tracce.

  • Utilizza la stessa configurazione del raccoglitore in tutti gli ambienti cloud AWS, on-premise e di altro tipo, fornendo una pipeline di telemetria coerente indipendentemente da dove vengono eseguite le applicazioni.

  • Invia metriche CloudWatch con etichette dettagliate disponibili per le interrogazioni utilizzando il Prometheus Query Language (ProMQL) in Query Studio. CloudWatch

Ricevitori supportati

The OpenTelemetry Collector supporta un'ampia gamma di ricevitori per l'acquisizione di dati di telemetria. È possibile utilizzare OpenTelemetry ricevitori come il ricevitore OTLP per applicazioni dotate di OpenTelemetry SDK o i ricevitori Prometheus per acquisire le metriche dagli esportatori Prometheus esistenti. I ricevitori Prometheus più comuni utilizzati con includono: CloudWatch

  • Ricevitore Prometheus, per lo scraping di qualsiasi endpoint Prometheus-compatible

  • Ricevitore Host Metrics, per la raccolta di metriche a livello di sistema dall'host

  • Ricevitore Kubernetes Cluster, per la raccolta di metriche a livello di cluster dal server API Kubernetes

Puoi configurare più ricevitori in un unico raccoglitore, in modo da raccogliere sia le metriche di Prometheus che quelle di Prometheus OpenTelemetry e inviarle tramite la stessa pipeline. CloudWatch Per l'elenco completo dei ricevitori disponibili, consultate il repository Collector. OpenTelemetry https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver

Nozioni di base

Prerequisito: se utilizzi l'endpoint OTLP per il tracciamento, assicurati che Transaction Search sia abilitato.

Fasi:

  1. Scarica l'ultima versione della distribuzione Collector. OpenTelemetry Per ulteriori informazioni, consultate le versioni di OpenTelemetry Collector.

  2. Installate OpenTelemetry Collector sul vostro host. Il collector funziona su qualsiasi sistema operativo e piattaforma. Per ulteriori informazioni, consulta Install the Collector.

  3. Configura AWS le credenziali sul tuo host Amazon EC2 o locale. Il raccoglitore utilizza queste credenziali per autenticarsi durante l'invio di dati di telemetria. CloudWatch Per ulteriori informazioni, vedere di seguito.

    Setup IAM permissions for Amazon EC2
    Attieniti alla seguente procedura per collegare la policy IAM CloudWatchAgentServerPolicy al ruolo IAM della tua istanza Amazon EC2.
    1. Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

    2. Scegli Ruoli, quindi trova e seleziona il ruolo utilizzato dalla tua istanza Amazon EC2.

    3. Nella scheda Autorizzazioni, scegli Aggiungi autorizzazioni, Collega policy.

    4. Utilizzando la casella di ricerca, cerca la policy CloudWatchAgentServerPolicy.

    5. Seleziona la policy CloudWatchAgentServerPolicy, quindi scegli Aggiungi autorizzazioni.

    Setup IAM permissions for on-premise hosts
    Puoi creare un utente IAM che può essere utilizzato per fornire le autorizzazioni ai tuoi host on-premises.
    1. Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

    2. Scegli Utenti, quindi seleziona Crea utente.

    3. In Dettagli utente, per Nome utente, inserisci un nome per il nuovo utente IAM. Questo è il nome di accesso AWS che verrà utilizzato per autenticare il tuo host.

    4. Scegli Next (Successivo).

    5. Nella pagina Imposta autorizzazioni, nel campo Opzioni delle autorizzazioni, scegli Collega direttamente le policy.

    6. Dall'elenco delle politiche di autorizzazione, seleziona la CloudWatchAgentServerPolicy politica da aggiungere al tuo utente.

    7. Scegli Next (Successivo).

    8. Nella pagina Rivedi e crea, assicurati di essere soddisfatto del nome utente e che la CloudWatchAgentServerPolicy politica sia presente nel riepilogo delle autorizzazioni.

    9. Selezionare Create user (Crea utente).

    10. Crea e recupera la chiave di AWS accesso e la chiave segreta: nel pannello di navigazione della console IAM, scegli Utenti, quindi seleziona il nome utente dell'utente che hai creato nel passaggio precedente.

    11. Nella pagina dell'utente, scegli la scheda Credenziali di sicurezza.

    12. Nella sezione Chiavi di accesso, scegli Crea chiave di accesso.

    13. Per Crea chiave di accesso (passaggio 1), scegli Interfaccia a riga di comando (CLI).

    14. Per Crea chiave di accesso (passaggio 2), inserisci facoltativamente un tag e scegli Avanti.

    15. Per Crea chiave di accesso (passaggio 3), seleziona Scarica il file .csv per salvare un file .csv con la chiave di accesso e la chiave di accesso segreta del tuo utente IAM. Queste informazioni serviranno per i passaggi successivi.

    16. Seleziona Fatto.

    17. Configura AWS le tue credenziali nel tuo host locale inserendo il seguente comando. Sostituisci ACCESS_KEY_ID e SECRET_ACCESS_ID con la chiave di accesso e la chiave di accesso segreta appena generate dal file .csv scaricato nel passaggio precedente.

      $ aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
    Suggerimento

    Per gli host locali che devono solo inviare metriche o log, puoi utilizzare l'autenticazione con token al portatore come alternativa più semplice alla configurazione delle chiavi di accesso. AWS I token al portatore non richiedono i file di aws configure step o credenziali sull'host. Per ulteriori informazioni, consulta Impostazione dell'autenticazione del token al portatore per Metrics.

  4. Configura AWS le credenziali per i tuoi cluster Amazon EKS o Kubernetes. Il modo più semplice per iniziare a usare Amazon EKS è utilizzare il componente aggiuntivo EKS OTel Container Insights. Se preferisci utilizzare direttamente OpenTelemetry Collector, segui la procedura seguente per configurare le AWS credenziali per i tuoi cluster Amazon EKS o Kubernetes a cui inviare dati di telemetria. CloudWatch

    Setup IAM permissions for Amazon EKS
    1. Crea un provider di identità OIDC IAM per il cluster con il comando seguente.

      eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} --region ${REGION} --approve
    2. Assegna i ruoli IAM all'account del servizio Kubernetes per OTel Collector con il seguente comando.

      eksctl create iamserviceaccount \ --name ${COLLECTOR_SERVICE_ACCOUNT}\ --namespace ${NAMESPACE} \ --cluster ${CLUSTER_NAME} \ --region ${REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
    Setup IAM permissions for Kubernetes
    1. Configura le tue AWS credenziali nel tuo host locale inserendo il seguente comando. Sostituisci ACCESS_KEY_ID e SECRET_ACCESS_ID con la chiave di accesso appena generata e la chiave di accesso segreta dal file .csv scaricato nel passaggio precedente. Per impostazione predefinita, il file delle credenziali viene salvato in//. home/user aws/credentials. .

      aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
    2. Modifica la risorsa OpenTelemetry Collector per aggiungere il segreto delle credenziali AWS appena creato utilizzando il comando: kubectl edit OpenTelemetryCollector otel_collector

    3. Utilizzando l'editor di file, aggiungi AWS le credenziali nel OpenTelemetryCollector contenitore aggiungendo la seguente configurazione nella parte superiore della distribuzione. Sostituisci il percorso /home/user/.aws/credentials con la posizione del file delle AWS credenziali locali.

      spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials
  5. Configura l'esportatore OTLP nella configurazione del tuo raccoglitore per inviare dati di telemetria all'endpoint. CloudWatch Fai riferimento agli esempi riportati di seguito.

Effettua l'autenticazione con un token al portatore (chiave API)

Se non è necessario configurare AWS le credenziali sull'host, ad esempio quando l'esecuzione non è basata su AWS infrastrutture, altri provider cloud o CI/CD pipeline, è possibile utilizzare l'autenticazione con token al portatore anziché SIGv4. I token al portatore sono supportati per gli endpoint delle metriche e dei log (sono necessarie chiavi API separate per ogni servizio). L'autenticazione con token al portatore non è supportata per le tracce.

Per le istruzioni di configurazione, consultaImpostazione dell'autenticazione del token al portatore per Metrics. Per i log, vedi Configurazione dell'autenticazione con token al portatore per i log.

Per un esempio di configurazione del raccoglitore che utilizza i token al portatore, vedete l'esempio delle metriche dei token al portatore negli esempi di configurazione del raccoglitore riportati di seguito.

Esempi di configurazione dei raccoglitori

Copia e incolla il contenuto seguente per configurare il raccoglitore per l'invio di log e tracce agli endpoint OTLP.

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: logs_otlp_endpoint headers: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: traces_otlp_endpoint auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "region" service: "logs" sigv4auth/traces: region: "region" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]

Di seguito è riportato un esempio di invio di log e tracce utilizzando da sigv4 a us-east-1.

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: https://logs.us-east-1.amazonaws.com/v1/logs headers: x-aws-log-group: MyApplicationLogs x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: https://xray.us-east-1.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "us-east-1" service: "logs" sigv4auth/traces: region: "us-east-1" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
Nota

Configura i tuoi OpenTelemetry SDK in base alla configurazione di campionamento always_on per registrare in modo affidabile gli intervalli del 100% e ottenere la piena visibilità delle tue applicazioni critiche con Application Signals. CloudWatch Per ulteriori informazioni, consultate un esempio di configurazione del sampler Java SDK. OpenTelemetry Per un esempio sulla configurazione di OpenTelemetry Collector con un endpoint X-Ray OTLP, consultate il repository demo dei segnali dell'applicazione. https://github.com/aws-observability/application-signals-demo/blob/main/scripts/opentelemetry/otel_simple_setup/opentelemetry.yaml

Copia e incolla il contenuto seguente per configurare il raccoglitore in modo che invii le metriche agli endpoint OTLP.

receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: metrics_otlp_endpoint auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "region" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]

Di seguito è riportato un esempio di invio delle metriche tramite sigv4 a us-east-1.

receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics:443" auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "us-east-1" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]

Metriche con autenticazione tramite token al portatore

Di seguito è riportato un esempio di invio di metriche utilizzando un token al portatore a us-east-1. Per le istruzioni di configurazione e le best practice di sicurezza, consulta. Impostazione dell'autenticazione del token al portatore per Metrics

extensions: bearertokenauth: filename: "/etc/otel/cw-api-key" receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics" auth: authenticator: bearertokenauth service: extensions: [bearertokenauth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
Importante

Non codificate mai le chiavi API direttamente nei file di configurazione del collettore. filenameUsala per leggere da un segreto montato o ${env:VAR} per leggere da una variabile di ambiente inserita dal tuo gestore di segreti.

Nota

A differenza di SIGv4, i token al portatore non richiedono file di AWS credenziali, ruoli IAM o configurazione IRSA. Il raccoglitore può essere eseguito su qualsiasi piattaforma senza dipendenze SDK. AWS