Upgrade to Pro — share decks privately, control downloads, hide ads and more …

K8s+CryostatでJavaを分析しよう

 K8s+CryostatでJavaを分析しよう

本スライドは2022年1月29日にオンラインで開催された富山合同勉強会Burikaigiで紹介した資料です。

Kubernetes上でJDK Flight Recorderを使う場合の課題を洗い出し、Cryostatを使用することでその課題がどの様に解決するのかをデモを交えて紹介します。

Chihiro Ito

March 22, 2022
Tweet

More Decks by Chihiro Ito

Other Decks in Technology

Transcript

  1. - Profiling a Java on Kubernetes with Cryostat - K8s+CryostatでJavaを分析しよう

    富山合同勉強会 Burikaigi 2022 2022年 1月29日 1
  2. 自己紹介 伊藤ちひろ (Chihiro Ito) @Red Hat OpenJDK Committer (JFR, SA)

    Java Platform Advocate, Specialist Solution Architect Twitter : @chiroito 2
  3. JDK Flight Recorder (JFR) Java用プロファイリングおよびイベント収集フレームワーク アプリケーションの動作に関する低レベルの情報を収集 OpenJDKに組み込まれる OpenJDK 11+および8でデフォルトで利用可能(8u272,2020年10月以降) カスタムイベント対応

    アプリケーション固有のイベントを登録・捕捉するための API JDK Mission Control (JMC)と組み合わせる JMCはJFRの記録を管理し、可視化できる 4 Source: https://docs.oracle.com/en/java/java-components/jdk-mission-control/8/user-guide/using-jdk-flight-recorder.html JDK Flight Recorder (JFR) JFRについて
  4. Cryostat 12 プロジェクト開始 Source: https://github.com/cryostatio/cryostat “Container JFR”プロジェクトしてスタート。最初のユースケースは、対話 的なCLIを持つDocker/Podmanでした。 2019 10/2021

    1.0リリース Cryostatプロジェクト初のメジャーリリース。 Webクライアント、 Kubernetesオペレータ、HTTP API、Grafana統合を含む。 2.0リリース Red Hatのサポート対象製品として初めてリリースされ、 OpenJDK サブスクリプションの Red Hatビルドに同梱。 04/2021
  5. Cryostat 2.0 Cryostat 2.0 13 Source: https://developers.redhat.com/articles/2021/10/18/announcing-cryostat-20-jdk-flight-recorder-containers Cryostat Operatorが OpenShift

    4.6以降で OperatorHubからインストール できるようになりました。 OpenShift Operator Cryostatが代替接続プロトコル を使用してターゲットに 接続できるようにする。 カスタムターゲット Automated Rules APIを使用し て、複数のJVMに対して一度 に記録操作を実行する バッチ操作 メインのJavaクラス、 ラベル、アノテーションなどに基 づいて記録を自動作成 自動化ルール 概要
  6. Javaコンテナの設定 JDK Flight Recorder Java 8 update 272以降のバージョンを使用 Java 11

    以降のバージョンを使用 JMX Java Management Extentionを利用できる。認証も可。 -Dcom.sun.management.jmxremote.port=9091 -Dcom.sun.management.jmxremote.rmi.port=9091 16 jSource: https://rheb.hatenablog.com/entry/introduction-to-containerjfr-jdk-flight-recorder-for-containers JDK Flight Recorder (JFR)
  7. Kubernetesにリソースを作成 20 > cat deployment.yaml apiVersion: apps/v1 kind: Deployment (略)

    spec: (略) template: (略) spec: containers: (略) ports: - containerPort: 8080 - containerPort: 9091 protocol: TCP apiVersion: v1 kind: Service (略) spec: (略) ports: (略) - name: jfr-jmx port:: 9091 protocol:: 9091 targetPort:: 9091 > cat service.yaml > oc apply -f deployment.yaml > oc apply -f service.yaml
  8. Cryostatインスタンスを作成 apiVersion: operator.cryostat.io/v1beta1 kind: Cryostat metadata: name: cryostat-sample spec: enableCertManager

    : false eventTemplates: [] minimal: false storageOptions: pvc: annotations: {} labels: app: cryostat 23 > oc apply -f create-cryostat.yaml > cat create-cryostat.yaml
  9. CryostatのWeb UI 24 ログイン > oc get route cryostat-sample -o

    jsonpath='{.spec.host}' cryostat-sample-xxx.apps.cluster-xxx.com
  10. CryostatのAPI 28 Cryostatが管理しているpod一覧 > export baseUrl=`oc get route cryostat-sample -o

    jsonpath= '{.spec.host}` > export token=`oc whoami -t` > curl -H "Authorization: Bearer ${token}" ${baseUrl}/api/v1/targets | jq [ { "connectUrl": "service:jmx:rmi:///jndi/rmi://10.129.2.7:9091/jmxrmi", "alias": "payment-6c7cf75b8-kzx7m", "labels": {(podのラベル一覧 略) }, "annotations": { "platform": {(pod のアノテーション一覧 略) }, "cryostat": { "HOST": "10.129.2.7", "PORT": "9091", "NAMESPACE": "red-hat-pay", "POD_NAME": "payment-6c7cf75b8-kzx7m" } } } ]
  11. 主なポイント JDK Flight Recorder JFRはモニタリングとプロファイリングのための強力なツールで、 多くの場合、すでにあなたのアプリケーションに組み込まれてい ます - あなたはそれをオンにするだけです。 Cryostat

    Kubenetesでアプリケーションを実行する際に、JFRの記録を有 効化、開始、停止し、それらの記録を取得、分析するのに役立ち ます。Cryostat Operatorを使用して、簡単Kubenetesにインス トールできます。 31 Source: https://cryostat.io/guides/ Cryostat まとめ
  12. 私たちとの関わり方 33 Red Hat リソース catalog.redhat.com/software/operators/detail/60ee049a 744684587e218ef5 Red Hat エコシステム・カタログ

    developers.redhat.com/search?t=cryostat Red Hat Developer 記事 access.redhat.com/documentation/en-us/openjdk/11 Red Hat Customer Portal ドキュメント
  13. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat 34 Red Hat is the world’s

    leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you