Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tutorial zum Hinzufügen eines neuen Prometheus-Scrape-Targets: Memcached on Amazon ECS
Dieses Tutorial bietet eine praktische Einführung in das Scrapen der Prometheus-Metriken einer Memcached-Beispielanwendung auf einem ECS Amazon-Amazon-Cluster mit dem Starttyp. EC2 Das Memcached Prometheus-Exporter-Ziel wird vom CloudWatch Agenten automatisch durch eine auf Aufgabendefinitionen basierende Serviceerkennung erkannt. ECS
Memcached ist ein universelles verteiltes Speicherzwischenspeicher-Caching-System. Es wird häufig verwendet, um dynamische, datenbankgestützte Websites zu beschleunigen, indem Daten und Objekte zwischengespeichert werden, um die Häufigkeit RAM zu reduzieren, mit der eine externe Datenquelle (z. B. eine Datenbank oder) gelesen werden muss. API Weitere Informationen finden Sie unter Was ist Memcached?
Der memchached_exporter/metrics.
Die Docker-Images in den folgenden zwei Docker Hub-Repositories werden in diesem Tutorial verwendet:
Voraussetzung
Um Metriken aus einem Prometheus-Beispiel-Workload für Amazon zu sammelnECS, müssen Sie Container Insights im Cluster ausführen. Informationen zur Installation von Container Insights finden Sie unter Container Insights auf Amazon einrichten ECS.
Themen
Legen Sie die ECS EC2 Amazon-Cluster-Umgebungsvariablen fest
So legen Sie die ECS EC2 Amazon-Cluster-Umgebungsvariablen fest
-
Installieren Sie Amazon ECSCLI, falls Sie dies noch nicht getan haben. Weitere Informationen finden Sie unter Amazon installieren ECS CLI.
-
Legen Sie den neuen ECS Amazon-Clusternamen und die Region fest. Beispielsweise:
ECS_CLUSTER_NAME=ecs-ec2-memcached-tutorial AWS_DEFAULT_REGION=ca-central-1
-
(Optional) Wenn Sie noch keinen ECS Amazon-Cluster mit dem EC2 Starttyp haben, auf dem Sie den Memcached-Beispiel-Workload und CloudWatch -Agenten installieren möchten, können Sie einen erstellen, indem Sie den folgenden Befehl eingeben.
ecs-cli up --capability-iam --size 1 \ --instance-type t3.medium \ --cluster $ECS_CLUSTER_NAME \ --region $AWS_REGION
Das erwartete Ergebnis dieses Befehls lautet wie folgt:
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.
Installieren der Memcached-Beispiel-Workload
So installieren Sie eine Memcached-Beispiel-Workload, die Prometheus-Metriken verfügbar macht
-
Laden Sie die AWS CloudFormation Memcached-Vorlage herunter, indem Sie den folgenden Befehl eingeben.
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
-
Geben Sie die folgenden IAM Befehle ein, um die Rollennamen festzulegen, die für Memcached erstellt werden sollen.
MEMCACHED_ECS_TASK_ROLE_NAME=memcached-prometheus-demo-ecs-task-role-name MEMCACHED_ECS_EXECUTION_ROLE_NAME=memcached-prometheus-demo-ecs-execution-role-name
-
Installieren Sie die Memcached-Beispiel-Workload, indem Sie den folgenden Befehl eingeben. Dieses Beispiel installiert die Workload im
host
-Netzwerkmodus.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
Der AWS CloudFormation Stack erstellt vier Ressourcen:
-
Eine ECS Aufgabenrolle
-
Eine ECS Rolle bei der Ausführung von Aufgaben
-
Eine Memcached-Aufgabendefinition
-
Ein Memcached-Service
In der Memcached-Aufgabendefinition werden zwei Container definiert:
-
Der primäre Container führt eine einfache Memcached-Anwendung aus und öffnet Port 11211 für den Zugriff.
-
Der andere Container führt den OSS Redis-Exportprozess aus, um die Prometheus-Metriken auf Port 9150 verfügbar zu machen. Dies ist der Container, der vom Agenten entdeckt und gescrapt werden muss. CloudWatch
Konfigurieren Sie den CloudWatch Agenten für das Scraping von Memcached Prometheus-Metriken
So konfigurieren Sie den CloudWatch Agenten für das Scrapen von Memcached Prometheus-Metriken
-
Laden Sie die aktuelle Version der
cwagent-ecs-prometheus-metric-for-awsvpc.yaml
herunter, indem Sie einen der folgenden Befehle eingeben.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
-
Öffnen Sie die Datei mit einem Texteditor und finden Sie die vollständige CloudWatch Agentenkonfiguration hinter dem Schlüssel im
value
Abschnitt.resource:CWAgentConfigSSMParameter
Fügen Sie dann im
ecs_service_discovery
-Abschnitt die folgende Konfiguration zumtask_definition_list
-Abschnitt hinzu.{ "sd_job_name": "ecs-memcached", "sd_metrics_ports": "9150", "sd_task_definition_arn_pattern": ".*:task-definition/memcached-prometheus-demo.*:[0-9]+" },
Für den
metric_declaration
-Abschnitt lässt die Standardeinstellung keine Memcached-Metriken zu. Fügen Sie den folgenden Abschnitt hinzu, um Memcached-Metriken zuzulassen. Beachten Sie unbedingt das vorhandene Einrückungsmuster.{ "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$" ] },
-
Wenn Sie den CloudWatch Agenten bereits im ECS Amazon-Cluster von bereitgestellt haben AWS CloudFormation, können Sie einen Änderungssatz erstellen, indem Sie die folgenden Befehle eingeben.
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 Öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation
. -
Überprüfen des neu erstellten Änderungssatzes
memcached-scraping-support
. Sie sollten sehen, dass eine Änderung auf dieCWAgentConfigSSMParameter
-Ressource angewendet wurde. Führen Sie das Changeset aus und starten Sie die CloudWatch Agentenaufgabe neu, indem Sie die folgenden Befehle eingeben.aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 0 \ --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \ --region $AWS_REGION
-
Warten Sie etwa 10 Sekunden und geben Sie den folgenden Befehl ein.
aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 1 \ --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \ --region $AWS_REGION
-
Wenn Sie den CloudWatch Agenten mit der Erfassung von Prometheus-Metriken für den Cluster zum ersten Mal installieren, geben Sie bitte die folgenden Befehle ein:
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
Anzeigen Ihrer Memcached-Metriken
Dieses Tutorial sendet die folgenden Metriken an den ECS/ContainerInsights/PrometheusNamespace in. CloudWatch Sie können die CloudWatch Konsole verwenden, um die Metriken in diesem Namespace zu sehen.
Metrikname | Dimensionen |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Anmerkung
Die Werte der command-Dimension können delete
, get
, cas
, set
, decr
, touch
, incr
, oder flush
sein.
Die Werte der -Dimension können , hit
, miss
, oder badval
sein.
Sie können auch ein CloudWatch Dashboard für Ihre Memcached Prometheus-Metriken erstellen.
So erstellen Sie ein Dashboard für Memcached-Prometheus-Metriken
-
Erstellen Sie Umgebungsvariablen und ersetzen Sie die folgenden Werte entsprechend Ihrer Bereitstellung.
DASHBOARD_NAME=
your_memcached_cw_dashboard_name
ECS_TASK_DEF_FAMILY=memcached-prometheus-demo-$ECS_CLUSTER_NAME-EC2-$MEMCACHED_ECS_NETWORK_MOD -
Verwenden Sie den folgenden Befehl, um das Dashboard zu erstellen.
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