

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

# Gestisci Amazon Managed Service for AWS Prometheus con Controller per Kubernetes
<a name="integrating-ack"></a>

Il servizio gestito da Amazon per Prometheus è integrato con [AWS Controllers for Kubernetes (ACK)](https://aws-controllers-k8s.github.io/community/docs/community/overview/), con supporto per la gestione della tua area di lavoro, Alert Manager e risorse Ruler in Amazon EKS. Puoi utilizzare le definizioni di risorse personalizzate di AWS Controllers for Kubernetes (CRDs) e gli oggetti Kubernetes nativi senza dover definire alcuna risorsa al di fuori del cluster.

Questa sezione descrive come configurare AWS i controller per Kubernetes e Amazon Managed Service for Prometheus in un cluster Amazon EKS esistente.

Puoi anche leggere i post del blog che [introducono AWS Controller for Kubernetes](https://aws.amazon.com/blogs/containers/aws-controllers-for-kubernetes-ack/) e [introducono il controller ACK per Amazon Managed Service for Prometheus](https://aws.amazon.com/blogs/mt/introducing-the-ack-controller-for-amazon-managed-service-for-prometheus/).

## Prerequisiti
<a name="ack-prereqs"></a>

Prima di iniziare a integrare AWS Controller for Kubernetes e Amazon Managed Service for Prometheus con il tuo cluster Amazon EKS, devi avere i seguenti prerequisiti.
+ È necessario disporre di un account [Account AWS e delle autorizzazioni esistenti](AMP-setting-up.md) per creare i ruoli Amazon Managed Service for Prometheus e IAM a livello di codice.
+ È necessario disporre di un [cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html) esistente con OpenID Connect (OIDC) abilitato.

  Se l'OIDC non è abilitato, è possibile utilizzare il comando seguente per abilitarlo. Ricordati di sostituire *YOUR\$1CLUSTER\$1NAME* e *AWS\$1REGION* con i valori corretti per il tuo account.

  ```
  eksctl utils associate-iam-oidc-provider \
      --cluster ${YOUR_CLUSTER_NAME} --region ${AWS_REGION} \
      --approve
  ```

  Per ulteriori informazioni sull'utilizzo di OIDC con Amazon EKS, consulta [Autenticazione tramite provider di identità OIDC](https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html) e [Creazione di un provider IAM OIDC](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) nella *Guida per l'utente di Amazon EKS*. 
+ È necessario che il [driver CSI di Amazon EBS sia installato](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html) nel cluster Amazon EKS.
+ È necessaria l'installazione di [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). AWS CLI Viene utilizzato per richiamare AWS funzionalità dalla riga di comando.
+ È necessario installare [Helm](https://docs.aws.amazon.com/eks/latest/userguide/helm.html), il gestore di pacchetti per Kubernetes.
+ [I parametri del piano di controllo con Prometheus](https://docs.aws.amazon.com/eks/latest/userguide/prometheus.html) devono essere configurate nel tuo cluster Amazon EKS.
+ È necessario disporre di un argomento [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/) a cui desideri inviare gli avvisi dalla nuova area di lavoro. Assicurati di aver [autorizzato il servizio gestito da Amazon per Prometheus a inviare messaggi sull'argomento](AMP-alertmanager-receiver-AMPpermission.md).

Quando il tuo cluster Amazon EKS è configurato correttamente, dovresti essere in grado di vedere i parametri formattati per Prometheus chiamando `kubectl get --raw /metrics`. Ora sei pronto per installare un AWS controller di servizio Controllers for Kubernetes e utilizzarlo per distribuire le risorse di Amazon Managed Service for Prometheus.

## Implementazione di uno spazio di lavoro con Controllers for Kubernetes AWS
<a name="ack-deploy-workspace"></a>

Per distribuire un nuovo spazio di lavoro Amazon Managed Service for Prometheus, installerai AWS un controller Controllers for Kubernetes e lo utilizzerai per creare l'area di lavoro.

**Implementare un nuovo spazio di lavoro Amazon Managed Service per Prometheus con Controllers for Kubernetes AWS**

1. Usa i seguenti comandi per utilizzare Helm per installare il controller del servizio gestito da Amazon per Prometheus. Per ulteriori informazioni, consulta [Installare un controller ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/install/) nella documentazione di Controllers for Kubernetes su. AWS GitHub Usa quello corretto *region* per il tuo sistema, ad esempio. `us-east-1`

   ```
   export SERVICE=prometheusservice
   export RELEASE_VERSION=`curl -sL https://api.github.com/repos/aws-controllers-k8s/$SERVICE-controller/releases/latest | jq -r '.tag_name | ltrimstr("v")'`
   export ACK_SYSTEM_NAMESPACE=ack-system
   export AWS_REGION=region
   
   aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws
   helm install --create-namespace -n $ACK_SYSTEM_NAMESPACE ack-$SERVICE-controller \
     oci://public.ecr.aws/aws-controllers-k8s/$SERVICE-chart --version=$RELEASE_VERSION --set=aws.region=$AWS_REGION
   ```

   Dopo alcuni istanti, si avrà una risposta simile alla seguente, che indica che la risposta è stata completata.

   ```
   You are now able to create Amazon Managed Service for Prometheus (AMP) resources!
   The controller is running in "cluster" mode.
   The controller is configured to manage AWS resources in region: "us-east-1"
   ```

   Facoltativamente, puoi verificare che il AWS controller Controllers for Kubernetes sia stato installato correttamente con il seguente comando.

   ```
   helm list --namespace $ACK_SYSTEM_NAMESPACE -o yaml
   ```

   Ciò restituirà informazioni sul controller `ack-prometheusservice-controller`, incluso il `status: deployed`.

1. Crea un file denominato `workspace.yaml`, con il testo seguente. Verrà utilizzato come configurazione per l'area di lavoro che stai creando.

   ```
   apiVersion: prometheusservice.services.k8s.aws/v1alpha1
   kind: Workspace
   metadata:
     name: my-amp-workspace
   spec:
     alias: my-amp-workspace
     tags:
       ClusterName: EKS-demo
   ```

1. Esegui il comando seguente per creare la tua area di lavoro (questo comando dipende dalle variabili di sistema che hai impostato nel passaggio 1).

   ```
   kubectl apply -f workspace.yaml -n $ACK_SYSTEM_NAMESPACE
   ```

   Entro pochi istanti, dovresti essere in grado di vedere una nuova area di lavoro, denominata `my-amp-workspace` nel tuo account.

   Esegui il seguente comando per visualizzare i dettagli e lo stato della tua area di lavoro, incluso l'ID dell'*area di lavoro*. In alternativa, puoi visualizzare la nuova area di lavoro nella console del servizio[ gestito da Amazon per Prometheus](https://console.aws.amazon.com/prometheus).

   ```
   kubectl describe workspace my-amp-workspace -n $ACK_SYSTEM_NAMESPACE
   ```
**Nota**  
Puoi anche [utilizzare un'area di lavoro esistente](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/) anziché crearne una nuova.

1. Crea due nuovi file yaml come configurazione per i Rulegroups e AlertManager creerai successivamente utilizzando la seguente configurazione.

   Salva questa configurazione come `rulegroup.yaml`. Sostituiscilo *WORKSPACE-ID* con l'ID dell'area di lavoro del passaggio precedente.

   ```
   apiVersion: prometheusservice.services.k8s.aws/v1alpha1
   kind: RuleGroupsNamespace
   metadata:
     name: default-rule
   spec:
     workspaceID: WORKSPACE-ID
     name: default-rule
     configuration: |
       groups:
       - name: example
         rules:
         - alert: HostHighCpuLoad
           expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 60
           for: 5m
           labels:
             severity: warning
             event_type: scale_up
           annotations:
             summary: Host high CPU load (instance {{ $labels.instance }})
             description: "CPU load is > 60%\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
         - alert: HostLowCpuLoad
           expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) < 30
           for: 5m
           labels:
             severity: warning
             event_type: scale_down
           annotations:
             summary: Host low CPU load (instance {{ $labels.instance }})
             description: "CPU load is < 30%\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
   ```

   Salva la seguente configurazione come `alertmanager.yaml`. Sostituisci *WORKSPACE-ID* con l'ID dell'area di lavoro del passaggio precedente. Sostituiscilo *TOPIC-ARN* con l'ARN per l'argomento Amazon SNS a cui inviare notifiche *REGION* e con Regione AWS quello che stai utilizzando. Ricorda che il servizio gestito da Amazon per Prometheus [deve disporre delle autorizzazioni](AMP-alertmanager-receiver-AMPpermission.md) per l'argomento Amazon SNS.

   ```
   apiVersion: prometheusservice.services.k8s.aws/v1alpha1
   kind: AlertManagerDefinition
   metadata:
     name: alert-manager
   spec:
     workspaceID: WORKSPACE-ID
     configuration: |
       alertmanager_config: |
         route:
            receiver: default_receiver
         receivers:
           - name: default_receiver
             sns_configs:
             - topic_arn: TOPIC-ARN
               sigv4:
                 region: REGION
               message: |
                 alert_type: {{ .CommonLabels.alertname }}
                 event_type: {{ .CommonLabels.event_type }}
   ```
**Nota**  
Per ulteriori informazioni sui formati di questi file di configurazione, consulta [RuleGroupsNamespaceData](https://docs.aws.amazon.com/prometheus/latest/APIReference/yaml-RuleGroupsNamespaceData.html) e [AlertManagerDefinitionData](https://docs.aws.amazon.com/prometheus/latest/APIReference/yaml-AlertManagerDefinitionData.html).

1. Esegui i seguenti comandi per creare la configurazione del gruppo di regole e di alert manager (questo comando dipende dalle variabili di sistema impostate nel passaggio 1).

   ```
   kubectl apply -f rulegroup.yaml -n $ACK_SYSTEM_NAMESPACE
   kubectl apply -f alertmanager.yaml -n $ACK_SYSTEM_NAMESPACE
   ```

   Le modifiche saranno disponibili in pochi istanti.
**Nota**  
Per aggiornare una risorsa, anziché crearla, è sufficiente aggiornare il file yaml ed eseguire nuovamente il `kubectl apply` comando.  
Per eliminare una risorsa, esegui il seguente comando. Sostituisci *ResourceType* con il tipo di risorsa che desideri eliminare `Workspace``AlertManagerDefinition`, o. `RuleGroupNamespace` Sostituisci *ResourceName* con il nome della risorsa da eliminare.  

   ```
   kubectl delete ResourceType ResourceName -n $ACK_SYSTEM_NAMESPACE
   ```

Ciò completa la distribuzione della nuova area di lavoro. La sezione successiva descrive la configurazione del cluster per l'invio di parametri a quell'area di lavoro.

## Configurazione del cluster Amazon EKS per la scrittura nell'area di lavoro del servizio gestito da Amazon per Prometheus
<a name="ack-configure-workspace"></a>

Questa sezione descrive come usare Helm per configurare Prometheus in esecuzione nel tuo cluster Amazon EKS per la scrittura remota dei parametri nell'area di lavoro del servizio gestito da Amazon per Prometheus che hai creato nella sezione precedente.

Per questa procedura, avrai bisogno del nome del ruolo IAM che hai creato da utilizzare per inserire i parametri. Se non l'hai già stato fatto, consulta [Configura i ruoli di servizio per l'acquisizione di parametri dai cluster Amazon EKS.](set-up-irsa.md#set-up-irsa-ingest) per ulteriori informazioni e istruzioni. Se segui queste istruzioni, il ruolo IAM verrà denominato `amp-iamproxy-ingest-role`.

**Per configurare il cluster Amazon EKS per la scrittura da remoto**

1. Utilizza il comando seguente per ottenere la relativa `prometheusEndpoint` area di lavoro. Sostituisci *WORKSPACE-ID* con l'ID dell'area di lavoro della sezione precedente.

   ```
   aws amp describe-workspace --workspace-id WORKSPACE-ID
   ```

   Il prometheusEndpoint sarà presente nei risultati restituiti e sarà formattato in questo modo:

   ```
   https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-a1b2c3d4-a123-b456-c789-ac1234567890/
   ```

   Salva questo URL per utilizzarlo nei prossimi passaggi.

1. Crea un nuovo file con il seguente testo e chiamalo `prometheus-config.yaml`. Sostituiscilo *account* con l'ID del tuo account, *workspaceURL/* con l'URL appena trovato e *region* con quello appropriato Regione AWS per il tuo sistema.

   ```
   serviceAccounts:
           server:
               name: "amp-iamproxy-ingest-service-account"
               annotations:
                   eks.amazonaws.com/role-arn: "arn:aws:iam::account:role/amp-iamproxy-ingest-role"
   server:
       remoteWrite:
           - url: workspaceURL/api/v1/remote_write
             sigv4:
               region: region
             queue_config:
               max_samples_per_send: 1000
               max_shards: 200
               capacity: 2500
   ```

1. Trova i nomi del grafico e del namespace di Prometheus, nonché la versione del grafico, con il seguente comando Helm.

   ```
   helm ls --all-namespaces
   ```

   In base ai passaggi precedenti, il grafico e lo spazio dei nomi di Prometheus dovrebbero avere entrambi un nome `prometheus`, e la versione del grafico potrebbe essere `15.2.0`

1. Esegui il comando seguente, utilizzando *PrometheusChartName**PrometheusNamespace*, e *PrometheusChartVersion* trovato nel passaggio precedente.

   ```
   helm upgrade PrometheusChartName prometheus-community/prometheus -n PrometheusNamespace -f prometheus-config.yaml --version PrometheusChartVersion
   ```

   Dopo alcuni minuti, verrà visualizzato un messaggio che indica che l'aggiornamento è stato completato.

1. Facoltativamente, verifica che i parametri vengano inviati correttamente interrogando l'endpoint del servizio gestito da Amazon per Prometheus tramite `awscurl`. Sostituiscilo *Region* con Regione AWS quello che stai utilizzando e *workspaceURL/* con l'URL che hai trovato nel passaggio 1.

   ```
   awscurl --service="aps" --region="Region" "workspaceURL/api/v1/query?query=node_cpu_seconds_total"
   ```

Ora hai creato un'area di lavoro Amazon Managed Service per Prometheus e ti sei connesso ad esso dal tuo cluster Amazon EKS, utilizzando i file YAML come configurazione. Questi file, denominati definizioni di risorse personalizzate (CRDs), risiedono all'interno del cluster Amazon EKS. Puoi utilizzare il AWS controller Controllers for Kubernetes per gestire tutte le tue risorse Amazon Managed Service for Prometheus direttamente dal cluster.