

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

# Esercitazione per l'aggiunta di una nuova destinazione di scraping di Prometheus: Redis OSS su Amazon EKS e cluster Kubernetes
<a name="ContainerInsights-Prometheus-Setup-redis-eks"></a>

Questa esercitazione offre un'introduzione pratica per recuperare le metriche Prometheus di un'applicazione Redis OSS di esempio su Amazon EKS e Kubernetes. Redis OSS (https://redis.io/) è uno store di strutture dati open source (con licenza BSD), in memoria, utilizzato come database, cache e broker di messaggi. Per ulteriori informazioni, consulta la pagina [redis](https://redis.io/).

redis\$1exporter (con licenza MIT Licence) viene utilizzato per esporre le metriche Prometheus di Redis OSS sulla porta specificata (predefinita: 0.0.0.0:9121). Per ulteriori informazioni, consulta la pagina [redis\$1exporter](https://github.com/oliver006/redis_exporter).

In questa esercitazione vengono utilizzate le immagini Docker nei due repository Docker Hub seguenti: 
+ [ redis](https://hub.docker.com/_/redis?tab=description)
+ [redis\$1exporter](https://hub.docker.com/r/oliver006/redis_exporter)

**Per installare un carico di lavoro Redis OSS di esempio che espone le metriche Prometheus**

1. Imposta il namespace per il carico di lavoro Redis OSS di esempio.

   ```
   REDIS_NAMESPACE=redis-sample
   ```

1. Se esegui Redis OSS in un cluster con il tipo di avvio Fargate, devi impostare un profilo Fargate. Per impostare il profilo, inserisci il comando seguente. Sostituisci *MyCluster* con il nome del cluster.

   ```
   eksctl create fargateprofile --cluster MyCluster \
   --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE
   ```

1. Inserisci il comando seguente per installare il carico di lavoro Redis OSS di esempio.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_traffic/redis/redis-traffic-sample.yaml \
   | sed "s/{{namespace}}/$REDIS_NAMESPACE/g" \
   | kubectl apply -f -
   ```

1. L'installazione include un servizio denominato `my-redis-metrics` che espone la metrica Prometheus di Redis OSS sulla porta 9121 Inserisci il seguente comando per ottenere informazioni sul servizio: 

   ```
   kubectl describe service/my-redis-metrics  -n $REDIS_NAMESPACE
   ```

   Nella `Annotations` sezione dei risultati, vedrai due annotazioni che corrispondono alla configurazione dello scrape Prometheus dell'agente, in modo che possa rilevare automaticamente CloudWatch i carichi di lavoro:

   ```
   prometheus.io/port: 9121
   prometheus.io/scrape: true
   ```

   La configurazione di scraping di Prometheus correlata è disponibile nella sezione `- job_name: kubernetes-service-endpoints` di `kubernetes-eks.yaml` o `kubernetes-k8s.yaml`.

**Per iniziare a raccogliere le metriche di Redis OSS Prometheus in CloudWatch**

1. Scaricare la versione più recente del file `kubernetes-eks.yaml` o `kubernetes-k8s.yaml` immettendo uno dei seguenti comandi. Per un cluster Amazon EKS con tipo di avvio EC2, inserisci questo comando.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
   ```

   Per un cluster Amazon EKS con tipo di avvio Fargate, inserisci questo comando.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml
   ```

   Per un cluster Kubernetes in esecuzione su un'istanza Amazon EC2, inserisci questo comando.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
   ```

1. Apri il file con un editor di testo e trova la sezione `cwagentconfig.json`. Aggiungi la seguente sottosezione e salva le modifiche. Assicurati che il rientro segua il modello esistente.

   ```
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName"]],
     "metric_selectors": [
       "^redis_net_(in|out)put_bytes_total$",
       "^redis_(expired|evicted)_keys_total$",
       "^redis_keyspace_(hits|misses)_total$",
       "^redis_memory_used_bytes$",
       "^redis_connected_clients$"
     ]
   },
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName","cmd"]],
     "metric_selectors": [
       "^redis_commands_total$"
     ]
   },
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName","db"]],
     "metric_selectors": [
       "^redis_db_keys$"
     ]
   },
   ```

   La sezione che hai aggiunto inserisce le metriche Redis OSS nell'elenco degli agenti consentiti. CloudWatch Per l'elenco di questi parametri, consulta la sezione seguente.

1. Se l' CloudWatch agente con supporto Prometheus è già distribuito in questo cluster, è necessario eliminarlo immettendo il seguente comando.

   ```
   kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
   ```

1. Distribuisci l' CloudWatch agente con la configurazione aggiornata immettendo uno dei seguenti comandi. Sostituisci *MyCluster* e *region* abbina le tue impostazioni.

   Per un cluster Amazon EKS con tipo di avvio EC2, inserisci questo comando.

   ```
   kubectl apply -f prometheus-eks.yaml
   ```

   Per un cluster Amazon EKS con tipo di avvio Fargate, inserisci questo comando.

   ```
   cat prometheus-eks-fargate.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

   Per un cluster Kubernetes, inserisci il seguente comando.

   ```
   cat prometheus-k8s.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

## Visualizzazione delle metriche Prometheus di Redis OSS
<a name="ContainerInsights-Prometheus-Setup-redis-eks-view"></a>

Questo tutorial invia le seguenti metriche allo spazio dei nomi **ContainerInsights/Prometheus** in. CloudWatch Puoi usare la CloudWatch console per visualizzare le metriche in quel namespace.


| Nome parametro | Dimensioni | 
| --- | --- | 
|  `redis_net_input_bytes_total` |  ClusterName, `Namespace`  | 
|  `redis_net_output_bytes_total` |  ClusterName, `Namespace`  | 
|  `redis_expired_keys_total` |  ClusterName, `Namespace`  | 
|  `redis_evicted_keys_total` |  ClusterName, `Namespace`  | 
|  `redis_keyspace_hits_total` |  ClusterName, `Namespace`  | 
|  `redis_keyspace_misses_total` |  ClusterName, `Namespace`  | 
|  `redis_memory_used_bytes` |  ClusterName, `Namespace`  | 
|  `redis_connected_clients` |  ClusterName, `Namespace`  | 
|  `redis_commands_total` |  ClusterName,, cmd `Namespace`  | 
|  `redis_db_keys` |  ClusterName, `Namespace` db  | 

**Nota**  
Il valore della dimensione **cmd** può essere `append`, `client`, `command`, `config`, `dbsize`, `flushall`, `get`, `incr`, `info`, `latency` o `slowlog`.  
Il valore della dimensione **db** può essere da `db0` a `db15`. 

Puoi anche creare una CloudWatch dashboard per le metriche di Redis OSS Prometheus.

**Per creare un pannello di controllo per le metriche Prometheus di Redis OSS**

1. Crea variabili di ambiente, sostituendo i valori sotto in modo che corrispondano all'implementazione.

   ```
   DASHBOARD_NAME=your_cw_dashboard_name
   REGION_NAME=your_metric_region_such_as_us-east-1
   CLUSTER_NAME=your_k8s_cluster_name_here
   NAMESPACE=your_redis_service_namespace_here
   ```

1. Inserisci il seguente comando per creare il pannello di controllo.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/redis/cw_dashboard_redis.json \
   | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \
   | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \
   | sed "s/{{YOUR_NAMESPACE}}/${NAMESPACE}/g" \
   ```