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.
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
Container Insights peut collecter des métriques Prometheus prédéfinies à partir de Java Virtual Machine (JVM), Java et Tomcat (Catalina) à l'aide de JMX Exporter.
Configuration de récupération Prometheus par défaut
Par défaut, l' CloudWatch agent compatible avec Prometheus supprime les métriques http://CLUSTER_IP:9404/metrics
Prometheus Java/JMX présentes sur chaque pod d'un cluster Amazon EKS ou Kubernetes. Cette opération est exécutée par la découverte role: pod
de Prometheus kubernetes_sd_config
. 9404 est le port par défaut alloué pour JMX Exporter par Prometheus. Pour plus d'informations sur la découverte role: pod
, consultez pod
kubectl describe cm prometheus-config -n amazon-cloudwatch
Les champs à modifier sont les champs /metrics
et regex:
'.*:9404$'
, comme mis en évidence dans l'exemple suivant.
job_name: 'kubernetes-jmx-pod' sample_limit: 10000 metrics_path:
/metrics
kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__address__] action: keepregex: '.*:9404$'
- action: replace regex: (.+) source_labels:
Autre configuration de récupération Prometheus
Si vous exposez votre application en cours d'exécution sur un ensemble de pods avec les exportateurs Prometheus Java/JMX par un service Kubernetes, vous pouvez également basculer pour utiliser la découverte role:
service
ou role: endpoint
de Prometheus kubernetes_sd_config
. Pour plus d'informations sur ces méthodes de découverte, consultez service
D'autres méta-étiquettes sont fournies par ces deux modes de découverte de services, ce qui peut vous être utile pour créer les dimensions CloudWatch des métriques. Par exemple, vous pouvez réétiqueter __meta_kubernetes_service_name
sur Service
et l'inclure dans la dimension de vos métriques. Pour plus d'informations sur la personnalisation de vos CloudWatch indicateurs et de leurs dimensions, consultez. CloudWatch configuration de l'agent pour Prometheus
Image Docker avec JMX Exporter
Ensuite, créez une image Docker. Les sections suivantes fournissent deux exemples de fichiers Docker.
Lorsque vous avez créé l'image, chargez-la dans Amazon EKS ou Kubernetes, puis exécutez la commande suivante pour vérifier que les métriques Prometheus sont exposées par JMX_EXPORTER
sur le port 9404. Remplacez $JAR_SAMPLE_TRAFFIC_POD
par le nom du pod en cours d'exécution et remplacez $JAR_SAMPLE_TRAFFIC_NAMESPACE
par l'espace de noms de votre application.
Si vous exécutez JMX Exporter sur un cluster avec le type de lancement Fargate, vous devez configurer un profil Fargate avant de réaliser les étapes de cette procédure. Pour configurer le profil, saisissez la commande suivante. Remplacez MyCluster
par le nom de votre cluster.
eksctl create fargateprofile --cluster
MyCluster
\ --namespace $JAR_SAMPLE_TRAFFIC_NAMESPACE\ --name $JAR_SAMPLE_TRAFFIC_NAMESPACE
kubectl exec $JAR_SAMPLE_TRAFFIC_POD -n $JARCAT_SAMPLE_TRAFFIC_NAMESPACE -- curl http://localhost:9404
Exemple : image Apache Tomcat Docker avec métriques Prometheus
Le serveur Apache Tomcat expose les mBeans JMX par défaut. Vous pouvez intégrer JMX Exporter avec Tomcat pour exposer les mBeans JMX en tant que métriques Prometheus. L'exemple de fichier Docker suivant montre les étapes à suivre pour créer une image de test :
# From Tomcat 9.0 JDK8 OpenJDK FROM tomcat:9.0-jdk8-openjdk RUN mkdir -p /opt/jmx_exporter COPY ./jmx_prometheus_javaagent-0.12.0.jar /opt/jmx_exporter COPY ./config.yaml /opt/jmx_exporter COPY ./setenv.sh /usr/local/tomcat/bin COPY
your web application.war
/usr/local/tomcat/webapps/ RUN chmod o+x /usr/local/tomcat/bin/setenv.sh ENTRYPOINT ["catalina.sh", "run"]
La liste suivante explique les quatre lignes COPY
de ce fichier Docker.
-
Téléchargez le dernier fichier JAR JMX Exporter https://github.com/prometheus/depuis
jmx_exporter. -
config.yaml
est le fichier de configuration de JMX Exporter. Pour plus d'informations, consultez https://github.com/prometheus/jmx_exporter #Configuration. Voici un exemple de fichier 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: ".*"
-
setenv.sh
est un script de démarrage Tomcat pour démarrer JMX exporter avec Tomcat et exposer les métriques Prometheus sur le port 9404 de l'hôte local. Il fournit également à JMX Exporter le chemin d'accès au fichierconfig.yaml
.$ cat setenv.sh export JAVA_OPTS="-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=9404:/opt/jmx_exporter/config.yaml $JAVA_OPTS"
-
Votre application web .war est le fichier
war
de votre application web à charger par Tomcat.
Créez une image Docker avec cette configuration et téléchargez-la dans un référentiel d'images.
Exemple : image Docker d'application Java Jar avec métriques Prometheus
L'exemple de fichier Docker suivant montre les étapes à suivre pour créer une image de test :
# Alpine Linux with OpenJDK JRE
FROM openjdk:8-jre-alpine
RUN mkdir -p /opt/jmx_exporter
COPY ./jmx_prometheus_javaagent-0.12.0.jar /opt/jmx_exporter
COPY ./SampleJavaApplication-1.0-SNAPSHOT.jar /opt/jmx_exporter
COPY ./start_exporter_example.sh /opt/jmx_exporter
COPY ./config.yaml /opt/jmx_exporter
RUN chmod -R o+x /opt/jmx_exporter
RUN apk add curl
ENTRYPOINT exec /opt/jmx_exporter/start_exporter_example.sh
La liste suivante explique les quatre lignes COPY
de ce fichier Docker.
-
Téléchargez le dernier fichier JAR JMX Exporter https://github.com/prometheus/depuis
jmx_exporter. -
config.yaml
est le fichier de configuration de JMX Exporter. Pour plus d'informations, consultez https://github.com/prometheus/jmx_exporter #Configuration. Voici un exemple de fichier 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: ".*"
-
start_exporter_example.sh
est le script pour démarrer l'application JAR avec les métriques Prometheus exportées. Il fournit également à JMX Exporter le chemin d'accès au fichierconfig.yaml
.$ cat start_exporter_example.sh java -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=9404:/opt/jmx_exporter/config.yaml -cp /opt/jmx_exporter/SampleJavaApplication-1.0-SNAPSHOT.jar com.gubupt.sample.app.App
-
SampleJavaApplication-1.0-Snapshot.jar est l'exemple de fichier jar de l'application Java. Remplacez-le par l'application Java que vous souhaitez surveiller.
Créez une image Docker avec cette configuration et téléchargez-la dans un référentiel d'images.