New RelicでのJMX取得方法
New Relicでは、基本的なメトリクスについては、デフォルトでJMXの値を取得しています。
デフォルトで取得できるメトリクスはこちらを参照してください。
補足:JMXとは?
JMX(Java Management Extensions)とは、Javaアプリケーションで動作状況をモニタリングし、管理するための標準的なフレームワークです。JMXを使用すると、リソース(アプリケーション、システムオブジェクト、デバイスなど)を管理するためのツールを開発および統合することが容易になります。
記載されていないメトリクスについても、カスタムJMX YAMLを作成することで、New Relicに連携できます。
カスタムJMX YAMLを使ってNew Relicに連携してみた
今回は、公式手順に従って、AWS上に構築したWebLogicサーバから、New Relicがデフォルトで取得していないJMXであるPending Requests
をカスタムJMX YAMLを使ってNew Relicに連携してみました。
補足:WebLogicのPending Requestsとは?
WebLogicの優先度キューにある、保留中のユーザー・リクエストの数です。優先度キューには、内部サブシステムやユーザーからのリクエストが含まれています。これはユーザー・リクエストのみの数です。
WebLogicの管理画面では、以下から確認できます。
Environment > Servers > Monitoring > Threads > Pending Requests
環境
- クラウド:AWS
- サーバ:EC2
- OS:Red Hat Enterprise Linux 9.3
- ミドルウェア:WebLogic 12.2.1.4.0
- 取得するJMXパラメタ:PendingUserRequestCount
前提
- WebLogicのインストールが完了していること
- New Relic側にWebLogicのIntegrationが完了していること
ステップ1. ディレクトリ作成
対象のアプリのagent(newrelic.jar
)が保存されているフォルダにextensions
というディレクトリを作成します。
mkdir /opt/newrelic/extensions
ステップ2. カスタムJMX YAML作成
ステップ1で作成したディレクトリの配下にyaml形式のファイルを配置します。
ファイル名は拡張子が.ymlであれば任意です。今回はweblogic.yml
とします。
name: WebLogicCustom
version: 1.0
enabled: true
jmx:
- object_name: com.bea:ServerRuntime=AdminServer,Name=ThreadPoolRuntime,Type=ThreadPoolRuntime
metrics:
- attributes: PendingUserRequestCount
type: simple
それぞれのパラメタの設定方法を説明します。
key | value | 補足 |
---|---|---|
name | WebLogicCustom |
任意 |
version | 1.0 |
任意 |
enabled | true |
true(有効) or false(無効)から選択 |
object_name | (Object名) | JConsoleなどを使って確認 |
attributes | (属性名) | JConsoleなどを使って確認 |
type | simple |
simple (値)とmonotonically_increasing (増分値)の2つから選択 |
object_nameとattributesはJConsoleから確認しましょう。
補足:各パラメタの設定の仕方の詳細は、公式ドキュメントを参照してください。
ステップ3. カスタムJMX YAMLファイルの読み込み確認
ログレベルの変更
エージェントがYAMLファイルを読み込んでいることを確認するため、newrelic.yml
のlog_level
をinfo
からfiner
に変更します。
# The agent uses its own log file to keep its logging
# separate from that of your application. Specify the log level here.
# This setting is dynamic, so changes do not require restarting your application.
# The levels in increasing order of verboseness are:
# off, severe, warning, info, fine, finer, finest
# Default is info.
- log_level: info
+ log_level: finer
警告
finer
はより詳細なログを出力するログレベルです。YAMLファイルが読み込まれていることが確認できたら、info
にログレベルを戻しておきましょう。
アプリケーションの再起動
設定変更を反映するため、WebLogicを起動します。
※既にに起動している場合は、停止して起動してください。
sh $DOMAIN_HOME/startWebLogic.sh
YAMLファイルの読み込み確認
newrelic_agent.log
ファイルに、ファイルが読み込まれたことを示す以下が含まれていることを確認します。
Reading custom extension file /opt/newrelic/extensions/weblogic.yml
補足
もし、このステートメントが見つからない場合は、YAMLファイルの場所を確認しましょう。また、プロセスにファイルに対する読み取りアクセス権があることも確認しましょう。
ファイルに以下のステートメントが含まれることを確認します。
Adding extension with name WebLogicCustom and version 1.0
補足
このステートメントが見つからない場合は、ドキュメントが正しく解析されていることを確認しましょう。より高いバージョン番号で、同じ名前の別の拡張ファイルがあるかどうかも確認しましょう。
ステップ4. New Relic側での確認
APM & Services > (App Name) > Metrics Explorer を選択し、Metricで"jmx"と検索すると、追加したJMXがメトリクスとして連携されていることが確認できます。
Add To dashboardからダッシュボードに追加することもできます。
その他のメトリクスも同様にカスタムJMX YAMLファイルにAttributeを追加し、Dashboardにまとめるとこのようになります。
まとめ
今回は、カスタムJMX YAMLを使って、New Relicへのメトリクス追加を試してみました。
YAMLファイルを作成することで、簡単にNew Relicでデータが確認できるようになりました。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!
New Relic株式会社のX(旧Twitter)や Qiita Organizationでは、新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。