Javaのランタイム(JVM)メトリクスを[[Prometheus]]で取得する方法。 [PrometheusとGrafanaでJavaアプリケーションをモニタリングする | NHN Cloud Meetup](https://meetup-jp.toast.com/3476) - Spring Boot Actuator - JMX Exporter [GitHub - prometheus/jmx_exporter: A process for exposing JMX Beans via HTTP for Prometheus consumption](https://github.com/prometheus/jmx_exporter) - JVM agent方式(推奨) - standalone HTTP server方式 [Monitoring JAVA applications running in Kubernetes | Documentation](https://stage-docs.snappyflow.io/docs/Integrations/java/java_kubernetes) [[Kubernetes]]でのモニタリング方法。standalone方式。 1. JMXオプションを付与してJavaアプリケーションを起動する。 ``` -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port= <userDefinedJMXPort> -Dcom.sun.management.jmxremote.authenticate=false - Dcom.sun.management.jmxremote.ssl=false ``` 2. Prometheus exporter起動 ```shell java -jar jmx_prometheus_httpserver.jar <userDefinedPrometheusPort> <exporterConfigFile> ``` ```yaml apiVersion: v1 kind: ConfigMap metadata: labels: snappyflow/appname: <app_name> snappyflow/projectname: <project_name> data: jmx-config.yaml: | --- jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:<userDefinedJMXPort>/jmxrmi ssl: false rules: - pattern: '.*' ``` ```yaml kind: Pod apiVersion: v1 metadata: name: my-first-pod labels: snappyflow/appname: <app_name> snappyflow/projectname: <project_name> spec: containers: - name: app-container image: <docker_id>/<docker_image>:<tag> command: sh -c -x java -jar -Dcom.sun.management.jmxremote - Dcom.sun.management.jmxremote.port=<userDefinedJMXPort> - Dcom.sun.management.jmxremote.authenticate=false - Dcom.sun.management.jmxremote.ssl=false <application_jar> - name: "exporter-container" image: "bitnami/jmx-exporter:latest" imagePullPolicy: IfNotPresent command: sh -c -x java -jar jmx_prometheus_httpserver.jar <userDefinedPrometheusPort> /tmp/jmx-config.yaml ports: - name: exporter-port containerPort: <userDefinedPrometheusPort> volumeMounts: - name: configmap-jmx mountPath: /tmp volumes: - name: configmap-jmx configMap: - name: jmx-configmap ``` JMX exporterのキャッシュによる高速化 [Improving the performance of the Prometheus JMX Exporter](https://engineeringblog.yelp.com/2020/10/improving-the-performance-of-the-prometheus-jmx-exporter.html)