2025年10月14日
[JENNIFER Kubernetesの自動インストールと利用方法]
JENNIFER APMの自動インストール
1. Kubernetesの課題

Kubernetes環境でのアプリケーション性能モニタリングは、サービスの安定性、ユーザーエクスペリエンスとコストパフォーマンスを保障することが重要です。 これはトラブルがユーザーに影響を及ぼす前に潜在的な問題を早期に検知し、迅速に解決することに繋がります。
また、実際のリソース使用量を把握して不要なコストを防止し、リソースを効率的に運用できるようにします。更に、過去のデータを基に将来のトラフィックの変化を予測してサービス量を計画し、新しい機能の提供後にも性能低下がないか素早く検証して、開発や運用の効率性を向上できます。
性能モニタリングはKubernetes基盤サービスが継続的に最高の性能を維持しながら、ビジネス目標を達成することをサポートする重要な行為です。
このようにKubernetes運用環境ではアプリケーション性能モニタリングの重要性が、より高まりつつあります。一方、アプリケーション性能モニタリングをサポートするベンダーとして、JENNIFERにはKubernetes運用環境の新しい課題を抱えることになりました。
2. JENNIFERの課題
Kubernetesでアプリケーション配布は、アプリケーションコンテナイメージを作るプロセスが必要です。先ず、配布するアプリケーションコードを準備することから始めます。次に、コードを含めてアプリケーションの実行に必要な全ての構成要素(ランタイム、ライブラリなど)を定義する Dockerfile(コンテナイメージを定義するファイル)を作成します。このDockerfileを基にコンテナイメージをビルドし、最終的にビルドされたイメージをDocker Hubと同じ コンテナレジストリにアップロード(プッシュ)して、Kubernetesが利用できるように準備します。
生成したアプリケーションをモニタリングするために作成したアプリケーションイメージに、性能モニタリングライブラリと関連ファイルを追加する作業をします。
# Dockerfileの例
# JavaアプリケーションにJENNIFERエージェント追加
FROM openjdk:21
# SpringBootプロジエクトのコピー
COPY /usr/local/spring/sample /home/jennifer/spring
# Jenniferの設定
ENV JENNIFER_HOME=/jennifer/agent.java
RUN mkdir -p ${JENNIFER_HOME}
COPY ./agent.java ${JENNIFER_HOME}
ENV JENNIFER_JAVA_OPT="-javaagent:${JENNIFER_HOME}/jennifer.jar -Djennifer.config=${JENNIFER_HOME}/conf/jennifer.conf"
# java実行時オプション追加
ENTRYPOINT[ “java”, ${JENNIFER_JAVA_OPT}, “-jar”, “/home/jennifer/spring/sample.jar”]
以上、性能モニタリングまで準備して、Kubernetesに下記のイメージ配布フローに沿ってアプリケーション配布を新たに実行します。

