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à.
Scraping di ulteriori origini Prometheus e importazione di tali parametri
L' CloudWatch agente con monitoraggio Prometheus necessita di due configurazioni per analizzare le metriche di Prometheus. Una è per le configurazioni standard Prometheus come documentato in <scrape_config>
Per i cluster Amazon EKS, le configurazioni sono definite in prometheus-eks.yaml
(per il tipo di EC2 lancio) o prometheus-eks-fargate.yaml
(per il tipo di lancio Fargate) come due mappe di configurazione:
-
La sezione
name: prometheus-config
contiene le impostazioni per lo scraping di Prometheus. -
La
name: prometheus-cwagentconfig
sezione contiene la configurazione per l'agente. CloudWatch Puoi utilizzare questa sezione per configurare la modalità di raccolta delle metriche di Prometheus da. CloudWatch Ad esempio, si specifica in quali metriche importare e si definiscono le relative dimensioni CloudWatch.
Per i cluster Kubernetes in esecuzione su EC2 istanze Amazon, le configurazioni sono definite nel file prometheus-k8s.yaml
YAML come due mappe di configurazione:
-
La sezione
name: prometheus-config
contiene le impostazioni per lo scraping di Prometheus. -
La sezione contiene la configurazione per l'agente.
name: prometheus-cwagentconfig
CloudWatch
Per acquisire ulteriori fonti di metriche Prometheus e importare tali metriche in, è necessario modificare sia la configurazione dello scrape di Prometheus che la configurazione dell'agente, quindi ridistribuire l'agente con la configurazione aggiornata. CloudWatch CloudWatch
Requisiti del gruppo di sicurezza VPC
Le regole di ingresso dei gruppi di sicurezza per i carichi di lavoro Prometheus devono aprire le porte CloudWatch Prometheus all'agente per lo scraping delle metriche di Prometheus tramite l'IP privato.
Le regole di uscita del gruppo di sicurezza per l' CloudWatch agente devono consentire all'agente di connettersi alla CloudWatch porta dei carichi di lavoro Prometheus tramite IP privato.
Configurazione di Prometheus Scrape
<scrape_config>L' CloudWatch agente supporta le configurazioni scrape standard di Prometheus come documentato nella documentazione di Prometheus.https://prometheus.io/docs/prometheus/latest/configuration/configuration/#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
Nei file YAML dell' CloudWatch agente sono già configurati alcuni processi di scraping predefiniti. Ad esempio, in prometheus-eks.yaml
, i processi di scraping predefiniti sono configurati nelle righe job_name
nella sezione scrape_configs
. In questo file, la sezione kubernetes-pod-jmx
predefinita seguente recupera i parametri di JMX Exporter.
- job_name: 'kubernetes-pod-jmx' sample_limit: 10000 metrics_path: /metrics kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__address__] action: keep regex: '.*:9404$' - action: labelmap regex: __meta_kubernetes_pod_label_(.+) - action: replace source_labels: - __meta_kubernetes_namespace target_label: Namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: pod_name - action: replace source_labels: - __meta_kubernetes_pod_container_name target_label: container_name - action: replace source_labels: - __meta_kubernetes_pod_controller_name target_label: pod_controller_name - action: replace source_labels: - __meta_kubernetes_pod_controller_kind target_label: pod_controller_kind - action: replace source_labels: - __meta_kubernetes_pod_phase target_label: pod_phase
Ciascuno di questi obiettivi predefiniti viene eliminato e le metriche vengono inviate agli eventi di registro utilizzando il formato CloudWatch metrico incorporato. Per ulteriori informazioni, consulta Incorporamento dei parametri nei log.
Gli eventi di log dei cluster Amazon EKS e Kubernetes vengono archiviati nel gruppo di log /aws/containerinsights/ /prometheus cluster_name
in Logs. CloudWatch Gli eventi di log dei cluster Amazon ECS vengono 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. Ad esempio, il processo di scraping Prometheus kubernetes-pod-appmesh-envoy
è definito per App Mesh. Tutte le metriche App Mesh Prometheus dei cluster Amazon EKS e Kubernetes vengono inviate al flusso di log denominato /aws/containerinsights/ >prometheus//. cluster_name
kubernetes-pod-appmesh-envoy
Per aggiungere una nuova destinazione di scraping, aggiungere una nuova sezione job_name
alla sezione scrape_configs
del file YAML e riavviare 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.
CloudWatch configurazione dell'agente per Prometheus
Il file di configurazione CloudWatch dell'agente ha una prometheus
sezione sotto metrics_collected
per la configurazione dello 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 li ometti, l'agente può rilevare il nome del cluster Amazon EKS o Kubernetes.
-
log_group_name: specifica il nome del gruppo di log per i parametri Prometheus sottoposti a scraping. Questo campo è facoltativo. Se lo CloudWatch ometti, utilizza /aws/containerinsights/
cluster_name
/prometheus per i log dei cluster Amazon EKS e Kubernetes. -
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 la configurazione per l'individuazione del servizio Amazon ECS Prometheus. Per ulteriori informazioni, consulta la pagina Guida dettagliata per l'individuazione automatica dei cluster Amazon ECS.
La sezione
ecs_service_discovery
può 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,1m
per una volta al minuto o30s
per una volta ogni 30 secondi. I suffissi di unità validi sonons
,us
,ms
,s
,m
eh
.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' CloudWatch agente. -
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' CloudWatch agente. -
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 contenitore non ha questa etichetta docker, l' CloudWatch agente la 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 contenitore non ha questa etichetta docker, l' CloudWatch agente utilizza il nome del lavoro nella configurazione dello scrape 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_ports
elenca gli elementi containerPort per i parametri di Prometheus. Separa gli elementi containerPort con il punto e virgola. -
sd_container_name_pattern
specifica i nomi dei container dell'attività di Amazon ECS. Questa è un'espressione regolare. -
sd_metrics_path
specifica il percorso del parametro Prometheus. Se ometti questa opzione, l'agente assume il percorso predefinito/metrics
-
sd_job_name
specifica il nome del processo di scraping di Prometheus. Se si omette questo campo, l' CloudWatch agente utilizza il nome del lavoro nella configurazione dello scrape di Prometheus.
-
-
-
metric_declaration: sono sezioni che specificano la matrice di log con formato metrico incorporato da generare. Esistono sezioni
metric_declaration
per 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
. Le metriche corrispondenti sono abilitate per l'inclusione nel formato metrico incorporato inviato a. CloudWatchSe sono state specificate più etichette in
source_labels
, ti consigliamo di non utilizzare^
o caratteri$
nell'espressione regolare perlabel_matcher
. -
source_labels
specifica il valore delle etichette controllate dalla rigalabel_matcher
. -
label_separator
specifica il separatore da utilizzare nella rigalabel_matcher
se sono specificatisource_labels
multipli. Il valore predefinito è;
. È possibile visualizzare questo valore predefinito utilizzato nella rigalabel_matcher
nell'esempio seguente. -
metric_selectors
è un'espressione regolare che specifica le metriche da raccogliere e inviare a CloudWatch. -
dimensions
è l'elenco delle etichette da utilizzare come dimensioni CloudWatch per ogni metrica selezionata.
-
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
Service
contienenode-exporter
okube-dns
. -
Il valore di
Namespace
èkube-system
. -
La metrica Prometheus
coredns_dns_request_type_count_total
contiene le etichette siaService
cheNamespace
.
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", ... }
Esercitazione per l'aggiunta di nuove destinazioni di scraping di Prometheus: parametri del server API Prometheus
Kubernetes API Server espone le metriche Prometheus sugli endpoint per impostazione predefinita. L'esempio ufficiale per la configurazione di scraping Kubernetes API Server è disponibile su Github
La seguente esercitazione mostra come eseguire le seguenti operazioni per iniziare a importare le metriche di Kubernetes API Server in CloudWatch:
-
Aggiunta della configurazione di scraping Prometheus per Kubernetes API Server al file YAML dell'agente CloudWatch .
-
Configurazione delle definizioni delle metriche in formato metrico incorporato nel file YAML dell'agente. CloudWatch
-
(Facoltativo) Creazione di una CloudWatch dashboard per le metriche del Kubernetes API Server.
Nota
Kubernetes API Server espone le metriche misuratore, contatore, istogramma e riepilogo. In questa versione del supporto alle metriche di Prometheus CloudWatch , importa solo le metriche con i tipi gauge, counter e summary.
Per iniziare a raccogliere le metriche di Kubernetes API Server Prometheus in CloudWatch
-
Scaricare la versione più recente del file
prometheus-eks.yaml
,prometheus-eks-fargate.yaml
oprometheus-k8s.yaml
immettendo uno dei seguenti comandi.Per un cluster Amazon EKS con il tipo di EC2 avvio, inserisci il seguente comando:
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
Per un cluster Amazon EKS con tipo di avvio Fargate, immetti il seguente comando:
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml
Per un cluster Kubernetes in esecuzione su un' EC2 istanza Amazon, inserisci il seguente comando:
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
-
Apri il file con un editor di testo, trova la sezione
prometheus-config
e aggiungi la sezione seguente all'interno di tale sezione. Salvare quindi le modifiche:# Scrape config for API servers - job_name: 'kubernetes-apiservers' kubernetes_sd_configs: - role: endpoints namespaces: names: - default scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] action: keep regex: kubernetes;https - action: replace source_labels: - __meta_kubernetes_namespace target_label: Namespace - action: replace source_labels: - __meta_kubernetes_service_name target_label: Service
-
Mentre hai ancora il file YAML aperto nell'editor di testo, trova la sezione
cwagentconfig.json
. Aggiungi la seguente sottosezione e salva le modifiche. Questa sezione inserisce le metriche del server API nell'elenco degli CloudWatch agenti consentiti. All'elenco degli agenti consentiti vengono aggiunti tre tipi di parametri del server API:-
Conteggi di oggetti etcd
-
Metriche del controller di registrazione del server API
-
Metriche delle richieste del server API
{"source_labels": ["job", "resource"], "label_matcher": "^kubernetes-apiservers;(services|daemonsets.apps|deployments.apps|configmaps|endpoints|secrets|serviceaccounts|replicasets.apps)", "dimensions": [["ClusterName","Service","resource"]], "metric_selectors": [ "^etcd_object_counts$" ] }, {"source_labels": ["job", "name"], "label_matcher": "^kubernetes-apiservers;APIServiceRegistrationController$", "dimensions": [["ClusterName","Service","name"]], "metric_selectors": [ "^workqueue_depth$", "^workqueue_adds_total$", "^workqueue_retries_total$" ] }, {"source_labels": ["job","code"], "label_matcher": "^kubernetes-apiservers;2[0-9]{2}$", "dimensions": [["ClusterName","Service","code"]], "metric_selectors": [ "^apiserver_request_total$" ] }, {"source_labels": ["job"], "label_matcher": "^kubernetes-apiservers", "dimensions": [["ClusterName","Service"]], "metric_selectors": [ "^apiserver_request_total$" ] },
-
-
Se l' CloudWatch agente con supporto Prometheus è già distribuito nel cluster, devi eliminarlo inserendo il seguente comando:
kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
-
Distribuisci l' CloudWatch agente con la configurazione aggiornata immettendo uno dei seguenti comandi. Per un cluster Amazon EKS con il tipo di EC2 avvio, inserisci:
kubectl apply -f prometheus-eks.yaml
Per un cluster Amazon EKS con tipo di avvio Fargate, immetti il seguente comando. Sostituisci
MyCluster
eregion
con valori adatti alla tua implementazione.cat prometheus-eks-fargate.yaml \ | sed "s/{{cluster_name}}/
MyCluster
/;s/{{region_name}}/region
/" \ | kubectl apply -f -Per un cluster Kubernetes, immetti il seguente comando. Sostituisci
MyCluster
eregion
con valori adatti alla tua implementazione.cat prometheus-k8s.yaml \ | sed "s/{{cluster_name}}/
MyCluster
/;s/{{region_name}}/region
/" \ | kubectl apply -f -
Dopo averlo fatto, dovresti vedere un nuovo flusso di log chiamato kubernetes-apiservers nel gruppo di log /aws/containerinsights/ /prometheus. cluster_name
Questo flusso di log deve includere eventi log con una definizione del formato del parametro incorporata come la seguente:
{ "CloudWatchMetrics":[ { "Metrics":[ { "Name":"apiserver_request_total" } ], "Dimensions":[ [ "ClusterName", "Service" ] ], "Namespace":"ContainerInsights/Prometheus" } ], "ClusterName":"my-cluster-name", "Namespace":"default", "Service":"kubernetes", "Timestamp":"1592267020339", "Version":"0", "apiserver_request_count":0, "apiserver_request_total":0, "code":"0", "component":"apiserver", "contentType":"application/json", "instance":"192.0.2.0:443", "job":"kubernetes-apiservers", "prom_metric_type":"counter", "resource":"pods", "scope":"namespace", "verb":"WATCH", "version":"v1" }
Puoi visualizzare le tue metriche nella CloudWatch console nel namespace ContainerInsights/Prometheus. Facoltativamente, puoi anche creare una CloudWatch dashboard per le metriche del server API Prometheus Kubernetes.
(Facoltativo) Creazione di un pannello di controllo per i parametri del server API di Kubernetes
Per visualizzare le metriche del server API Kubernetes nel dashboard, è necessario prima aver completato i passaggi nelle sezioni precedenti per iniziare a raccogliere queste metriche in CloudWatch.
Per creare un pannello di controllo per i parametri del server API Kubernetes
CloudWatch Apri https://console.aws.amazon.com/cloudwatch/
la console all'indirizzo. -
Assicurati di aver selezionato la AWS regione corretta.
-
Nel pannello di navigazione seleziona Dashboards (Pannelli di controllo).
-
Scegli Crea pannello di controllo). Immetti un nome per il nuovo dashboard e scegli Crea dashboard.
-
In Add to this dashboard (Aggiungi a questo pannello di controllo), scegli Cancel (Annulla).
-
Seleziona Actions (Operazioni), View/edit source (Visualizza/modifica origine).
-
Scaricare il seguente file JSON: origine del pannello di controllo API Kubernetes
. -
Apri il file JSON scaricato con un editor di testo e apporta le seguenti modifiche:
-
Sostituire tutte le stringhe
{{YOUR_CLUSTER_NAME}}
con il nome esatto del cluster. Assicurarti di non aggiungere spazi bianchi prima o dopo il testo. -
Sostituisci tutte le stringhe
{{YOUR_AWS_REGION}}
con il nome della regione in cui vengono raccolti i parametri. Ad esempio,us-west-2
. Assicurarti di non aggiungere spazi bianchi prima o dopo il testo.
-
-
Copiare l'intero BLOB JSON e incollarlo nella casella di testo nella console CloudWatch, sostituendo ciò che è già presente nella casella.
-
Scegli Update (Aggiorna), Save dashboard (Salva pannello di controllo).