Scraping di ulteriori origini Prometheus e importazione di tali parametri
L'agente CloudWatch con monitoraggio Prometheus ha bisogno di due configurazioni per lo scraping dei parametri Prometheus. Una è per le configurazioni standard Prometheus come documentato in <scrape_config>
Per i cluster Amazon ECS, le configurazioni sono integrate con il Parameter Store di AWS Systems Manager dai segreti nella definizione dell'attività Amazon ECS:
-
Il segreto
PROMETHEUS_CONFIG_CONTENTè per la configurazione di scraping di Prometheus. -
Il segreto
CW_CONFIG_CONTENTè per la configurazione dell'agente CloudWatch.
Per recuperare altre origini di parametri Prometheus e importarle in CloudWatch, modifica sia la configurazione di scraping di Prometheus che la configurazione dell'agente CloudWatch, quindi reimplementa l'agente con la configurazione aggiornata.
Requisiti del gruppo di sicurezza VPC
Le regole di ingresso dei gruppi di sicurezza per i carichi di lavoro Prometheus devono aprire le porte Prometheus all'agente CloudWatch per lo scraping dei parametri Prometheus dall'IP privato.
Le regole in uscita del gruppo di sicurezza per l'agente CloudWatch devono consentire all'agente CloudWatch di connettersi alla porta dei carichi di lavoro Prometheus tramite IP privato.
Configurazione di scraping di Prometheus
L'agente CloudWatch supporta le configurazioni di scraping standard di Prometheus come documentato <scrape_config>
global: scrape_interval: 1m scrape_timeout: 10s
-
scrape_interval: definisce con quale frequenza recuperare le destinazioni.
-
scrape_timeout: definisce quanto tempo attendere prima che una richiesta di scrape scada.
È inoltre possibile definire valori diversi per queste impostazioni a livello di processo, per ignorare le configurazioni globali.
Attività di scraping di Prometheus
I file YAML dell'agente CloudWatch hanno già alcuni processi di scraping predefiniti configurati. Ad esempio, nei file YAML per Amazon ECS ad esempio cwagent-ecs-prometheus-metric-for-bridge-host.yaml, i processi di scraping predefiniti sono configurati nella sezione ecs_service_discovery.
"ecs_service_discovery": { "sd_frequency": "1m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { }, "task_definition_list": [ { "sd_job_name": "ecs-appmesh-colors", "sd_metrics_ports": "9901", "sd_task_definition_arn_pattern": ".*:task-definition\/.*-ColorTeller-(white):[0-9]+", "sd_metrics_path": "/stats/prometheus" }, { "sd_job_name": "ecs-appmesh-gateway", "sd_metrics_ports": "9901", "sd_task_definition_arn_pattern": ".*:task-definition/.*-ColorGateway:[0-9]+", "sd_metrics_path": "/stats/prometheus" } ] }
Ciascuna di queste destinazioni predefinite viene recuperata e i parametri vengono inviate a CloudWatch negli eventi di log utilizzando Embedded Metric Format. Per ulteriori informazioni, consulta la pagina Incorporamento dei parametri nei log.
Gli eventi di log dei cluster Amazon ECS sono archiviati nel gruppo di log /aws/ecs/containerinsights/cluster_name/prometheus.
Ogni processo di scraping è contenuto in un flusso di log diverso in questo gruppo di log.
Per aggiungere una nuova destinazione di scraping, aggiungi una nuova voce nella sezione task_definition_list alla sezione ecs_service_discovery del file YAML e riavvia l'agente. Per un esempio di questo processo, vedere Esercitazione per l'aggiunta di nuove destinazioni di scraping di Prometheus: parametri del server API Prometheus.
Configurazione dell'agente CloudWatch per Prometheus
Il file di configurazione dell'agente CloudWatch ha la sezione prometheus in metrics_collected per la configurazione di scraping di Prometheus. Include le opzioni di configurazione seguenti:
-
cluster_name: specifica il nome del cluster da aggiungere come etichetta nell'evento log. Questo campo è facoltativo. Se lo ometti, l'agente può rilevare il nome del cluster Amazon ECS.
-
log_group_name: specifica il nome del gruppo di log per i parametri Prometheus sottoposti a scraping. Questo campo è facoltativo. Se lo ometti, CloudWatch usa /aws/ecs/containerinsights/
cluster_name/prometheus per i log dei cluster Amazon ECS. -
prometheus_config_path: specifica il percorso del file di configurazione di scraping di Prometheus. Se il valore di questo campo inizia con
env:, il contenuto del file di configurazione di scraping di Prometheus verrà recuperato dalla variabile di ambiente del container. Non modificare questo campo. -
ecs_service_discovery: è la sezione per specificare le configurazioni delle funzioni di individuazione automatica delle destinazioni di Amazon ECS Prometheus. Sono supportate due modalità per individuare le destinazioni Prometheus: individuazione basata sull'etichetta Docker del container o individuazione basata sull'espressione regolare dell'ARN della definizione dell'attività di Amazon ECS. È possibile utilizzare le due modalità insieme e l'agente CloudWatch deduplicerà le destinazioni rilevate in base a: {private_ip}:{port}/{metrics_path}.
La sezione
ecs_service_discoverypuò contenere i seguenti campi:-
sd_frequencyè la frequenza di individuazione degli elementi di esportazione di Prometheus. Specifica un numero e un suffisso di unità. Ad esempio,1mper una volta al minuto o30sper una volta ogni 30 secondi. I suffissi di unità validi sonons,us,ms,s,meh.Questo campo è facoltativo. Il valore predefinito è 60 secondi (1 minuto).
-
sd_target_clusterè il nome del cluster Amazon ECS di destinazione per l'individuazione automatica. Questo campo è facoltativo. L'impostazione predefinita è il nome del cluster Amazon ECS in cui è installato l'agente CloudWatch. -
sd_cluster_regionè la regione del cluster Amazon ECS di destinazione. Questo campo è facoltativo. L'impostazione predefinita è la regione del cluster Amazon ECS in cui è installato l'agente CloudWatch. -
sd_result_fileè il percorso del file YAML per i risultati di destinazione di Prometheus. La configurazione di scraping di Prometheus farà riferimento a questo file. -
docker_labelè una sezione facoltativa che è possibile utilizzare per specificare la configurazione per l'individuazione dei servizi basati su etichette Docker. Se ometti questa sezione, l'individuazione basata sull'etichetta Docker non viene utilizzata. Questa sezione può contenere i seguenti campi:-
sd_port_labelè il nome dell'etichetta Docker del container che specifica la porta del container per i parametri Prometheus. Il valore predefinito èECS_PROMETHEUS_EXPORTER_PORT. Se il container non dispone di questa etichetta Docker, l'agente CloudWatch lo salterà. -
sd_metrics_path_labelè il nome dell'etichetta Docker del container che specifica il percorso dei parametri di Prometheus. Il valore predefinito èECS_PROMETHEUS_METRICS_PATH. Se il container non dispone di questa etichetta Docker, l'agente assume il percorso predefinito/metrics. -
sd_job_name_labelè il nome dell'etichetta Docker del container che specifica il nome del processo di scraping di Prometheus. Il valore predefinito èjob. Se il container non dispone di questa etichetta Docker, l'agente CloudWatch utilizza il nome del processo nella configurazione di scraping di Prometheus.
-
-
task_definition_listè una sezione facoltativa che è possibile utilizzare per specificare la configurazione per l'individuazione dei servizi basati sulla definizione dell'attività. Se ometti questa sezione, l'individuazione basata sulla definizione dell'attività non viene utilizzata. Questa sezione può contenere i seguenti campi:-
sd_task_definition_arn_patternè il modello da utilizzare per specificare le definizioni delle attività Amazon ECS da individuare. Questa è un'espressione regolare. -
sd_metrics_portselenca gli elementi containerPort per i parametri di Prometheus. Separa gli elementi containerPort con il punto e virgola. -
sd_container_name_patternspecifica i nomi dei container dell'attività di Amazon ECS. Questa è un'espressione regolare. -
sd_metrics_pathspecifica il percorso del parametro Prometheus. Se ometti questa opzione, l'agente assume il percorso predefinito/metrics -
sd_job_namespecifica il nome del processo di scraping di Prometheus. Se ometti questo campo, l'agente CloudWatch utilizza il nome del processo nella configurazione di scraping di Prometheus.
-
-
service_name_list_for_tasksè una sezione facoltativa che puoi utilizzare per specificare la configurazione per l'individuazione basata sul nome del servizio. Se ometti questa sezione, l'individuazione basata sul nome del servizio non viene utilizzata. Questa sezione può contenere i seguenti campi:-
sd_service_name_patternè il modello da utilizzare per specificare il servizio Amazon ECS in cui si trovano le attività da individuare. Questa è un'espressione regolare. -
sd_metrics_portsElenca gli elementicontainerPortper i parametri Prometheus. Separa più elementicontainerPortscon punto e virgola. -
sd_container_name_patternspecifica i nomi dei container dell'attività di Amazon ECS. Questa è un'espressione regolare. -
sd_metrics_pathspecifica il percorso dei parametri Prometheus. Se ometti questa opzione, l'agente presume che il percorso predefinito è/metrics. -
sd_job_namespecifica il nome del processo di scraping di Prometheus. Se ometti questo campo, l'agente CloudWatch utilizza il nome del processo nella configurazione di scraping di Prometheus.
-
-
-
metric_declaration sono sezioni che specificano la matrice di log con Embedded Metric Format da generare. Esistono sezioni
metric_declarationper ogni origine Prometheus da cui l'agente CloudWatch importa per impostazione predefinita. Ciascuna di queste sezioni include i seguenti campi:-
label_matcherè un'espressione regolare che controlla il valore delle etichette elencate insource_labels. I parametri corrispondenti vengono abilitati per l'inclusione in Embedded Metric Format inviato a CloudWatch.Se sono state specificate più etichette in
source_labels, ti consigliamo di non utilizzare^o caratteri$nell'espressione regolare perlabel_matcher. -
source_labelsspecifica il valore delle etichette controllate dalla rigalabel_matcher. -
label_separatorspecifica il separatore da utilizzare nella rigalabel_matcherse sono specificatisource_labelsmultipli. Il valore predefinito è;. È possibile visualizzare questo valore predefinito utilizzato nella rigalabel_matchernell'esempio seguente. -
metric_selectorsè un'espressione regolare che specifica i parametri da raccogliere e inviare a CloudWatch. -
dimensionsè l'elenco delle etichette da utilizzare come dimensioni CloudWatch per ogni parametro selezionato.
-
Guarda l'esempio metric_declaration che segue.
"metric_declaration": [ { "source_labels":[ "Service", "Namespace"], "label_matcher":"(.*node-exporter.*|.*kube-dns.*);kube-system$", "dimensions":[ ["Service", "Namespace"] ], "metric_selectors":[ "^coredns_dns_request_type_count_total$" ] } ]
In questo esempio viene configurata una sezione di formato metrica incorporata da inviare come evento di log se sono soddisfatte le seguenti condizioni:
-
Il valore di
Servicecontienenode-exporterokube-dns. -
Il valore di
Namespaceèkube-system. -
La metrica Prometheus
coredns_dns_request_type_count_totalcontiene le etichette siaServicecheNamespace.
L'evento di log inviato include la seguente sezione evidenziata:
{ "CloudWatchMetrics":[ { "Metrics":[ { "Name":"coredns_dns_request_type_count_total" } ], "Dimensions":[ [ "Namespace", "Service" ] ], "Namespace":"ContainerInsights/Prometheus" } ], "Namespace":"kube-system", "Service":"kube-dns", "coredns_dns_request_type_count_total":2562, "eks_amazonaws_com_component":"kube-dns", "instance":"192.168.61.254:9153", "job":"kubernetes-service-endpoints", ... }