Red Hat で Java Platform Advocate として OpenJDK を担当している伊藤ちひろ(@chiroito)です。
この記事は、Red Hat Developerのブログ記事、Custom JFR event templates with Cryostat 2.0 | Red Hat Developer の翻訳記事です。
Cryostat 2.0の使い方をハンズオンで紹介するシリーズにようこそ。この記事では、JDK Flight Recorder (JFR) を使用して Java アプリケーションを監視するためのカスタムイベントテンプレートを事前に設定する方法を紹介します。まず、新しい Cryostat Operator と Red Hat OpenShift ConfigMap
を使用してカスタムイベントテンプレートを作成し、Cryostat Operator に Cryostat のデプロイ時に ConfigMap
を使用するよう指示します。OpenShift コンソールを使用して Cryostat と対話するか、Cryostat カスタムリソース用の YAML ファイルを編集することができます。今回はどちらの方法も実演します。
このシリーズの全記事を読む
- Part 1: Cryostat 2.0を発表:コンテナ用JDK Flight Recorder - 赤帽エンジニアブログ
- Part 2: Cryostatを使用するためのJavaアプリケーションの設定 - 赤帽エンジニアブログ
- Part 3: CryostatによるカスタムターゲットのJavaモニタリング - 赤帽エンジニアブログ
- Part 4: Automating JDK Flight Recorder in containers - 赤帽エンジニアブログ
- Part 5: https://rheb.hatenablog.com/entry/custom-jfr-event-templates-cryostat-20
注意:CryostatはKubernetesまたはRed Hat OpenShiftのためのJDK Flight Recorderです。Cryostat 2.0 の Red Hat ビルドは、現在、技術プレビューで広く利用できます。Red Hat ビルドには、Red Hat OpenShift 上での Cryostat のデプロイを簡素化および自動化するための Cryostat Operator が含まれています。
カスタムテンプレートとConfigMapの作成
Cryostatでは、既存のテンプレートファイルをJava仮想マシン(JVM)から直接ダウンロードできます。テンプレートファイルをローカルマシンにダウンロードしたら、JDK Mission Control (JMC) テンプレートマネージャを使用して、目的に合ったテンプレートを簡単に編集できます。
テンプレートファイルをカスタマイズした後、そこからConfigMap
を作成するのはとても簡単です。このConfigMap
は、Cryostatが実行されるクラスタ内にテンプレートファイルを格納します。Cryostatをデプロイする名前空間では、oc
やkubectl
を利用できます。前者を使う場合のソースはこちらです。
$ oc create configmap my-template --from-file=/path/to/custom.jfc
このコマンドは、ローカルマシンの /path/to/custom.jfc
にあるファイルから my-template
という名前の ConfigMap
を作成します。このファイルは、ConfigMap
内の custom.jfc
というファイル名で配置されます。
Cryostat OperatorにConfigMapを追加
ConfigMap
を作成したら、Cryostat Operator に Cryostat のデプロイ時にそれを使用するように指示するだけです。これは、Cryostatのカスタムリソースを作成するとき、または既存のリソースを更新することで、行えます。OpenShift コンソールを使用して Cryostat をインストールしている場合、更新したい Cryostat カスタムリソースの下にある Event Templates を選択します。Add Event Template を選択します。Config Map Name ドロップダウン リストには、ローカル名前空間内のすべての ConfigMap
が表示されます。作成したイベントテンプレートが含まれるConfigMap
を選択します。Filename に、ConfigMap
内の .jfc
ファイルの名前を入力します。図 1 では、前のセクションで作成した custom.jfc
を使用しています。
CryostatカスタムリソースのYAMLを直接操作できます。手順はコンソールでやったことと似ています。spec
セクションに eventTemplates
プロパティがない場合は、追加してください。次に、ConfigMap
の名前を参照する configMapName
と、ConfigMap
内のファイル名を参照する filename
を持つ配列エントリを追加します。以下の YAML は、図 1 の OpenShift コンソールの例で行ったことを反映したものです。
apiVersion: operator.cryostat.io/v1beta1 kind: Cryostat metadata: name: cryostat-sample spec: eventTemplates: - configMapName: custom-template filename: my-template.jfc
Cryostatカスタムリソースに変更を保存すると、Cryostat Operatorはこのテンプレートがあらかじめ設定された状態でCryostatをデプロイします。CryostatのWebアプリケーションにアクセスすると、図2に示すように、テンプレートが存在し、新しいフライトレコーディングの作成に使用できることが表示されます。
まとめ
この記事では、OpenShift ConfigMaps を使用してカスタマイズされたイベントテンプレートで Cryostat を事前構成する方法を学びました。カスタマイズされたテンプレートを使用すると、フライトレコーディングであなたが必要とする特定のデータを収集できます。Cryostat.io にアクセスし、このシリーズの他の記事でさらに詳細をご覧ください。