LoginSignup
2
0

More than 1 year has passed since last update.

Kubernetes上で立ち上げられたJMX Server(SpringBoot)に接続する時のTips

Posted at

はじめに

今回は、Kubernetes上で立ち上げられたJMX Server(SpringBoot)にJconsole等で接続する時のTipsをまとめていきたいと思います。また、本記事は、JMXカスタムメトリクスの取得する時のTipsも記載していきたいと思います。
※なお、カスタムメトリクスの設定方法には触れていません。

実行環境と構成図

実行環境と利用しているツール類

ツール類

  • Kubernetes環境
    • EKS
  • JMX 監視ツール
    • Jconsole

今回の構成

今回は、Kubernetes上に立てられたJMX ServerにPort forwardを使ってローカルマシン上からJconsoleを使って接続することとします。
空白の図 (7).png

事前に設定していたもの

Dockerfile(sample-spring-boot)
FROM openjdk:8-jdk-oraclelinux8
COPY ./SpringBoot_App_folder /
CMD ["./apply.sh", "SpringBoot_app.jar"]
apply.sh
#!/bin/sh
java \
  -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.rmi.port=8086 \
  -Dcom.sun.management.jmxremote.port=8086 \
  -jar ${1}
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sample-app
  template:
    metadata:
      labels:
        app: sample-app
    spec:
      containers:
      - name: sample-spring-boot
        image: sample-spring-boot:latest

※重要なところのみを切り出しています。
また、imageはDockerfileをBuildして作っています。

動作結果

実行例
$kubectl port-forward pods/sample-spring-boot-{任意の文字列} 8086:8086

スクリーンショット 2022-08-28 21.19.07.png
この設定ではpodに対してPort forwardをし、ローカルマシン上でJMX Serverに接続することができませんでした。

ローカルマシンからVMX serverに接続するためのTips

apply.sh
#!/bin/sh
java \
  -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.rmi.port=8086 \
  -Dcom.sun.management.jmxremote.port=8086 \
+ -Djava.rmi.server.hostname=127.0.0.1 \
  -jar ${1}

動作確認

スクリーンショット 2022-08-28 22.30.24.png

JMX Serverに接続することはできました。

カスタムメトリクスを取得するためのTips

apply.sh
#!/bin/sh
java \
+ -Dspring.jmx.enabled=true \
  -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.rmi.port=8086 \
  -Dcom.sun.management.jmxremote.port=8086 \
  -Djava.rmi.server.hostname=127.0.0.1 \
  -jar ${1}

Java Management Extensions(JMX)は、アプリケーションを監視および管理するための標準メカニズムを提供します。デフォルトでは、この機能は有効になっていません。spring.jmx.enabled 設定プロパティを true に設定することでオンにできます。

ref: https://spring.pleiades.io/spring-boot/docs/current/reference/html/actuator.html#actuator.jmx

動作確認

スクリーンショット 2022-08-28 23.13.21.png
これで、カスタムメトリクスのBeanを見つけることができました。

まとめ

今回は、Kubernetes上で立ち上げられたJMX Server(SpringBoot)にport forwardで接続する時のTipsとJMXカスタムメトリクスの取得する時のTipsについてまとめてみました。もし、この記事を読んでいる方が同じ問題に詰まった時の助けになれば幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0