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'autodiscovery sui 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 di Amazon ECS e EC2 Amazon per recuperare i metadati delle attività in esecuzione nel cluster di destinazione. ECS ECS
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
-
ECSdefinizione delle attività, individuazione dei servizi basata su espressioni ARN regolari
-
ECSnome di servizio rilevamento del servizio basato su espressioni regolari
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
ECSesempi di configurazione del service discovery
Questa sezione include esempi che dimostrano l'individuazione dei ECS servizi.
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 ECS delle attività 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 ECS attività ha un'etichetta ECS_PROMETHEUS_EXPORTER_PORT
docker, l' CloudWatch 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 basata su etichette Docker. THe CloudWatch l'agente interrogherà i metadati ECS delle attività ogni 15 secondi e scriverà le destinazioni scoperte nel /tmp/cwagent_ecs_auto_sd.yaml
file all'interno del contenitore dell'agente. 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 consente l'individuazione dei servizi basati sulle espressioni ARN regolari per la definizione delle ECS attività. L' CloudWatch agente interrogherà i metadati ECS delle attività ogni cinque minuti e scriverà le destinazioni rilevate nel /tmp/cwagent_ecs_auto_sd.yaml
file all'interno del contenitore dell'agente. CloudWatch
Sono definite due sezioni di espressione ARN regolare per la definizione delle attività:
-
Per la prima sezione, le ECS attività incluse
javajmx
nella definizione delle attività ECS ARN vengono filtrate per la scansione della porta del contenitore. Se i contenitori all'interno di queste ECS attività espongono la porta container su 9404 o 9406, la porta host mappata insieme all'IP privato del contenitore vengono utilizzati per creare gli obiettivi 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
-
Nella seconda sezione, le attività incluse
appmesh
nella definizione delle ECS attività ARN e conversion
of vengono filtrate per la ECS scansione della porta del:23
contenitore. 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 ECS attività espone la porta container su 9404 o 9406, la porta host mappata insieme all'IP privato del contenitore vengono utilizzati per creare gli obiettivi 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 dei servizi basati sulle espressioni regolari dei nomi di servizio. ECS L' CloudWatch agente interrogherà i metadati ECS dei servizi ogni cinque minuti e scriverà le destinazioni rilevate nel /tmp/cwagent_ecs_auto_sd.yaml
file all'interno del contenitore dell'agente. CloudWatch
Sono definite due sezioni di espressioni regolari del nome del servizio:
-
Nella prima sezione, le ECS attività associate ai ECS servizi i cui nomi corrispondono all'espressione regolare
^nginx-.*
vengono filtrate per la scansione delle porte del contenitore. Se i contenitori all'interno di queste ECS attività espongono la porta container su 9113, la porta host mappata insieme all'IP privato del contenitore vengono utilizzati per creare gli obiettivi 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 nella seconda sezione, ECS le attività associate ai ECS servizi i cui nomi corrispondono all'espressione
.*haproxy-service.*
regolare vengono filtrate per la scansione delle porte del contenitore. 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.*" } ] }
Questo esempio abilita entrambe le modalità di rilevamento dei servizi. ECS L' CloudWatch agente interrogherà i metadati ECS delle attività ogni 90 secondi e scriverà le destinazioni rilevate nel /tmp/cwagent_ecs_auto_sd.yaml
file all'interno del contenitore dell'agente. CloudWatch
Per la configurazione dell'individuazione del servizio basata su Docker:
-
Le ECS attività con etichetta docker
MY_PROMETHEUS_EXPORTER_PORT_LABEL
verranno filtrate per la scansione delle porte 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 definizione dell'ECSattività, la configurazione del rilevamento dei servizi basata sulle espressioni ARN regolari:
-
Le ECS attività incluse
memcached
nella definizione dell'ECSattività ARN vengono filtrate per la scansione delle porte dei 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.