Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemple de NGINX charge de travail pour les ECS clusters Amazon
L'exportateur NGINX Prometheus peut extraire et exposer les NGINX données sous forme de métriques Prometheus. Cet exemple utilise l'exportateur en tandem avec le service de proxy NGINX inverse pour AmazonECS.
Pour plus d'informations sur l'exportateur NGINX Prometheus, nginx-prometheus-exporter
L' CloudWatch agent qui prend en charge Prometheus analyse les métriques Prometheus en NGINX fonction de la configuration de découverte de services dans le cluster Amazon. ECS Vous pouvez configurer l'exportateur NGINX Prometheus pour exposer les métriques sur un port ou un chemin différent. Si vous modifiez le port ou le chemin, mettez à jour la ecs_service_discovery
section dans le fichier de configuration de l' CloudWatch agent.
Installation de l'exemple de charge de travail du proxy NGINX inverse pour les ECS clusters Amazon
Procédez comme suit pour installer l'exemple de charge de travail du proxy NGINX inverse.
Création des images Docker
Pour créer les images Docker pour l'exemple de charge de NGINX travail du proxy inverse
-
Téléchargez le dossier suivant depuis le dépôt du proxy NGINX inverse : https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/
. -
Recherchez le répertoire
app
et créez une image à partir de ce répertoire :docker build -t web-server-app ./
path-to-app-directory
-
Créez une image personnalisée pourNGINX. Pour commencer, créez un répertoire avec les deux fichiers suivants :
-
Un exemple de fichier Docker :
FROM nginx COPY nginx.conf /etc/nginx/nginx.conf
-
Un
nginx.conf
fichier, modifié depuis https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/: events { worker_connections 768; } http { # Nginx will handle gzip compression of responses from the app server gzip on; gzip_proxied any; gzip_types text/plain application/json; gzip_min_length 1000; server{ listen 8080; location /stub_status { stub_status on; } } server { listen 80; # Nginx will reject anything not matching /api location /api { # Reject requests with unsupported HTTP method if ($request_method !~ ^(GET|POST|HEAD|OPTIONS|PUT|DELETE)$) { return 405; } # Only requests matching the whitelist expectations will # get sent to the application server proxy_pass http://app:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_bypass $http_upgrade; } } }
Note
stub_status
doit être activé sur le même port sur lequelnginx-prometheus-exporter
est configuré pour récupérer les métriques. Dans notre exemple de définition de tâche,nginx-prometheus-exporter
est configuré pour extraire les métriques depuis le port 8080.
-
-
Créez une image à partir des fichiers de votre nouveau répertoire :
docker build -t nginx-reverse-proxy ./
path-to-your-directory
-
Téléchargez vos nouvelles images dans un répertoire d'images pour une utilisation ultérieure.
Créez la définition de tâche à exécuter NGINX et l'application de serveur Web dans Amazon ECS
Ensuite, vous configurez la définition de tâche.
Cette définition de tâche permet de collecter et d'exporter les métriques NGINX Prometheus. Le NGINX conteneur suit les entrées de l'application et expose ces données au port 8080, tel que défini. nginx.conf
Le conteneur d'exportation NGINX Prometheus récupère ces indicateurs et les envoie au port 9113, pour les utiliser dans. CloudWatch
Pour configurer la définition de tâche pour l'NGINXexemple de ECS charge de travail Amazon
-
Créez un JSON fichier de définition de tâche avec le contenu suivant. Remplacez
your-customized-nginx-iamge
avec l'image URI pour votre NGINX image personnalisée, et remplacezyour-web-server-app-image
avec l'image de URI l'image de votre application de serveur Web.{ "containerDefinitions": [ { "name": "nginx", "image": "
your-customized-nginx-image
", "memory": 256, "cpu": 256, "essential": true, "portMappings": [ { "containerPort": 80, "protocol": "tcp" } ], "links": [ "app" ] }, { "name": "app", "image": "your-web-server-app-image
", "memory": 256, "cpu": 256, "essential": true }, { "name": "nginx-prometheus-exporter", "image": "docker.io/nginx/nginx-prometheus-exporter:0.8.0", "memory": 256, "cpu": 256, "essential": true, "command": [ "-nginx.scrape-uri", "http://nginx:8080/stub_status" ], "links":[ "nginx" ], "portMappings":[ { "containerPort": 9113, "protocol": "tcp" } ] } ], "networkMode": "bridge", "placementConstraints": [], "family": "nginx-sample-stack" } -
Enregistrez la définition de tâche en saisissant la commande suivante.
aws ecs register-task-definition --cli-input-json file://
path-to-your-task-definition-json
-
Créez un service pour exécuter la tâche en saisissant la commande suivante :
Veillez à ne pas modifier le nom du service. Nous exécuterons un service d' CloudWatch agent utilisant une configuration qui recherche les tâches en utilisant les modèles de noms des services qui les ont démarrées. Par exemple, pour que l' CloudWatch agent trouve la tâche lancée par cette commande, vous pouvez spécifier la valeur de
sd_service_name_pattern
to be^nginx-service$
. La section suivante fournit plus de détails.aws ecs create-service \ --cluster
your-cluster-name
\ --service-name nginx-service \ --task-definition nginx-sample-stack:1 \ --desired-count 1
Configurer l' CloudWatch agent pour récupérer les métriques de NGINX Prometheus
La dernière étape consiste à configurer l' CloudWatch agent pour qu'il récupère les NGINX métriques. Dans cet exemple, l' CloudWatch agent découvre la tâche via le modèle de nom de service et le port 9113, où l'exportateur expose les métriques Prometheus pour. NGINX Une fois la tâche découverte et les métriques disponibles, l' CloudWatch agent commence à publier les métriques collectées dans le flux de log nginx-prometheus-exporter.
Pour configurer l' CloudWatch agent afin de récupérer les métriques NGINX
-
Téléchargez la dernière version du YAML fichier nécessaire en saisissant la commande suivante.
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-bridge-host.yaml
-
Ouvrez le fichier dans un éditeur de texte et trouvez la configuration complète de l' CloudWatch agent dans la
value
clé de la section.resource:CWAgentConfigSSMParameter
Ensuite, dans la sectionecs_service_discovery
, ajoutez la sectionservice_name_list_for_tasks
suivante."service_name_list_for_tasks": [ { "sd_job_name": "nginx-prometheus-exporter", "sd_metrics_path": "/metrics", "sd_metrics_ports": "9113", "sd_service_name_pattern": "^nginx-service$" } ],
-
Dans le même fichier, ajoutez la section suivante dans la
metric_declaration
section pour autoriser NGINX les métriques. Veillez à suivre le modèle d'indentation existant.{ "source_labels": ["job"], "label_matcher": ".*nginx.*", "dimensions": [["ClusterName", "TaskDefinitionFamily", "ServiceName"]], "metric_selectors": [ "^nginx_.*$" ] },
-
Si l' CloudWatch agent n'est pas déjà déployé dans ce cluster, passez à l'étape 8.
Si l' CloudWatch agent est déjà déployé dans le ECS cluster Amazon à l'aide de AWS CloudFormation, vous pouvez créer un ensemble de modifications en saisissant les commandes suivantes :
ECS_CLUSTER_NAME=
your_cluster_name
AWS_REGION=your_aws_region
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 nginx-scraping-support Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.
-
Passez en revue le nouvel ensemble de modifications. nginx-scraping-support Vous devriez voir une modification appliquée à la CWAgentConfigSSMParameterressource. Exécutez le changeset et redémarrez la tâche de l' CloudWatch agent en saisissant la commande suivante :
aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 0 \ --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \ --region $AWS_REGION
-
Patientez environ 10 secondes, puis saisissez la commande suivante.
aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 1 \ --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \ --region $AWS_REGION
-
Si vous installez l' CloudWatch agent avec la collecte de métriques Prometheus sur le cluster pour la première fois, entrez les commandes suivantes.
ECS_CLUSTER_NAME=
your_cluster_name
AWS_REGION=your_aws_region
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-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
Afficher vos NGINX statistiques et vos journaux
Vous pouvez désormais consulter les NGINX statistiques collectées.
Pour consulter les mesures relatives à votre échantillon de NGINX charge de travail
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans la région où votre cluster s'exécute, choisissez Metrics (Métriques) dans le volet de navigation de gauche. Trouvez l'espace de noms ContainerInsights/Prometheus pour voir les métriques.
-
Pour voir les événements CloudWatch Logs, choisissez Log groups dans le volet de navigation. Les événements se trouvent dans le groupe de journaux /aws/containerinsights/
your_cluster_name
/prometheus, dans le flux de lognginx-prometheus-exporter
.