Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Scraping zusätzlicher Prometheus-Quellen und Importieren dieser Metriken
Der CloudWatch Agent mit Prometheus-Überwachung benötigt zwei Konfigurationen, um die Prometheus-Metriken zu erfassen. Er folgt der standardmäßigen Prometheus-Konfiguration, wie in <scrape_config>
Für ECS Amazon-Cluster werden die Konfigurationen AWS Systems Manager durch die Geheimnisse in der ECS Amazon-Aufgabendefinition in den Parameterspeicher integriert:
-
Das Secret
PROMETHEUS_CONFIG_CONTENT
ist für die Scrape-Konfiguration von Prometheus. -
Das Geheimnis
CW_CONFIG_CONTENT
ist für die CloudWatch Agentenkonfiguration bestimmt.
Um zusätzliche Prometheus-Metrikquellen zu scrapen und diese Metriken zu importieren CloudWatch, ändern Sie sowohl die Prometheus-Scrape-Konfiguration als auch die Agentenkonfiguration und stellen dann den CloudWatch Agenten mit der aktualisierten Konfiguration erneut bereit.
VPCAnforderungen an Sicherheitsgruppen
Die Eingangsregeln der Sicherheitsgruppen für die Prometheus-Workloads müssen die Prometheus-Ports für den CloudWatch Agenten öffnen, damit er die Prometheus-Metriken über die private IP scrapen kann.
Die Ausgangsregeln der Sicherheitsgruppe für den CloudWatch Agenten müssen es dem CloudWatch Agenten ermöglichen, über eine private IP eine Verbindung zum Port der Prometheus-Workloads herzustellen.
Prometheus-Scrape-Konfiguration
Der CloudWatch Agent unterstützt die standardmäßigen Prometheus-Scrape-Konfigurationen, wiehttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
global: scrape_interval: 1m scrape_timeout: 10s
-
scrape_interval – Definiert, wie oft das Scraping von zielen durchgeführt werden soll.
-
scrape_timeout – Definiert, wie lange gewartet werden soll, bis für eine Scrape-Anforderung eine Zeitüberschreitung eintritt.
Sie können auch verschiedene Werte für diese Einstellungen auf Auftragsebene definieren, um die globalen Konfigurationen zu überschreiben.
Prometheus-Scraping-Aufträge
Für die CloudWatch YAML Agentendateien sind bereits einige Standard-Scraping-Jobs konfiguriert. Beispielsweise werden in den YAML Dateien für Amazon ECS die Standard-Scraping-Jobs im ecs_service_discovery
Abschnitt konfiguriert. cwagent-ecs-prometheus-metric-for-bridge-host.yaml
"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" } ] }
Jedes dieser Standardziele wird gelöscht, und die Metriken werden im eingebetteten Metrikformat CloudWatch in Protokollereignissen gesendet. Weitere Informationen finden Sie unter Einbetten von Metriken in Protokollen.
Protokollereignisse von ECS Amazon-Clustern werden im Ordner/aws/ecs/containerinsights/gespeichertcluster_name
/prometheus-Protokollgruppe.
Jeder Scraping-Auftrag ist in einem anderen Protokoll-Stream in dieser Protokollgruppe enthalten.
Um ein neues Scraping-Ziel hinzuzufügen, fügen Sie im task_definition_list
Abschnitt unter dem Abschnitt der Datei einen neuen Eintrag hinzu und ecs_service_discovery
starten den YAML Agenten neu. Ein Beispiel für diesen Prozess finden Sie unter Tutorial zum Hinzufügen eines neuen Prometheus-Scrape-Ziels: Prometheus Server-Metriken API.
CloudWatch Agentenkonfiguration für Prometheus
Die CloudWatch Agentenkonfigurationsdatei enthält einen prometheus
Abschnitt metrics_collected
für die Prometheus-Scraping-Konfiguration. Es sind folgende Konfigurationsoptionen enthalten:
-
Clustername – Gibt den Clusternamen an, der als Bezeichnung im Protokollereignis hinzugefügt werden soll. Dies ist ein optionales Feld. Wenn Sie ihn weglassen, kann der Agent den ECS Amazon-Clusternamen erkennen.
-
log_group_name – Gibt den Namen der Protokollgruppe für die Prometheus-Scrape-Metriken an. Dies ist ein optionales Feld. Wenn Sie ihn weglassen, wird// CloudWatch verwendet aws/ecs/containerinsights
cluster_name
/prometheus für Protokolle von Amazon-Clustern. ECS -
prometheus_config_path – gibt den Pfad der Prometheus-Scrape-Konfigurationsdatei an. Wenn der Wert dieses Felds mit
env:
beginnt, wird der Inhalt der Prometheus-Scrape-Konfigurationsdatei aus der Umgebungsvariablen des Containers abgerufen. Ändern Sie dieses Feld nicht. -
ecs_service_discovery — ist der Abschnitt, in dem die Konfigurationen der Amazon ECS Prometheus-Ziel-Autodiscovery-Funktionen spezifiziert werden. Für die Erkennung der Prometheus-Ziele werden zwei Modi unterstützt: Erkennung anhand des Docker-Labels des Containers oder Erkennung basierend auf dem regulären Ausdruck der ECS Amazon-AufgabendefinitionARN. Sie können die beiden Modi zusammen verwenden und der CloudWatch Agent dedupliziert die erkannten Ziele auf der Grundlage von: {private_ip}: {port}/{metrics_path}.
Der Abschnitt
ecs_service_discovery
kann die folgenden Felder enthalten:-
sd_frequency
ist die Häufigkeit, mit der die Prometheus-Exporteure entdeckt werden. Geben Sie eine Zahl und ein Einheitensuffix an. Zum Beispiel1m
für einmal pro Minute oder30s
für einmal pro 30 Sekunden. Gültige Einheitensuffixe sindns
,us
,ms
,s
,m
undh
.Dies ist ein optionales Feld. Der Standardwert ist 60 Sekunden (1 Minute).
-
sd_target_cluster
ist der ECS Amazon-Zielclustername für die automatische Erkennung. Dies ist ein optionales Feld. Der Standard ist der Name des ECS Amazon-Clusters, auf dem der CloudWatch Agent installiert ist. -
sd_cluster_region
ist die Region des ECS Amazon-Zielclusters. Dies ist ein optionales Feld. Die Standardeinstellung ist die Region des ECS Amazon-Clusters, in der der CloudWatch Agent installiert ist. -
sd_result_file
ist der Pfad der YAML Datei für die Prometheus-Zielergebnisse. Die Prometheus-Scrape-Konfiguration bezieht sich auf diese Datei. -
docker_label
ist ein optionaler Abschnitt, mit dem Sie die Konfiguration für die Docker-Beschriftungs-basierte Service-Discovery angeben können. Wenn Sie diesen Abschnitt auslassen, wird die Docker-Bezeichnungs-basierte Erkennung nicht verwendet. Dieser Abschnitt kann die folgenden Felder enthalten:-
sd_port_label
ist der Docker-Bezeichnungsname des Containers, der den Container-Port für Prometheus Metriken angibt. Der Standardwert istECS_PROMETHEUS_EXPORTER_PORT
. Wenn der Container dieses Docker-Label nicht hat, überspringt der CloudWatch Agent es. -
sd_metrics_path_label
ist der Docker-Bezeichnungsname des Containers, der den Pfad für Prometheus Metriken angibt. Der Standardwert istECS_PROMETHEUS_METRICS_PATH
. Wenn der Container nicht über diese Docker-Bezeichnung verfügt, nimmt der Agent den Standardpfad/metrics
an. -
sd_job_name_label
ist der Docker-Bezeichnungsname des Containers, der den Container-Scraping-Auftrag-Namen für Prometheus angibt. Der Standardwert istjob
. Wenn der Container dieses Docker-Label nicht hat, verwendet der CloudWatch Agent den Jobnamen in der Prometheus-Scrape-Konfiguration.
-
-
task_definition_list
ist ein optionaler Abschnitt, den Sie verwenden können, um die Konfiguration der aufgabendefinitionsbasierten Serviceerkennung anzugeben. Wenn Sie diesen Abschnitt auslassen, wird die aufgabendefinitionsbasierte Erkennung nicht verwendet. Dieser Abschnitt kann die folgenden Felder enthalten:-
sd_task_definition_arn_pattern
ist das Muster, das verwendet werden soll, um die zu ECS ermittelnden Amazon-Aufgabendefinitionen anzugeben. Dies ist ein regulärer Ausdruck. -
sd_metrics_ports
listet die containerPort für die Prometheus-Metriken auf. Trennen Sie die durch containerPorts Semikolons. -
sd_container_name_pattern
gibt die Namen der ECS Amazon-Aufgabencontainer an. Dies ist ein regulärer Ausdruck. -
sd_metrics_path
gibt den Prometheus-Metrikpfad an. Wenn Sie dies weglassen, übernimmt der Agent den Standardpfad/metrics
-
sd_job_name
gibt den Namen des Prometheus -Scrape-Auftrags an. Wenn Sie dieses Feld weglassen, verwendet der CloudWatch Agent den Jobnamen in der Prometheus-Scrape-Konfiguration.
-
-
service_name_list_for_tasks
ist ein optionaler Abschnitt, den Sie verwenden können, um die Konfiguration der auf Servicenamen basierenden Erkennung anzugeben. Wenn Sie diesen Abschnitt auslassen, wird die auf Servicenamen basierende Erkennung nicht verwendet. Dieser Abschnitt kann die folgenden Felder enthalten:-
sd_service_name_pattern
ist das Muster, das verwendet werden soll, um den ECS Amazon-Service zu spezifizieren, bei dem Aufgaben erkannt werden sollen. Dies ist ein regulärer Ausdruck. -
sd_metrics_ports
listet dencontainerPort
für die Prometheus-Metriken auf. Trennen Sie mehrerecontainerPorts
durch Semikolons. -
sd_container_name_pattern
gibt die Namen der ECS Amazon-Aufgabencontainer an. Dies ist ein regulärer Ausdruck. -
sd_metrics_path
gibt den Prometheus-Metrikpfad an. Wenn Sie dies weglassen, übernimmt der Agent den Standardpfad/metrics
-
sd_job_name
gibt den Namen des Prometheus -Scrape-Auftrags an. Wenn Sie dieses Feld weglassen, verwendet der CloudWatch Agent den Jobnamen in der Prometheus-Scrape-Konfiguration.
-
-
-
metric_declaration – sind Abschnitte, die das Array von Protokollen mit eingebettetem Metrikformat angeben, das generiert werden soll. Für jede Prometheus-Quelle, aus der der CloudWatch Agent standardmäßig importiert, gibt es
metric_declaration
Abschnitte. Diese Abschnitte enthalten jeweils die folgenden Felder:-
label_matcher
ist ein regulärer Ausdruck, der den Wert der insource_labels
aufgelisteten Beschriftungen überprüft. Die übereinstimmenden Metriken werden für die Aufnahme in das eingebettete Metrikformat aktiviert, an das gesendet wird. CloudWatchWenn in
source_labels
mehrere Bezeichnungen angegeben sind, empfehlen wir, keine^
- oder$
-Zeichen im regulären Ausdruck fürlabel_matcher
zu verwenden. -
source_labels
gibt den Wert der Beschriftungen an, die von derlabel_matcher
-Zeile überprüft werden. -
label_separator
gibt das Trennzeichen an, das in der Zeilelabel_matcher
verwendet werden soll, wenn mehreresource_labels
angegeben werden. Der Standardwert ist;
. Sie können diesen Standardwert in der Zeilelabel_matcher
im folgenden Beispiel sehen. -
metric_selectors
ist ein regulärer Ausdruck, der die Metriken angibt, die gesammelt und an sie gesendet werden sollen CloudWatch. -
dimensions
ist die Liste der Bezeichnungen, die als CloudWatch Dimensionen für jede ausgewählte Metrik verwendet werden sollen.
-
Sehen Sie sich das folgende metric_declaration
-Beispiel an.
"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 diesem Beispiel wird ein eingebetteter Metrikformatabschnitt konfiguriert, der als Protokollereignis gesendet wird, wenn die folgenden Bedingungen erfüllt sind:
-
Der Wert von
Service
enthält entwedernode-exporter
oderkube-dns
. -
Der Wert von
Namespace
istkube-system
. -
Die Prometheus-Metrik
coredns_dns_request_type_count_total
enthält sowohlService
-als auchNamespace
-Beschriftungen.
Das Protokollereignis, das gesendet wird, enthält den folgenden hervorgehobenen Abschnitt:
{ "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", ... }