

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

# Invio di log ad Amazon CloudWatch
<a name="container-insights-eks-otel-logs"></a>

OTel Container Insights raccoglie e invia i log dei container ad Amazon CloudWatch Logs utilizzando la pipeline di log di OpenTelemetry Collector. Il componente aggiuntivo Amazon CloudWatch Observability EKS implementa un OpenTelemetry Collector as a DaemonSet che utilizza il ricevitore filelog per tracciare i file di log dei container, arricchirli con i metadati Kubernetes ed esportarli in Logs tramite l'esportatore Logs. CloudWatch CloudWatch 

Non è richiesta alcuna configurazione aggiuntiva per la raccolta di log di base. La raccolta dei log è abilitata per impostazione predefinita quando si segue il[Avvio rapido: Otel Container Insights su Amazon EKS](container-insights-eks-otel-quickstart.md).

## Prerequisiti
<a name="container-insights-eks-otel-logs-prereqs"></a>

Prima di configurare la raccolta dei registri, verifica di soddisfare i seguenti requisiti.
+ OTel Container Insights è installato e il `amazon-cloudwatch-observability` componente aggiuntivo è attivo sul cluster
+ Autorizzazioni IAM: `logs:CreateLogGroup``logs:CreateLogStream`,`logs:PutLogEvents`,`logs:DescribeLogGroups`, e `logs:DescribeLogStreams` (incluse nella policy `CloudWatchAgentServerPolicy` gestita)
+ Accesso al nodo: il raccoglitore richiede l'accesso a ogni `/var/log/pods` nodo

## Gruppi e fonti di log
<a name="container-insights-eks-otel-logs-groups"></a>

La tabella seguente descrive il gruppo di log creato da OTel Container Insights e la fonte da cui raccoglie.


| Gruppo di log | Origine | Indice | 
| --- | --- | --- | 
| /aws/containerinsights/{{cluster-name}}/application | /var/log/pods/\*\*/\*.log | Tutti i log stdout e stderr dei container | 

**Nota**  
I log dell'host e del dataplane saranno disponibili in una versione futura.

## Come funziona la pipeline di log di Otel
<a name="container-insights-eks-otel-logs-pipeline"></a>

Il OpenTelemetry Collector del componente aggiuntivo esegue una pipeline di log con i seguenti componenti.
+ **Ricevitori**: il `filelog` ricevitore recupera i file di registro del contenitore da. `/var/log/pods/`
+ **Processori**: il `k8sattributes` processore arricchisce i log con metadati Kubernetes. Il `batch` processore raggruppa in batch i record di registro prima dell'esportazione. Il `resource` processore aggiunge gli attributi delle risorse.
+ **Esportatori**: l'`awscloudwatchlogs`esportatore invia i record di registro a Logs. CloudWatch 

### Arricchimento dei log
<a name="container-insights-eks-otel-logs-enrichment"></a>

La pipeline arricchisce ogni record di registro con i seguenti attributi.
+ **Attributi delle risorse Kubernetes**:`k8s.pod.name`,,, e `k8s.namespace.name` `k8s.container.name` `k8s.node.name` `k8s.deployment.name`
+ Etichette dei **pod: tutte le etichette** dei pod come attributi `k8s.pod.label.*`
+ **Attributi cloud**: `cloud.region``cloud.account.id`, e `cloud.platform`
+ **Attributi del cluster**: `k8s.cluster.name`

## Personalizzazione della raccolta di registri
<a name="container-insights-eks-otel-logs-customize"></a>

È possibile personalizzare la raccolta dei registri aggiornando i valori di configurazione del componente aggiuntivo. Le sezioni seguenti descrivono le opzioni di personalizzazione più comuni.

### Disabilita la raccolta dei registri
<a name="container-insights-eks-otel-logs-disable"></a>

Per disabilitare completamente la raccolta dei registri, aggiorna la configurazione del componente aggiuntivo con i registri dei contenitori disabilitati.

