Cryostat 2.0によるカスタムJFRイベントテンプレート

Red Hat で Java Platform Advocate として OpenJDK を担当している伊藤ちひろ(@chiroito)です。

この記事は、Red Hat Developerのブログ記事、Custom JFR event templates with Cryostat 2.0 | Red Hat Developer の翻訳記事です。


https://developers.redhat.com/sites/default/files/styles/article_feature/public/2020_Java_ContainerJFR_Featured_Article__A-01.png?itok=K_g-UdJY

Cryostat 2.0の使い方をハンズオンで紹介するシリーズにようこそ。この記事では、JDK Flight Recorder (JFR) を使用して Java アプリケーションを監視するためのカスタムイベントテンプレートを事前に設定する方法を紹介します。まず、新しい Cryostat Operator と Red Hat OpenShift ConfigMap を使用してカスタムイベントテンプレートを作成し、Cryostat Operator に Cryostat のデプロイ時に ConfigMap を使用するよう指示します。OpenShift コンソールを使用して Cryostat と対話するか、Cryostat カスタムリソース用の YAML ファイルを編集することができます。今回はどちらの方法も実演します。

このシリーズの全記事を読む

注意: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をデプロイする名前空間では、ockubectlを利用できます。前者を使う場合のソースはこちらです。

$ 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 を使用しています。

https://developers.redhat.com/sites/default/files/styles/article_floated/public/create-cryostat-template-config-map.png?itok=McevdC0z

図1. JDKの.jfcイベントテンプレート定義ファイルを用いてConfigMapを作成

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に示すように、テンプレートが存在し、新しいフライトレコーディングの作成に使用できることが表示されます。

https://developers.redhat.com/sites/default/files/styles/article_floated/public/cryostat-template-from-config-map.png?itok=FxLG5uud

図2. イベントテンプレートリストには、ConfigMapで作成されたテンプレートが表示

まとめ

この記事では、OpenShift ConfigMaps を使用してカスタマイズされたイベントテンプレートで Cryostat を事前構成する方法を学びました。カスタマイズされたテンプレートを使用すると、フライトレコーディングであなたが必要とする特定のデータを収集できます。Cryostat.io にアクセスし、このシリーズの他の記事でさらに詳細をご覧ください。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。