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à.
Tutorial per aggiungere un nuovo target di scrape Prometheus: Memcached su Amazon ECS
Questo tutorial fornisce un'introduzione pratica all'analisi dei parametri Prometheus di un'applicazione Memcached di esempio su un cluster Amazon Amazon con il tipo di avvio. ECS EC2 Il target Memcached Prometheus exporter verrà scoperto automaticamente dall'agente mediante l'individuazione del servizio basata sulla definizione delle attività. CloudWatch ECS
Memcached è un sistema di caching in memoria implementato per scopo generico. Viene spesso utilizzato per velocizzare i siti Web dinamici basati su database memorizzando nella cache dati e oggetti per ridurre il numero di volte in cui è RAM necessario leggere una fonte di dati esterna (come un database o). API Per ulteriori informazioni, consulta la pagina Cos'è Memcached?
memchached_exporter/metrics.
In questa esercitazione vengono utilizzate le immagini Docker nei due repository Docker Hub seguenti:
Prerequisito
Per raccogliere metriche da un carico di lavoro Prometheus di esempio per ECS Amazon, devi eseguire Container Insights nel cluster. Per informazioni sull'installazione di Container Insights, consulta Configurazione di Container Insights su Amazon ECS.
Argomenti
Imposta le variabili di ambiente ECS EC2 del cluster Amazon
Per impostare le variabili di ambiente ECS EC2 del cluster Amazon
-
Installa Amazon ECS CLI se non l'hai già fatto. Per ulteriori informazioni, consulta Installazione di Amazon ECS CLI.
-
Imposta il nome e la regione del nuovo ECS cluster Amazon. Per esempio:
ECS_CLUSTER_NAME=ecs-ec2-memcached-tutorial AWS_DEFAULT_REGION=ca-central-1
-
(Facoltativo) Se non disponi già di un ECS cluster Amazon con il tipo di EC2 avvio in cui desideri installare il carico di lavoro e l' CloudWatch agente Memcached di esempio, puoi crearne uno inserendo il seguente comando.
ecs-cli up --capability-iam --size 1 \ --instance-type t3.medium \ --cluster $ECS_CLUSTER_NAME \ --region $AWS_REGION
Il risultato previsto di questo comando è il seguente:
WARN[0000] You will not be able to SSH into your EC2 instances without a key pair. INFO[0000] Using recommended Amazon Linux 2 AMI with ECS Agent 1.44.4 and Docker version 19.03.6-ce INFO[0001] Created cluster cluster=ecs-ec2-memcached-tutorial region=ca-central-1 INFO[0002] Waiting for your cluster resources to be created... INFO[0002] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0063] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS INFO[0124] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS VPC created: vpc-xxxxxxxxxxxxxxxxx Security Group created: sg-xxxxxxxxxxxxxxxxx Subnet created: subnet-xxxxxxxxxxxxxxxxx Subnet created: subnet-xxxxxxxxxxxxxxxxx Cluster creation succeeded.
Installazione del carico di lavoro Memcached di esempio
Per installare il carico di lavoro Memcached di esempio che espone i parametri Prometheus
-
Scarica il AWS CloudFormation modello Memcached inserendo il seguente comando.
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/sample_traffic/memcached/memcached-traffic-sample.yaml
-
Imposta i nomi dei IAM ruoli da creare per Memcached inserendo i seguenti comandi.
MEMCACHED_ECS_TASK_ROLE_NAME=memcached-prometheus-demo-ecs-task-role-name MEMCACHED_ECS_EXECUTION_ROLE_NAME=memcached-prometheus-demo-ecs-execution-role-name
-
Installa il carico di lavoro Memcached di esempio inserendo il seguente comando. Questo esempio installa il carico di lavoro in modalità di rete
host
.MEMCACHED_ECS_NETWORK_MODE=host aws cloudformation create-stack --stack-name Memcached-Prometheus-Demo-ECS-$ECS_CLUSTER_NAME-EC2-$MEMCACHED_ECS_NETWORK_MODE \ --template-body file://memcached-traffic-sample.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \ ParameterKey=ECSNetworkMode,ParameterValue=$MEMCACHED_ECS_NETWORK_MODE \ ParameterKey=TaskRoleName,ParameterValue=$MEMCACHED_ECS_TASK_ROLE_NAME \ ParameterKey=ExecutionRoleName,ParameterValue=$MEMCACHED_ECS_EXECUTION_ROLE_NAME \ --capabilities CAPABILITY_NAMED_IAM \ --region $AWS_REGION
Lo AWS CloudFormation stack crea quattro risorse:
-
Un ECS ruolo
-
Un ruolo di esecuzione dell'ECSattività
-
Una definizione dell'attività Memcached
-
Un servizio di Memcached
Nella definizione dell'attività Memcached vengono definiti due container:
-
Il container primario esegue una semplice applicazione Memcached e apre la porta 11211 per l'accesso.
-
L'altro contenitore esegue il processo di OSS esportazione Redis per esporre le metriche di Prometheus sulla porta 9150. Questo è il contenitore che deve essere scoperto e raschiato dall'agente. CloudWatch
Configurare l' CloudWatch agente per acquisire le metriche di Memcached Prometheus
Per configurare l' CloudWatch agente per l'acquisizione delle metriche di Memcached Prometheus
-
Scarica la versione più recente di
cwagent-ecs-prometheus-metric-for-awsvpc.yaml
inserendo il seguente comando.curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml
-
Apri il file con un editor di testo e trova la configurazione completa dell' CloudWatch agente dietro la chiave nella sezione.
value
resource:CWAgentConfigSSMParameter
Quindi, nella sezione
ecs_service_discovery
, aggiungi la configurazione seguente nella sezionetask_definition_list
.{ "sd_job_name": "ecs-memcached", "sd_metrics_ports": "9150", "sd_task_definition_arn_pattern": ".*:task-definition/memcached-prometheus-demo.*:[0-9]+" },
Per la sezione
metric_declaration
, l'impostazione predefinita non consente alcun parametro Memcached. Aggiungi la sezione seguente per consentire i parametri Memcached. Assicurati di seguire il modello di rientro esistente.{ "source_labels": ["container_name"], "label_matcher": "memcached-exporter-.*", "dimensions": [["ClusterName", "TaskDefinitionFamily"]], "metric_selectors": [ "^memcached_current_(bytes|items|connections)$", "^memcached_items_(reclaimed|evicted)_total$", "^memcached_(written|read)_bytes_total$", "^memcached_limit_bytes$", "^memcached_commands_total$" ] }, { "source_labels": ["container_name"], "label_matcher": "memcached-exporter-.*", "dimensions": [["ClusterName", "TaskDefinitionFamily","status","command"], ["ClusterName", "TaskDefinitionFamily","command"]], "metric_selectors": [ "^memcached_commands_total$" ] },
-
Se hai già distribuito l' CloudWatch agente nel ECS cluster Amazon da AWS CloudFormation, puoi creare un set di modifiche inserendo i seguenti comandi.
ECS_NETWORK_MODE=bridge CREATE_IAM_ROLES=True ECS_TASK_ROLE_NAME=
your_selected_ecs_task_role_name
ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
aws cloudformation create-change-set --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \ --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \ ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \ ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \ ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \ ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \ --capabilities CAPABILITY_NAMED_IAM \ --region $AWS_REGION \ --change-set-name memcached-scraping-support Apri la AWS CloudFormation console in https://console.aws.amazon.com/cloudformazione.
-
Esamina il set di modifiche
memcached-scraping-support
appena creato. Dovresti vedere una modifica applicata alla risorsaCWAgentConfigSSMParameter
. Esegui il changeset e riavvia l'attività dell' CloudWatch agente inserendo i seguenti comandi.aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 0 \ --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \ --region $AWS_REGION
-
Attendi circa 10 secondi e inserisci il comando seguente.
aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 1 \ --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \ --region $AWS_REGION
-
Se stai installando l' CloudWatch agente con la raccolta delle metriche Prometheus per il cluster per la prima volta, inserisci i seguenti comandi:
ECS_NETWORK_MODEE=bridge CREATE_IAM_ROLES=True ECS_TASK_ROLE_NAME=
your_selected_ecs_task_role_name
ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \ --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \ ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \ ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \ ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \ ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \ --capabilities CAPABILITY_NAMED_IAM \ --region $AWS_REGION
Visualizzazione dei parametri Memcached
Questo tutorial invia le seguenti metriche al namespace in. ECS/ContainerInsights/Prometheus CloudWatch Puoi usare la CloudWatch console per vedere le metriche in quel namespace.
Nome parametro | Dimensioni |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nota
I valori della dimensione command (comando) possono essere: delete
, get
, cas
, set
, decr
, touch
, incr
o flush
.
I valori della dimensione status (stato) possono essere hit
, miss
o badval
.
Puoi anche creare una CloudWatch dashboard per le metriche di Memcached Prometheus.
Per creare un pannello di controllo per i parametri Prometheus di Memcached
-
Crea variabili di ambiente, sostituendo i valori sotto in modo che corrispondano all'implementazione.
DASHBOARD_NAME=
your_memcached_cw_dashboard_name
ECS_TASK_DEF_FAMILY=memcached-prometheus-demo-$ECS_CLUSTER_NAME-EC2-$MEMCACHED_ECS_NETWORK_MOD -
Inserisci il seguente comando per creare il pannello di controllo.
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/sample_cloudwatch_dashboards/memcached/cw_dashboard_memcached.json \ | sed "s/{{YOUR_AWS_REGION}}/$AWS_REGION/g" \ | sed "s/{{YOUR_CLUSTER_NAME}}/$ECS_CLUSTER_NAME/g" \ | sed "s/{{YOUR_TASK_DEF_FAMILY}}/$ECS_TASK_DEF_FAMILY/g" \ | xargs -0 aws cloudwatch put-dashboard --dashboard-name ${DASHBOARD_NAME} --region $AWS_REGION --dashboard-body