

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
<a name="CloudWatch-OTLPSimplesetup"></a>

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

L'utilizzo di OpenTelemetry Collector offre i seguenti vantaggi: CloudWatch 
+ 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 dei dati e il campionamento delle tracce.
+ Utilizza la stessa configurazione del collettore in tutti gli ambienti cloud AWS, on-premise e in altri ambienti cloud, fornendo una pipeline di telemetria coerente indipendentemente da dove vengono eseguite le applicazioni.
+ Invia metriche a CloudWatch con etichette complete disponibili per l'interrogazione utilizzando il Prometheus Query Language (PromQL) in Query Studio. CloudWatch 

## Ricevitori supportati
<a name="CloudWatch-OTLPSupportedReceivers"></a>

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 strumentazione OpenTelemetry SDKs o i ricevitori Prometheus per acquisire metriche dagli esportatori Prometheus esistenti. I ricevitori Prometheus più comuni utilizzati con includono: CloudWatch 
+ Ricevitore Prometheus, per lo scraping di qualsiasi endpoint compatibile con Prometheus
+ 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, raccogliendo sia le metriche di Prometheus che quelle di OpenTelemetry Prometheus e inviarle tramite la stessa pipeline. CloudWatch [Per l'elenco completo dei ricevitori disponibili, consulta il repository Collector. OpenTelemetry ](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver)

## Nozioni di base
<a name="CloudWatch-OTLPSimplesetupGettingStarted"></a>

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, consulta le versioni di OpenTelemetry Collector.](https://github.com/open-telemetry/opentelemetry-collector-releases/releases)

1. Installa OpenTelemetry Collector sul tuo host. Il collector funziona su qualsiasi sistema operativo e piattaforma. Per ulteriori informazioni, consulta [Install the Collector](https://opentelemetry.io/docs/collector/installation/).

1. Configura AWS le credenziali sul tuo host Amazon EC2 o locale. Il raccoglitore utilizza queste credenziali per l'autenticazione durante l'invio di dati di telemetria. CloudWatch Vedi sotto per i dettagli.

------
#### [ 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/](https://console.aws.amazon.com/iam/).

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

   1. Nella scheda **Autorizzazioni**, scegli **Aggiungi autorizzazioni**, **Collega policy**.

   1. Utilizzando la casella di ricerca, cerca la policy `CloudWatchAgentServerPolicy`.

   1. 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/](https://console.aws.amazon.com/iam/).

   1. Scegli **Utenti**, quindi seleziona **Crea utente**.

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

   1. Scegli **Next (Successivo)**.

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

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

   1. Scegli **Next (Successivo)**.

   1. Nella pagina **Rivedi e crea**, assicurati di essere soddisfatto del nome utente e che la **CloudWatchAgentServerPolicy**politica si trovi nel riepilogo delle **autorizzazioni**.

   1. Selezionare **Create user (Crea utente)**.

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

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

   1. Nella sezione **Chiavi di accesso**, scegli **Crea chiave di accesso**.

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

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

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

   1. Seleziona **Fatto**.

   1. 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
      ```

------

1. 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 riportata di seguito per configurare le AWS credenziali per i 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
      ```

   1. Assegna i ruoli IAM all'account di servizio Kubernetes per Collector utilizzando il seguente comando. OTel 

      ```
      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 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 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
      ```

   1. Modifica la risorsa OpenTelemetry Collector per aggiungere il segreto delle credenziali AWS appena creato utilizzando il comando: `kubectl edit OpenTelemetryCollector {{otel_collector}}` 

   1. Utilizzando l'editor di file, aggiungi AWS le credenziali nel OpenTelemetryCollector contenitore aggiungendo la seguente configurazione all'inizio 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
      ```

------

1. Configura l'esportatore OTLP nella configurazione del collector per inviare telemetria all'endpoint. CloudWatch Fai riferimento agli esempi riportati di seguito.

## Esempi di configurazione del collettore
<a name="CloudWatch-OTLPSimplesetupConfigureCollector"></a>

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 la tua configurazione OpenTelemetry SDKs di campionamento *su always\_on* per registrare in modo affidabile 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 ](https://opentelemetry.io/docs/languages/java/sdk/#sampler) [Per un esempio sulla configurazione di OpenTelemetry Collector con un endpoint OTLP a raggi X, consulta l'archivio demo dei segnali applicativi.](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 per l'invio di 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 di metriche utilizzando 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]
```