このフローが基本的に行うプロセスですが、問題はAPMエージェントとして運用上不便な状況が発生します。
APMエージェントのアップグレード
エージェントにはバグがある可能性があり、最新ライブラリのサポートのためにもエージェントのアップグレード作業は必要です。この場合、アプリケーション内に変更がなくてもイメージの新規生成から、アップロード、配布までの一連のプロセスが必要です。既存のJENNIFERではエージェントアップグレード機能を設定画面でサポートしますが、コンテナ環境ではアプリケーションが実行する度に既にインストールしているバージョンで再度生成されるため、新しい方法が必要でした。
モニタリングの設定変更によるアップデート
アプリケーション特性と詳細モニタリング設定のためにモニタリングオプションを変更することがあります。この時、構成ファイルを変更して、イメージの新規生成から、ビルド、アップロード、配布までの一連のプロセスが必要です。つまり、メインアプリケーションのイメージの変更は無いのにモニタリングのために追加のイメージ管理の作業が頻繁に発生することが、モニタリングベンダーとして大きな課題でした。もちろん、この課題を解決するのにKubernetesがサポートする方法を利用できます。
例えば、PV/PVCを利用する方法がありますが、NAS、PV/PVC設定ミスや、エラー発生時は正常に動作しない可能性があります。モニタリング対象のアプリケーションによってはエージェントのバージョンとオプションが異なり、設定ファイルを複数のファイルに分離して、各ファイルにどのデプロイメントとマッチングできるか管理が必要なため、管理担当者の作業が増えることになります。
また、別の方法で、エージェントだけを含むイメージにエージェントのオプション設定をモニタリング対象デプロイメントに変数、コンフィグマップで指定して利用することもできます。しかし、この場合もやはり変更の都度、デプロイメントを編集し、数百個以上のデプロイメント基盤に運用するKubernetes環境では安定的な運用のためのエージェントの設定管理が難しくなります。
3. Kubernetesの課題の解決:
JENNIFER APM自動インストール
(出願番号:10-2025-0084024特許出願中)
JENNIFER APM自動インストールは、前述の課題を解決してKubernetesプラットフォーム内でアプリケーション性能管理ソリューションの管理の問題を画期的に改善しました。JENNIFER Kubernetesの「APM自動インストール」はKubernetesでJENNIFER APMをインストールする改善方法で、Init Container(初期化コンテナ)を活用する効果的な方法をサポートします。
特に、アプリケーションイメージ自体を変更せず、APMパッケージと関連設定をアプリケーションに適用するため、管理者はアプリケーションと分離してAPMエージェントの管理を簡単にできます。
Javaアプリケーションと同様にAPMエージェントをJVMオプション(-javaagent)で付加する場合、アプリケーションイメージ内にエージェントJARファイルを直接含まず、Init Containerで付加する方法があります。Init ContainerがJENNIFER APMエージェントパッケージと設定ファイルをダウンロードして共有ボリュームに保存し、メインアプリケーションコンテナは共有ボリュームをマウントして該当JARファイルを使用するようにJVMオプションを設定します。
毎回少しの変更でもイメージファイルを生成して、APMエージェントパッケージを挿入し、JVMオプションを手動で設定するのではなく、JENNIFER APMエージェントのインストールと管理を簡単にできるようにしました。
この方法のメリットは下記の通りです。
① アプリケーションイメージのリビルドが不要で性能モニタリングが可能
アプリケーションイメージ自体はAPMエージェントに対する従属性がなくピュアに維持されます。これはイメージビルドのプロセスを単純化して、イメージサイズを削減し、APMエージェントのバージョンアップグレード時に、アプリケーションイメージを再ビルドする必要がありません。
② APMエージェントのバージョン管理が簡単
Init Containerは指定された設定ID値に合致したAPMエージェントのバージョンに簡単にアップグレードできます。エージェントパッケージのアップグレードのためのエージェントを別途管理しなくても、JENNIFER画面で管理するのでバージョン管理が簡単です。
③ 中央集中的なエージェント管理
全てのアプリケーションPodが同じ方法でエージェントと設定ファイルを使用するため、エージェントの一貫した配布と運用が保証されます。
4. JENNIFER APM自動インストールの簡潔な利用方法
JENNIFER APMの自動インストールと管理は次の3つのステップで構成されています。
1つ目はパッケージ管理です。自動インストールメニューの 「エージェントパッケージの管理」でJENNIFERエージェントを言語別 (JAVA、.NET Core、PHP、Python)、バージョン別に登録します。エージェントパッケージがバージョン別に登録されるため、パッケージのヒストリー管理もできます。

2つ目は設定IDの管理です。 ここで設定IDがアプリケーションPodの注釈 (Annotation)として指定されて、インストールするパッケージのバージョンとAPMエージェントの設定を管理する単位になります。設定IDは自動的に割り当てられ、管理者は使用するエージェント、パッケージと適用するオプションのみを指定します。


3つ目は対象アプリケーションの設定です。 生成された設定IDをモニタリングが必要なアプリケーションデプロイメントの中のPodに設定します。JENNIFER APMエージェント自動インストールに必要な注釈(Annotation)を追加するプロセスは下記の通りです。
例) k8s.jennifersoft.com/apm-agent-config-id:“a1b2c3d4” をデプロイメントの中のPodのメタデータ領域に追加し、設定IDを付加して再配布をすると、即座にアプリケーションモニタリングを開始します。


再配布をするとJENNIFER Kubernetesアプリケーション統合ダッシュボードでデプロイメントまたは個別Podの状態と処理中のトランザクションの状況をリアルタイムモニタリングできます。
5. JENNIFERの課題解決と意味

JENNIFER APMエージェント自動インストールはJENNIFER Kubernetesサーバーで言語別にパッケージ管理し、アプリケーションのデプロイメント毎に異なるオプション設定を分類して管理と配布ができる効率的な方法です。
つまり、アプリケーションコンテナイメージ自体を編集しないで、デプロイメントまたは別のKubernetes内の変数やリソースを設定しなくても、JENNIFERエージェント関連パッケージと設定ファイルを動的に付加し利用できる、JENNIFERだけのAPM自動インストール方法です。


この方法は既に多様なサービスと環境に適用し、最適化されて安定性と効率性が実証済みです。APM自動インストールは多くのユーザーとプロジェクトに適用され、発生した多様な例外的な状況や要求事項に対応しています。また、初期化コンテナ基盤のエージェントの配布と設定をより強化し信頼できる方法でサポートし、現在、大規模なサイトで適用、運用されています。
尚、ご不明点や改善点などありましたら、ご指摘をお願い致します。