Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configurer et configurer la collecte de métriques Prometheus sur les instances Amazon EC2
Les sections suivantes expliquent comment installer l' CloudWatch agent avec la surveillance Prometheus EC2 sur les instances et comment configurer l'agent pour détecter des cibles supplémentaires. Elles fournissent également des didacticiels pour configurer des exemples d'applications à utiliser pour les tests avec la surveillance Prometheus.
Les instances Linux et Windows sont prises en charge.
Pour plus d'informations sur les systèmes d'exploitation pris en charge par l' CloudWatch agent, voir Collectez des métriques, des journaux et des traces à l'aide de l' CloudWatchagent
Exigences de groupe de sécurité VPC
Si vous utilisez un VPC, les conditions suivantes s'appliquent.
-
Les règles d'entrée des groupes de sécurité pour les charges de travail Prometheus doivent ouvrir les ports Prometheus à l'agent pour récupérer les métriques Prometheus par CloudWatch l'adresse IP privée.
-
Les règles de sortie du groupe de sécurité pour l' CloudWatch agent doivent permettre à l'agent de se connecter au CloudWatch port des charges de travail Prometheus via une adresse IP privée.
Rubriques
Étape 1 : Installation de l' CloudWatchagent
La première étape consiste à installer l' CloudWatch agent sur l' EC2 instance. Pour obtenir des instructions, veuillez consulter Installation de l' CloudWatch agent.
Étape 2 : Récupérer les sources Prometheus et importer des métriques
L' CloudWatch agent chargé de surveiller Prometheus a besoin de deux configurations pour récupérer les métriques Prometheus. L'une concerne les configurations standard Prometheus, comme décrit dans <scrape_config>
Configuration de récupération Prometheus
L' CloudWatch agent prend en charge les configurations standard de Prometheus scrape, comme indiquéhttps://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: MY_JOB sample_limit: 10000 file_sd_configs: - files: ["C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus_sd_1.yaml", "C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus_sd_2.yaml"]
La section global
spécifie les paramètres valides dans tous les contextes de configuration. Ils servent également de valeurs par défaut pour d'autres sections de configuration. Elle contient les paramètres suivants :
-
scrape_interval
– Définit la fréquence à laquelle récupérer les cibles. -
scrape_timeout
– Définit le temps d'attente avant l'expiration d'une requête de récupération.
La section scrape_configs
spécifie un ensemble de cibles et de paramètres qui définissent comment les récupérer. Elle contient les paramètres suivants :
-
job_name
– Nom de tâche attribué par défaut pour récupérer les métriques. -
sample_limit
– Limite par récupération du nombre d'échantillons récupérés qui seront acceptés. -
file_sd_configs
– Liste des configurations de découverte de service de fichiers. Il lit un ensemble de fichiers contenant une liste de zéro ou plusieurs configurations statiques. La sectionfile_sd_configs
contient un paramètrefiles
qui définit des modèles pour les fichiers à partir desquels les groupes cibles sont extraits.
L' CloudWatch agent prend en charge les types de configuration de découverte de services suivants.
static_config
Permet de spécifier une liste de cibles et un ensemble d'étiquettes commun pour elles. C'est la façon canonique de spécifier des cibles statiques dans une configuration de récupération.
Voici un exemple de configuration statique pour récupérer les métriques Prometheus à partir d'un hôte local. Les métriques peuvent également être récupérées à partir d'autres serveurs si le port Prometheus est ouvert sur le serveur sur lequel l'agent s'exécute.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus_sd_1.yaml - targets: - 127.0.0.1:9404 labels: key1: value1 key2: value2
Cet exemple contient les paramètres suivants :
-
targets
– Cibles récupérées par la configuration statique. -
labels
– Étiquettes affectées à toutes les mesures récupérées des cibles.
ec2_sd_config
Permet de récupérer des cibles de scrape à partir d'instances Amazon EC2 . Voici un exemple ec2_sd_config
pour extraire les métriques Prometheus d'une liste d'instances. EC2 Les ports Prometheus de ces instances doivent s'ouvrir sur le serveur sur lequel CloudWatch l'agent s'exécute. Le rôle IAM pour l' EC2 instance sur laquelle l' CloudWatch agent s'exécute doit inclure l'ec2:DescribeInstance
autorisation. Par exemple, vous pouvez associer la politique gérée Amazon EC2 ReadOnlyAccess à l'instance qui exécute l' CloudWatch agent.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: MY_JOB sample_limit: 10000 ec2_sd_configs: - region: us-east-1 port: 9404 filters: - name: instance-id values: - i-98765432109876543 - i-12345678901234567
Cet exemple contient les paramètres suivants :
-
region
— La AWS région où se trouve l' EC2 instance cible. Si vous laissez ce champ vide, la région à partir des métadonnées d'instance est utilisée. -
port
– Port à partir duquel récupérer les métriques. -
filters
– Filtres facultatifs à utiliser pour filtrer la liste des instances. Cet exemple filtre en fonction de l' EC2 instance IDs. Pour plus de critères sur lesquels vous pouvez filtrer, consultez DescribeInstances.
CloudWatch configuration de l'agent pour Prometheus
Le fichier de configuration de l' CloudWatch agent comprend des prometheus
sections à la fois sous logs
etmetrics_collected
. Il inclut les paramètres suivants.
-
cluster_name – Spécifie le nom du cluster à ajouter en tant qu'étiquette dans l'évènement du journal. Ce champ est facultatif.
-
log_group_name – Spécifie le nom du groupe de journaux pour les métriques Prometheus récupérées.
-
prometheus_config_path – Spécifie le chemin d'accès du fichier de configuration de récupération Prometheus.
-
emf_processor – Spécifie la configuration du processeur de format métrique incorporé. Pour de plus amples informations sur le format de métriques intégré, consultez Intégration de métriques dans les journaux.
La section
emf_processor
peut contenir les paramètres suivants :-
metric_declaration_dedup – Il est défini sur « true », la fonction de déduplication pour les métriques de format de métrique incorporée est activée.
-
metric_namespace — Spécifie l'espace de noms des métriques pour les métriques émises. CloudWatch
-
metric_unit – Spécifie le nom de la métrique : mappage d'unité métrique. Pour plus d'informations sur les unités métriques prises en charge, consultez MetricDatum.
-
metric_declaration – Ce sont des sections qui spécifient le tableau de journaux avec le format de métrique intégré à générer. Il existe des
metric_declaration
sections pour chaque source Prometheus à partir de laquelle CloudWatch l'agent importe par défaut. Chacune de ces sections comprend les champs suivants :-
source_labels
spécifie la valeur des étiquettes qui sont vérifiées par la lignelabel_matcher
. -
label_matcher
est une expression régulière qui vérifie la valeur des étiquettes répertoriées danssource_labels
. Les métriques correspondantes sont activées pour être incluses dans le format de métrique intégré envoyé à CloudWatch. -
metric_selectors
est une expression régulière qui spécifie les métriques à collecter et à envoyer à CloudWatch. -
dimensions
est la liste des étiquettes à utiliser comme dimensions CloudWatch pour chaque métrique sélectionnée.
-
-
Voici un exemple de configuration d' CloudWatch agent pour Prometheus.
{ "logs":{ "metrics_collected":{ "prometheus":{ "cluster_name":"prometheus-cluster", "log_group_name":"Prometheus", "prometheus_config_path":"C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus.yaml", "emf_processor":{ "metric_declaration_dedup":true, "metric_namespace":"CWAgent-Prometheus", "metric_unit":{ "jvm_threads_current": "Count", "jvm_gc_collection_seconds_sum": "Milliseconds" }, "metric_declaration":[ { "source_labels":[ "job", "key2" ], "label_matcher":"MY_JOB;^value2", "dimensions":[ [ "key1", "key2" ], [ "key2" ] ], "metric_selectors":[ "^jvm_threads_current$", "^jvm_gc_collection_seconds_sum$" ] } ] } } } } }
L'exemple précédent montre comment configurer une section de format de métrique intégrée à envoyer en tant qu'événement de journaux si les conditions suivantes sont remplies :
-
La valeur de l'étiquette
job
estMY_JOB
-
La valeur de l'étiquette
key2
estvalue2
-
Les métriques Prometheus
jvm_threads_current
etjvm_gc_collection_seconds_sum
contiennent les étiquettesjob
etkey2
.
L'événement de journal envoyé inclut la section en surbrillance suivante.
{ "CloudWatchMetrics": [ { "Metrics": [ { "Unit": "Count", "Name": "jvm_threads_current" }, { "Unit": "Milliseconds", "Name": "jvm_gc_collection_seconds_sum" } ], "Dimensions": [ [ "key1", "key2" ], [ "key2" ] ], "Namespace": "CWAgent-Prometheus" } ], "ClusterName": "prometheus-cluster", "InstanceId": "i-0e45bd06f196096c8", "Timestamp": "1607966368109", "Version": "0", "host": "EC2AMAZ-PDDOIUM", "instance": "127.0.0.1:9404", "jvm_threads_current": 2, "jvm_gc_collection_seconds_sum": 0.006000000000000002, "prom_metric_type": "gauge", ... }
Exemple : configurer des Java/JMX exemples de charges de travail pour les tests métriques de Prometheus
JMX Exporter est un exportateur Prometheus officiel qui peut récupérer et exposer des mBeans JMX en tant que métriques Prometheus. Pour plus d'informations, consultez prometheus/jmx_exporter
L' CloudWatch agent peut collecter des métriques Prometheus prédéfinies à partir de Java Virtual Machine (JVM), Hjava et Tomcat (Catalina), à partir d'un exportateur JMX sur des instances. EC2
Étape 1 : Installation de l' CloudWatchagent
La première étape consiste à installer l' CloudWatch agent sur l' EC2 instance. Pour obtenir des instructions, veuillez consulter Installation de l' CloudWatch agent.
Étape 2 : Démarrage de la charge de travail Java/JMX
L'étape suivante consiste à démarrer la Java/JMX charge de travail.
Tout d'abord, téléchargez le dernier fichier jar du JMX Exporter à partir de l'emplacement suivant : prometheus/jmx_exporter
Utilisez le jar pour votre exemple d'application
Les exemples de commandes dans les sections suivantes utilisent SampleJavaApplication-1.0-SNAPSHOT.jar
comme fichier jar. Remplacez les parties des commandes par le jar de votre application.
Préparez la configuration de JMX Exporter
Le fichier config.yaml
est le fichier de configuration de JMX Exporter. Pour plus d'informations, consultez Configuration
Voici un exemple de configuration pour Java et Tomcat.
--- lowercaseOutputName: true lowercaseOutputLabelNames: true rules: - pattern: 'java.lang<type=OperatingSystem><>(FreePhysicalMemorySize|TotalPhysicalMemorySize|FreeSwapSpaceSize|TotalSwapSpaceSize|SystemCpuLoad|ProcessCpuLoad|OpenFileDescriptorCount|AvailableProcessors)' name: java_lang_OperatingSystem_$1 type: GAUGE - pattern: 'java.lang<type=Threading><>(TotalStartedThreadCount|ThreadCount)' name: java_lang_threading_$1 type: GAUGE - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+)' name: catalina_globalrequestprocessor_$3_total labels: port: "$2" protocol: "$1" help: Catalina global $3 type: COUNTER - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount)' name: catalina_servlet_$3_total labels: module: "$1" servlet: "$2" help: Catalina servlet $3 total type: COUNTER - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount)' name: catalina_threadpool_$3 labels: port: "$2" protocol: "$1" help: Catalina threadpool $3 type: GAUGE - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions)' name: catalina_session_$3_total labels: context: "$2" host: "$1" help: Catalina session $3 total type: COUNTER - pattern: ".*"
Démarrez l'application Java avec l'exportateur Prometheus
Démarrez l'exemple d'application Cela émettra des métriques Prometheus sur le port 9404. Assurez-vous de remplacer le point d'entrée com.gubupt.sample.app.App
par les informations correctes pour votre exemple d'application Java.
Sur Linux, entrez la commande suivante.
$ nohup java -javaagent:./jmx_prometheus_javaagent-0.14.0.jar=9404:./config.yaml -cp ./SampleJavaApplication-1.0-SNAPSHOT.jar com.gubupt.sample.app.App &
Sur Windows, entrez la commande suivante.
PS C:\> java -javaagent:.\jmx_prometheus_javaagent-0.14.0.jar=9404:.\config.yaml -cp .\SampleJavaApplication-1.0-SNAPSHOT.jar com.gubupt.sample.app.App
Vérifiez l'émission des métriques Prometheus
Vérifiez que les métriques Prometheus sont émises.
Sur Linux, entrez la commande suivante.
$ curl localhost:9404
Sur Windows, entrez la commande suivante.
PS C:\> curl http://localhost:9404
Exemple de sortie sous Linux :
StatusCode : 200 StatusDescription : OK Content : # HELP jvm_classes_loaded The number of classes that are currently loaded in the JVM # TYPE jvm_classes_loaded gauge jvm_classes_loaded 2526.0 # HELP jvm_classes_loaded_total The total number of class... RawContent : HTTP/1.1 200 OK Content-Length: 71908 Content-Type: text/plain; version=0.0.4; charset=utf-8 Date: Fri, 18 Dec 2020 16:38:10 GMT # HELP jvm_classes_loaded The number of classes that are currentl... Forms : {} Headers : {[Content-Length, 71908], [Content-Type, text/plain; version=0.0.4; charset=utf-8], [Date, Fri, 18 Dec 2020 16:38:10 GMT]} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 71908
Étape 3 : configurer l' CloudWatchagent pour récupérer les métriques de Prometheus
Configurez ensuite la configuration Prometheus Scrape dans CloudWatch le fichier de configuration de l'agent.
Pour configurer la configuration Prometheus Scrape dans l'exemple Java/JMX
-
Configurez la configuration pour
file_sd_config
etstatic_config
.Sur Linux, entrez la commande suivante.
$ cat /opt/aws/amazon-cloudwatch-agent/var/prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: jmx sample_limit: 10000 file_sd_configs: - files: [ "/opt/aws/amazon-cloudwatch-agent/var/prometheus_file_sd.yaml" ]
Sur Windows, entrez la commande suivante.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: jmx sample_limit: 10000 file_sd_configs: - files: [ "C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus_file_sd.yaml" ]
-
Paramétrez la configuration des cibles de récupération.
Sur Linux, entrez la commande suivante.
$ cat /opt/aws/amazon-cloudwatch-agent/var/prometheus_file_sd.yaml - targets: - 127.0.0.1:9404 labels: application: sample_java_app os: linux
Sur Windows, entrez la commande suivante.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus_file_sd.yaml - targets: - 127.0.0.1:9404 labels: application: sample_java_app os: windows
-
Paramétrez la configuration de récupération Prometheus avec
ec2_sc_config
. Remplacezyour-ec2-instance-id
par le bon ID d' EC2instance.Sur Linux, entrez la commande suivante.
$ cat .\prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: jmx sample_limit: 10000 ec2_sd_configs: - region: us-east-1 port: 9404 filters: - name: instance-id values: -
your-ec2-instance-id
Sur Windows, entrez la commande suivante.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus_file_sd.yaml - targets: - 127.0.0.1:9404 labels: application: sample_java_app os: windows
-
Configurez la configuration de CloudWatch l'agent. Commencez par accéder au bon répertoire. Sous Linux, il s'agit de
/opt/aws/amazon-cloudwatch-agent/var/cwagent-config.json
. Sous Windows, il s'agit deC:\ProgramData\Amazon\AmazonCloudWatchAgent\cwagent-config.json
.Voici un exemple de configuration avec les métriques Java/JHX Prometheus définies. Assurez-vous de le remplacer
path-to-Prometheus-Scrape-Configuration-file
par le chemin correct.{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "prometheus": { "cluster_name": "my-cluster", "log_group_name": "prometheus-test", "prometheus_config_path": "
path-to-Prometheus-Scrape-Configuration-file
", "emf_processor": { "metric_declaration_dedup": true, "metric_namespace": "PrometheusTest", "metric_unit":{ "jvm_threads_current": "Count", "jvm_classes_loaded": "Count", "java_lang_operatingsystem_freephysicalmemorysize": "Bytes", "catalina_manager_activesessions": "Count", "jvm_gc_collection_seconds_sum": "Seconds", "catalina_globalrequestprocessor_bytesreceived": "Bytes", "jvm_memory_bytes_used": "Bytes", "jvm_memory_pool_bytes_used": "Bytes" }, "metric_declaration": [ { "source_labels": ["job"], "label_matcher": "^jmx$", "dimensions": [["instance"]], "metric_selectors": [ "^jvm_threads_current$", "^jvm_classes_loaded$", "^java_lang_operatingsystem_freephysicalmemorysize$", "^catalina_manager_activesessions$", "^jvm_gc_collection_seconds_sum$", "^catalina_globalrequestprocessor_bytesreceived$" ] }, { "source_labels": ["job"], "label_matcher": "^jmx$", "dimensions": [["area"]], "metric_selectors": [ "^jvm_memory_bytes_used$" ] }, { "source_labels": ["job"], "label_matcher": "^jmx$", "dimensions": [["pool"]], "metric_selectors": [ "^jvm_memory_pool_bytes_used$" ] } ] } } }, "force_flush_interval": 5 } } -
Redémarrez l' CloudWatch agent en saisissant l'une des commandes suivantes.
Sur Linux, entrez la commande suivante.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/var/cwagent-config.json
Sur Windows, entrez la commande suivante.
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:C:\ProgramData\Amazon\AmazonCloudWatchAgent\cwagent-config.json
Affichage des journaux et métriques Prometheus
Vous pouvez désormais consulter les Java/JMX statistiques collectées.
Pour consulter les mesures relatives à votre échantillon de Java/JMX charge de travail
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Dans la région où votre cluster s'exécute, choisissez Metrics (Métriques) dans le volet de navigation de gauche. Trouvez l'PrometheusTestespace de noms pour voir les métriques.
-
Pour voir les événements CloudWatch Logs, choisissez Log groups dans le volet de navigation. Les événements sont dans le groupe de journaux prometheus-test.