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.
Configuration de la charge de travail JMX Java/Sample sur Amazon EKS et Kubernetes
JMXL'exportateur est un exportateur officiel de Prometheus qui peut extraire et exposer JMX mBeans sous forme de 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 l'Exporter. JMX
Configuration de récupération Prometheus par défaut
Par défaut, l' CloudWatch agent compatible avec Prometheus supprime les http://CLUSTER_IP:9404/metrics
métriques JMX Java/Prometheus présentes sur chaque pod d'un cluster Amazon ou Kubernetes. EKS Cela se fait par la role: pod
découverte de kubernetes_sd_config
Prometheus. 9404 est le port par défaut alloué à Exporter par Prometheus. JMX 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 exécutée sur un ensemble de pods avec des exportateurs Java/Prometheus par un service Kubernetes, vous pouvez également passer à l'utilisation de la découverte ou de la découverte de JMX Prometheus. role:
service
role: endpoint
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 exportateur JMX
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 de Prometheus sont exposées sur le port 9404. JMX_EXPORTER
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 également configurer un profil Fargate avant de suivre 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 s'expose JMX mBeans par défaut. Vous pouvez intégrer JMX Exporter à Tomcat pour les exposer JMX mBeans sous forme de 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 depuis https://github.com/prometheus/jmx_exporter
. -
config.yaml
est le fichier de configuration de l'JMXexportateur. 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 permettant de démarrer l'JMXexportateur avec Tomcat et d'exposer les métriques Prometheus sur le port 9404 du localhost. Il fournit également à l'JMXexportateur le cheminconfig.yaml
du fichier.$ 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 depuis https://github.com/prometheus/jmx_exporter
. -
config.yaml
est le fichier de configuration de l'JMXexportateur. 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 permettant de démarrer l'JARapplication avec les métriques Prometheus exportées. Il fournit également à l'JMXexportateur le cheminconfig.yaml
du fichier.$ 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.