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à.
Guida dettagliata per l'individuazione automatica dei cluster Amazon ECS
Prometheus offre dozzine di meccanismi dinamici di individuazione dei servizi, come descritto in <scrape_config>
Quando il rilevamento del servizio Amazon ECS Prometheus è abilitato, l'agente effettua periodicamente CloudWatch le seguenti chiamate API ai frontend Amazon ECS e EC2 Amazon per recuperare i metadati delle attività ECS in esecuzione nel cluster ECS di destinazione.
EC2:DescribeInstances ECS:ListTasks ECS:ListServices ECS:DescribeContainerInstances ECS:DescribeServices ECS:DescribeTasks ECS:DescribeTaskDefinition
I metadati vengono utilizzati dall' CloudWatch agente per scansionare i target Prometheus all'interno del cluster ECS. L' CloudWatch agente supporta tre modalità di rilevamento dei servizi:
-
Individuazione del servizio basata sull'etichetta Docker del container
-
Individuazione del servizio basata su espressioni regolari dell'ARN della definizione dell'attività ECS
-
Individuazione del servizio basato su espressioni regolari del nome del servizio ECS
Tutte le modalità possono essere utilizzate insieme. CloudWatch l'agente deduplica gli obiettivi rilevati in base a:. {private_ip}:{port}/{metrics_path}
Tutte le destinazioni rilevate vengono scritte in un file di risultati specificato dal campo di sd_result_file
configurazione all'interno del contenitore dell' CloudWatch agente. Di seguito è riportato un file di esempio:
- targets: - 10.6.1.95:32785 labels: __metrics_path__: /metrics ECS_PROMETHEUS_EXPORTER_PORT: "9406" ECS_PROMETHEUS_JOB_NAME: demo-jar-ec2-bridge-dynamic ECS_PROMETHEUS_METRICS_PATH: /metrics InstanceType: t3.medium LaunchType: EC2 SubnetId: subnet-123456789012 TaskDefinitionFamily: demo-jar-ec2-bridge-dynamic-port TaskGroup: family:demo-jar-ec2-bridge-dynamic-port TaskRevision: "7" VpcId: vpc-01234567890 container_name: demo-jar-ec2-bridge-dynamic-port job: demo-jar-ec2-bridge-dynamic - targets: - 10.6.3.193:9404 labels: __metrics_path__: /metrics ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_B: "9404" ECS_PROMETHEUS_JOB_NAME: demo-tomcat-ec2-bridge-mapped-port ECS_PROMETHEUS_METRICS_PATH: /metrics InstanceType: t3.medium LaunchType: EC2 SubnetId: subnet-123456789012 TaskDefinitionFamily: demo-tomcat-ec2-bridge-mapped-port TaskGroup: family:demo-jar-tomcat-bridge-mapped-port TaskRevision: "12" VpcId: vpc-01234567890 container_name: demo-tomcat-ec2-bridge-mapped-port job: demo-tomcat-ec2-bridge-mapped-port
Puoi integrare direttamente questo file di risultati con l'individuazione dei servizi basata su file Prometheus. Per ulteriori informazioni sull'individuazione dei servizi basata su file Prometheus, consulta <file_sd_config>
Supponiamo che il file dei risultati sia scritto su /tmp/cwagent_ecs_auto_sd.yaml
. La seguente configurazione di scraping Prometheus lo consumerà.
global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: cwagent-ecs-file-sd-config sample_limit: 10000 file_sd_configs: - files: [ "/tmp/cwagent_ecs_auto_sd.yaml" ]
L' CloudWatch agente aggiunge anche le seguenti etichette aggiuntive per le destinazioni scoperte.
-
container_name
-
TaskDefinitionFamily
-
TaskRevision
-
TaskGroup
-
StartedBy
-
LaunchType
-
job
-
__metrics_path__
-
Etichette Docker
Quando il cluster ha il tipo di EC2 avvio, vengono aggiunte le seguenti tre etichette.
-
InstanceType
-
VpcId
-
SubnetId
Nota
Le etichette Docker che non corrispondono all'espressione regolare [a-zA-Z_][a-zA-Z0-9_]*
vengono filtrate. Questo corrisponde alle convenzioni Prometheus elencate in label_name
in Configuration file
Esempi di configurazione dell'individuazione dei servizi ECS
In questa sezione sono inclusi esempi che illustrano l'individuazione dei servizi ECS.
Esempio 1
"ecs_service_discovery": { "sd_frequency": "1m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { } }
Questo esempio abilita l'individuazione dei servizi basata su etichette Docker. L' CloudWatch agente interrogherà i metadati delle attività ECS una volta al minuto e scriverà le destinazioni rilevate nel /tmp/cwagent_ecs_auto_sd.yaml
file all'interno del contenitore dell'agente. CloudWatch
Il valore predefinito di sd_port_label
nella sezione docker_label
è ECS_PROMETHEUS_EXPORTER_PORT
. Se un contenitore in esecuzione nelle attività ECS ha un'etichetta ECS_PROMETHEUS_EXPORTER_PORT
docker, CloudWatch l'agente utilizza il suo valore container port
per scansionare tutte le porte esposte del contenitore. Se esiste una corrispondenza, la porta host mappata più l'IP privato del container vengono utilizzati per costruire la destinazione dell'esportatore Prometheus nel seguente formato: private_ip:host_port
.
Il valore predefinito di sd_metrics_path_label
nella sezione docker_label
è ECS_PROMETHEUS_METRICS_PATH
. Se il container ha questa etichetta Docker, il suo valore verrà utilizzato come __metrics_path__
. Se il container non ha questa etichetta, viene utilizzato il valore predefinito /metrics
.
Il valore predefinito di sd_job_name_label
nella sezione docker_label
è job
. Se il container ha questa etichetta Docker, il suo valore verrà aggiunto come una delle etichette per la destinazione per sostituire il nome del processo predefinito specificato nella configurazione Prometheus. Il valore di questa etichetta docker viene utilizzato come nome del flusso di log nel gruppo CloudWatch Logs log.
Esempio 2
"ecs_service_discovery": { "sd_frequency": "15s", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { "sd_port_label": "ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_A", "sd_job_name_label": "ECS_PROMETHEUS_JOB_NAME" } }
Questo esempio abilita l'individuazione dei servizi basati su etichette docker. THe CloudWatch l'agente interrogherà i metadati delle attività ECS ogni 15 secondi e scriverà le destinazioni rilevate nel file all'interno del contenitore dell'agente. /tmp/cwagent_ecs_auto_sd.yaml
CloudWatch I container con un'etichetta Docker di ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_A
verranno scansionati. Il valore dell'etichetta Docker ECS_PROMETHEUS_JOB_NAME
viene usato come nome del processo.
Esempio 3
"ecs_service_discovery": { "sd_frequency": "5m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "task_definition_list": [ { "sd_job_name": "java-prometheus", "sd_metrics_path": "/metrics", "sd_metrics_ports": "9404; 9406", "sd_task_definition_arn_pattern": ".*:task-definition/.*javajmx.*:[0-9]+" }, { "sd_job_name": "envoy-prometheus", "sd_metrics_path": "/stats/prometheus", "sd_container_name_pattern": "^envoy$", "sd_metrics_ports": "9901", "sd_task_definition_arn_pattern": ".*:task-definition/.*appmesh.*:23" } ] }
Questo esempio abilita l'individuazione del servizio basata su espressioni regolari dell'ARN della definizione dell'attività ECS. L' CloudWatch agente interrogherà i metadati delle attività ECS ogni cinque minuti e scriverà le destinazioni rilevate nel file all'interno del contenitore dell'agente. /tmp/cwagent_ecs_auto_sd.yaml
CloudWatch
Sono definite due sezioni di espressione regolare dell'ARN di definizione dell'attività:
-
Per la prima sezione, le attività ECS con
javajmx
nel loro ARN di definizione dell'attività ECS vengono filtrati per la scansione della porta del container. Se i contenitori all'interno di queste attività ECS espongono la porta del container su 9404 o 9406, la porta host mappata insieme all'IP privato del container vengono utilizzati per creare le destinazioni dell'esportatore Prometheus. Il valore disd_metrics_path
è impostato da__metrics_path__
a/metrics
. Quindi l' CloudWatch agente estrarrà le metriche di Prometheus, le metriche eliminate verranno inviate al flussoprivate_ip:host_port/metrics
di log in Logs nel gruppo dijava-prometheus
log. CloudWatch/aws/ecs/containerinsights/cluster_name/prometheus
-
Per la seconda sezione, le attività ECS con
appmesh
nel loro ARN di definizione dell'attività ECS e conversion
di:23
vengono filtrati per la scansione della porta del container. Per i contenitori con il nomeenvoy
che espongono la porta del container su9901
, la porta host mappata insieme all'IP privato del container vengono utilizzati per creare i target dell'esportatore Prometheus. Il valore all'interno di queste attività ECS espongono la porta del container su 9404 o 9406, la porta host mappata insieme all'IP privato del container vengono utilizzati per creare le destinazioni dell'esportatore Prometheus. Il valore disd_metrics_path
è impostato da__metrics_path__
a/stats/prometheus
. Quindi l' CloudWatchagente raccoglierà le metriche di Prometheus e le invierà alprivate_ip:host_port/stats/prometheus
flusso di log in Logs nel gruppo dienvoy-prometheus
log. CloudWatch/aws/ecs/containerinsights/cluster_name/prometheus
Esempio 4
"ecs_service_discovery": { "sd_frequency": "5m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "service_name_list_for_tasks": [ { "sd_job_name": "nginx-prometheus", "sd_metrics_path": "/metrics", "sd_metrics_ports": "9113", "sd_service_name_pattern": "^nginx-.*" }, { "sd_job_name": "haproxy-prometheus", "sd_metrics_path": "/stats/metrics", "sd_container_name_pattern": "^haproxy$", "sd_metrics_ports": "8404", "sd_service_name_pattern": ".*haproxy-service.*" } ] }
Questo esempio abilita l'individuazione del servizio basata su espressioni regolari del nome del servizio ECS. L' CloudWatch agente interrogherà i metadati dei servizi ECS ogni cinque minuti e scriverà le destinazioni rilevate nel file all'interno del contenitore dell'agente. /tmp/cwagent_ecs_auto_sd.yaml
CloudWatch
Sono definite due sezioni di espressioni regolari del nome del servizio:
-
Per la prima sezione, le attività ECS associate ai servizi ECS con nomi corrispondenti all'espressione regolare
^nginx-.*
vengono filtrati per la scansione della porta del container. Se i contenitori all'interno di queste attività ECS espongono la porta del container su 9113, la porta host mappata insieme all'IP privato del container vengono utilizzati per creare le destinazioni dell'esportatore Prometheus. Il valore disd_metrics_path
è impostato da__metrics_path__
a/metrics
. Quindi l' CloudWatch agente estrarrà le metriche di Prometheus e le metriche eliminateprivate_ip:host_port/metrics
verranno inviate al flusso di log in Logs nel gruppo dinginx-prometheus
log. CloudWatch/aws/ecs/containerinsights/cluster_name/prometheus
-
o per la seconda sezione, le attività ECS associate ai servizi ECS con nomi corrispondenti all'espressione regolare
.*haproxy-service.*
vengono filtrati per la scansione della porta del container. Per i contenitori con il nomehaproxy
che espongono la porta del container su 8404, la porta host mappata insieme all'IP privato del container vengono utilizzati per creare i target dell'esportatore Prometheus. Il valore disd_metrics_path
è impostato da__metrics_path__
a/stats/metrics
. Quindi l' CloudWatch agente estrarrà le metriche di Prometheus e le metriche eliminateprivate_ip:host_port/stats/metrics
verranno inviate al flusso di log in Logs nel gruppo dihaproxy-prometheus
log. CloudWatch/aws/ecs/containerinsights/cluster_name/prometheus
Esempio 5
"ecs_service_discovery": { "sd_frequency": "1m30s", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { "sd_port_label": "MY_PROMETHEUS_EXPORTER_PORT_LABEL", "sd_metrics_path_label": "MY_PROMETHEUS_METRICS_PATH_LABEL", "sd_job_name_label": "MY_PROMETHEUS_METRICS_NAME_LABEL" } "task_definition_list": [ { "sd_metrics_ports": "9150", "sd_task_definition_arn_pattern": "*memcached.*" } ] }
In questo esempio vengono abilitate entrambe le modalità di individuazione dei servizi ECS. L' CloudWatch agente interrogherà i metadati delle attività ECS ogni 90 secondi e scriverà le destinazioni rilevate nel file all'interno del contenitore dell'agente. /tmp/cwagent_ecs_auto_sd.yaml
CloudWatch
Per la configurazione dell'individuazione del servizio basata su Docker:
-
Le attività ECS con etichetta Docker
MY_PROMETHEUS_EXPORTER_PORT_LABEL
verranno filtrate per la scansione della porta Prometheus. La porta del container Prometheus di destinazione è specificata dal valore dell'etichettaMY_PROMETHEUS_EXPORTER_PORT_LABEL
. -
Il valore dell'etichetta Docker
MY_PROMETHEUS_EXPORTER_PORT_LABEL
viene utilizzato per__metrics_path__
. Se il container non ha questa etichetta Docker, viene utilizzato il valore predefinito/metrics
. -
Il valore dell'etichetta Docker
MY_PROMETHEUS_EXPORTER_PORT_LABEL
viene usato come etichetta del processo. Se il container non dispone di questa etichetta Docker, viene utilizzato il nome del processo definito nella configurazione Prometheus.
Per la configurazione dell'individuazione del servizio basata su espressioni regolari dell'ARN della definizione dell'attività ECS:
-
Le attività ECS con
memcached
nell'ARN di definizione dell'attività ECS vengono filtrati per la scansione della porta del container. La porta del container Prometheus di destinazione è 9150 come definito dasd_metrics_ports
. Viene utilizzato il percorso dei parametri predefinito/metrics
. Viene utilizzato il nome del processo definito nella configurazione Prometheus.