**Per disabilitare la raccolta dei log**
+ Eseguire il seguente comando seguente. Sostituisci {{cluster-name}} con il nome del tuo cluster Amazon EKS.

  ```
  aws eks update-addon \
    --cluster-name {{cluster-name}} \
    --addon-name amazon-cloudwatch-observability \
    --configuration-values '{"containerLogs":{"enabled":false}}' \
    --resolve-conflicts OVERWRITE
  ```

### Imposta la conservazione dei log
<a name="container-insights-eks-otel-logs-retention"></a>

Per impostazione predefinita, CloudWatch Logs conserva i dati di registro a tempo indeterminato. Per controllare i costi di archiviazione, è possibile impostare una politica di conservazione sul gruppo di log.

**Per impostare la conservazione dei log**
+ Eseguire il seguente comando seguente. Sostituisci {{cluster-name}} con il nome del tuo cluster Amazon EKS. Sostituisci {{30}} con il numero di giorni di conservazione dei log.

  ```
  aws logs put-retention-policy \
    --log-group-name "/aws/containerinsights/{{cluster-name}}/application" \
    --retention-in-days {{30}}
  ```

## Verifica
<a name="container-insights-eks-otel-logs-verify"></a>

Per verificare che la raccolta dei registri funzioni, verifica che i gruppi di log previsti esistano e contengano dati.

**Per verificare la raccolta dei registri**
+ Eseguire il seguente comando seguente. Sostituisci {{cluster-name}} con il nome del tuo cluster Amazon EKS.

  ```
  aws logs describe-log-groups \
    --log-group-name-prefix "/aws/containerinsights/{{cluster-name}}" \
    --query "logGroups[].{Name:logGroupName,StoredBytes:storedBytes}" \
    --output table
  ```

  L'output mostra i nomi dei gruppi di log e il numero di byte memorizzati. Un valore diverso da zero per `StoredBytes` conferma che la pipeline sta consegnando i log.

## Risoluzione dei problemi
<a name="container-insights-eks-otel-logs-troubleshoot"></a>

Utilizza la seguente guida per risolvere i problemi più comuni di raccolta dei log.

### I gruppi di log non vengono creati dopo 5 minuti
<a name="container-insights-eks-otel-logs-ts-no-loggroup"></a>

**Sintomo:** il gruppo di `/aws/containerinsights/{{cluster-name}}/application` log non viene visualizzato nei CloudWatch registri dopo 5 minuti.

**Causa:** il raccoglitore non dispone delle autorizzazioni IAM necessarie per creare gruppi di log e flussi di log.

**Soluzione:** verifica che al ruolo IAM associato al raccoglitore sia associata la policy gestita`CloudWatchAgentServerPolicy`. Questa politica include le `logs:CreateLogStream` autorizzazioni `logs:CreateLogGroup` e.

### Il gruppo di log dell'applicazione esiste ma è vuoto
<a name="container-insights-eks-otel-logs-ts-empty"></a>

**Sintomo:** il gruppo di log dell'applicazione esiste in CloudWatch Logs, ma non contiene flussi di log o eventi di log.

**Causa:** questo problema si verifica quando i contenitori non scrivono su stdout o stderr o il ricevitore filelog non può accedere al nodo. `/var/log/pods/`

**Soluzione:** completare i seguenti passaggi per risolvere il problema.

1. Verifica che i contenitori dell'applicazione scrivano i log su stdout o stderr.

1. Verifica che il collector DaemonSet pod abbia un supporto per il volume. `/var/log/pods`

   ```
   kubectl get daemonset -n amazon-cloudwatch -o yaml | grep -A 5 "var/log/pods"
   ```

1. Controlla i log del raccoglitore per eventuali errori di accesso ai file.

   ```
   kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=50 | grep -i "error\|permission"
   ```

### Costi elevati di log CloudWatch
<a name="container-insights-eks-otel-logs-ts-costs"></a>

**Sintomo:** CloudWatch i costi di ingestione o archiviazione dei log sono superiori al previsto.

**Causa:** High-volume i namespace (come i test di carico o i namespace di monitoraggio) generano grandi volumi di log.

**Soluzione:** imposta una politica di conservazione sul gruppo di log per eliminare automaticamente i log più vecchi. Per istruzioni, consulta [Imposta la conservazione dei log](#container-insights-eks-otel-logs-retention).