Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
JMX Exporter adalah sebuah pengekspor Prometheus resmi yang dapat melakukan scraping dan mengekspos JMX mBeans sebagai metrik-metrik Prometheus. Untuk informasi selengkapnya, silakan lihat prometheus/jmx_exporter
Wawasan Kontainer dapat mengumpulkan metrik-metrik Prometheus yang telah ditentukan sebelumnya dari Java Virtual Machine (JVM), Java, dan Tomcat (Catalina) dengan menggunakan JMX Exporter.
Konfigurasi scraping Prometheus bawaan
Secara default, CloudWatch agen dengan dukungan Prometheus akan mengikis metrik Java/JMX Prometheus dari setiap pod di kluster Amazon EKS atau Kubernetes. http://CLUSTER_IP:9404/metrics
Hal ini dilakukan oleh penemuan role: pod
Prometheus kubernetes_sd_config
. 9404 adalah port bawaan yang dialokasikan untuk JMX Exporter oleh Prometheus. Untuk informasi selengkapnya tentang penemuan role: pod
, silakan lihat pod
kubectl describe cm prometheus-config -n amazon-cloudwatch
Bidang yang harus diubah adalah bidang /metrics
dan regex:
'.*:9404$'
, seperti yang disorot dalam contoh berikut.
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:
Konfigurasi scraping Prometheus lainnya
Jika Anda mengekspos aplikasi yang berjalan pada sekumpulan pod dengan pengekspor Java/JMX Prometheus oleh Layanan Kubernetes, maka Anda juga dapat beralih untuk menggunakan penemuan role:
service
atau penemuan role: endpoint
dari Prometheus kubernetes_sd_config
. Untuk informasi selengkapnya tentang metode penemuan ini, silakan lihat layanan
Lebih banyak label meta disediakan oleh dua mode penemuan layanan ini yang dapat berguna bagi Anda untuk membangun dimensi CloudWatch metrik. Sebagai contoh, Anda dapat mengubah label __meta_kubernetes_service_name
menjadi Service
dan memasukkannya ke dalam dimensi metrik Anda. Untuk informasi lebih lanjut tentang penyesuaian CloudWatch metrik dan dimensinya, melihat CloudWatch konfigurasi agen untuk Prometheus.
Citra Docker dengan JMX Exporter
Berikutnya, buat sebuah citra Docker. Bagian-bagian berikut memberikan dua contoh Dockerfile.
Setelah membangun citra tersebut, muatkan citra itu ke Amazon EKS atau Kubernetes, dan kemudian jalankan perintah berikut untuk memverifikasi bahwa metrik-metrik Prometheus diekspos oleh JMX_EXPORTER
di port 9404. Ganti $JAR_SAMPLE_TRAFFIC_POD
dengan nama pod yang sedang berjalan dan ganti $JAR_SAMPLE_TRAFFIC_NAMESPACE
dengan namespace aplikasi Anda.
Jika Anda menjalankan JMX Exporter pada sebuah klaster dengan tipe peluncuran Fargate, maka Anda juga perlu meyiapkan sebuah profil Fargate sebelum melakukan langkah-langkah dalam prosedur ini. Untuk menyiapkan profilnya, masukkan perintah berikut. Ganti MyCluster
dengan nama klaster Anda.
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
Contoh: Citra Docker Apache Tomcat dengan metrik-metrik Prometheus
Server Apache Tomcat membuka JMX mBeans secara bawaan. Anda dapat mengintegrasikan JMX Exporter dengan Tomcat untuk mengekspos JMX mBeans sebagai metrik-metrik Prometheus. Contoh Dockerfile berikut menunjukkan langkah-langkah untuk membangun sebuah citra pengujian:
# 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"]
Daftar berikut menjelaskan empat baris COPY
dalam Dockerfile ini.
-
Unduh file jar JMX Exporter terbaru dari jmx_exporter. https://github.com/prometheus/
-
config.yaml
adalah file konfigurasi JMX Exporter. Untuk informasi selengkapnya, lihat https://github.com/prometheus/jmx_exporter#Configuration. Berikut ini adalah sebuah file konfigurasi sampel untuk Java dan 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
adalah sebuah skrip perusahaan rintisan Tomcat untuk memulai JMX exporter bersama dengan Tomcat dan mengekspos metrik-metrik Prometheus di port 9404 dari host lokal. Ia juga menyediakan JMX Exporter dengan jalur fileconfig.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"
-
Web application.war Anda adalah file
war
aplikasi web Anda yang akan dimuat oleh Tomcat.
Bangun sebuah citra docker dengan konfigurasi ini dan unggah citra tersebut ke sebuah repositori citra.
Contoh: Citra Docker Aplikasi Jar Java dengan metrik-metrik Prometheus
Contoh Dockerfile berikut menunjukkan langkah-langkah untuk membangun sebuah citra pengujian:
# 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
Daftar berikut menjelaskan empat baris COPY
dalam Dockerfile ini.
-
Unduh file jar JMX Exporter terbaru dari jmx_exporter. https://github.com/prometheus/
-
config.yaml
adalah file konfigurasi JMX Exporter. Untuk informasi selengkapnya, lihat https://github.com/prometheus/jmx_exporter#Configuration. Berikut ini adalah sebuah file konfigurasi sampel untuk Java dan 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
adalah skrip untuk memulai aplikasi JAR dengan metrik-metrik Prometheus yang diekspor. Ia juga menyediakan JMX Exporter dengan jalur fileconfig.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 adalah contoh file jar aplikasi Java. Ganti file tersebut dengan aplikasi Java yang ingin Anda pantau.
Bangun sebuah citra docker dengan konfigurasi ini dan unggah citra tersebut ke sebuah repositori citra.