Esercitazione per l'aggiunta di una nuova destinazione di scraping di Prometheus: Redis OSS su Amazon EKS e cluster Kubernetes - Amazon CloudWatch

Esercitazione per l'aggiunta di una nuova destinazione di scraping di Prometheus: Redis OSS su Amazon EKS e cluster Kubernetes

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.

redis_exporter (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_exporter.

In questa esercitazione vengono utilizzate le immagini Docker nei due repository Docker Hub seguenti:

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
  2. 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 tuo cluster.

    eksctl create fargateprofile --cluster MyCluster \ --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE
  3. 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 -
  4. 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 sezione Annotations dei risultati, vedrai due annotazioni che corrispondono alla configurazione di scraping di Prometheus dell'agente CloudWatch, in modo che possa rilevare automaticamente 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 Prometheus di Redis OSS 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
  2. 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 aggiunta inserisce le metriche Redis OSS nell'elenco di autorizzazioni dell'agente CloudWatch. Per l'elenco di questi parametri, consulta la sezione seguente.

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

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
  4. Implementa l'agente CloudWatch con la configurazione aggiornata immettendo uno dei seguenti comandi. Sostituisci MyCluster e region (regione) in modo che corrispondano alle 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

Questa esercitazione invia i parametri seguenti allo spazio dei nomi ContainerInsights/Prometheus in CloudWatch. Puoi utilizzare la console CloudWatch per visualizzare i parametri in tale spazio dei nomi.

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, Namespace, cmd

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 un pannello di controllo CloudWatch per le tue metriche Prometheus di Redis OSS.

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
  2. 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" \