YAMLによるカスタムJMXインストゥルメンテーション

Java SE Platformには、Java Management Extensions (JMX)が含まれます。JMXはアプリケーション、デバイス、サービスをモニターし、管理する1つの方法です。通常の場合、アプリケーションサーバーには監視できるJMXメトリックスが組み込まれています。

New RelicのJavaエージェントには、カスタムインストゥルメンテーションYAMLファイルを使用して、コードを変更せずにMBeansおよびアプリケーションの属性から特定のメトリックスを監視する機能があります。Javaエージェントは、起動時にYAMLファイルを読み込み、特定のメトリックスを記録します。カスタムJMXメトリックスを表示するには、New Relic Insightsのメトリックエクスプローラーを使用します。

要件

この機能を利用できるかは、 サブスクリプションレベルによります。

Javaエージェントは、現在のJVMのMBeansからのみメトリックスを表示します。リモートからMBeansにアクセスしている場合、またはMBeansが個別のJVMに存在している場合、New RelicのJavaエージェントはそれらを使用できません。

ビデオ

New RelicにJMXデータをインポートする方法の詳細については、このビデオをご覧ください(約7分)。


New RelicにJMXデータをインポートする方法の詳細については、このビデオをご覧ください(約7分)。

ファイル構造の規則

カスタムインストゥルメンテーションファイルは、YAML形式にする必要があります。New RelicのJavaエージェントで使用する前に、YAMLバリデータを使用して構文が正しいことを確認し、以下の規則に従ってください。

  • YAMLファイルには、大文字と小文字の区別があります。
  • すべてのインデントは、2文字の空白にします。ファイルの同じスタンザのデータは、同じレベルのインデントを使用する必要があります。サブスタンザは、2つの空白を追加してインデントします。
  • 変更を有効にするには、JVMホストプロセスを再起動する必要があります。

使用可能なプロパティ

以下に、JMXファイルの各プロパティをまとめます。詳細については、カスタムJMX YAMLの例をご覧ください。

定義
name YAMLカスタムインストゥルメンテーションファイルを識別するための分かりやすいプライマリ名。nameプロパティの前に1つのスペースを含めます。
version 拡張ファイルのバージョン。2つの拡張に同じ名前が付いている場合は、最新のバージョンの拡張のみが使用されます。versionプロパティは、必ずnameと別の行にしてください。versionプロパティの前に1つのスペースを含めます。
enabled trueの場合、Javaエージェントは拡張を読み取ります。falseの場合、Javaエージェントは拡張を無視します。enabledプロパティの前に1つのスペースを含めます。
jmx jmxプロパティの後に値はありません。プロパティの前にスペースは不要です。
object_name 特定のMBeanのオブジェクトに一致します。JDKバージョン1.6またはそれ以降を使用している場合は、object_nameにアスタリスク(*)を含めることができます。ダッシュの前に2つのスペース、ダッシュとobject_nameの間に1つのスペースを含めます。
root_metric_name New RelicのJavaエージェントのバージョン3.7.0またはそれ以降で利用可能です。New Relicで使用するメトリックに名前を付けるためのオプションのプロパティ。object_nameプロパティの値を使用するには、プロパティキーを中括弧({})で囲みます。New Relicは、root_metric_nameの前にJMXによって指定されたプレフィックスを自動的に付け、メトリックの最後に属性名を追加します。root_metric_nameの前に4つのスペースを含めます。
metrics metrics行に値はありません。metricsの前に4つのスペースを含めます。
attributes MBeanの属性のコンマ区切りのリストです。属性名は正確に一致する必要があります。ダッシュの前に6つのスペース、ダッシュとattributesキーワードの間に1つのスペースを含めます。
type
  • simpleの場合、New Relicコレクターに各値が毎分レポートされます。
  • monotonically_increasing(デフォルト)の場合、New Relicコレクターに正の差異が毎分レポートされます。

YAMLファイルの場所

Javaエージェントは、プロセスの開始時にYAMLファイルを読み込みます。YAMLファイルの場所を指定するには、以下の2つの方法があります。

extensionsディレクトリを作成する
  1. newrelic.jarnewrelic.ymlがあるディレクトリにextensionsという名前のディレクトリを作成します。
  2. このディレクトリにYAMLファイルを格納し、.ymlという拡張子を付けます。
  3. newrelic.ymlで、プロパティextensions.dirが設定されていないことを確認します。
既存のextensionsディレクトリを指定する
  1. newrelic.yml設定ファイルのcommonセクションで、プロパティextensions.dirを使用してYAMLファイルを格納するディレクトリを指定します。
  2. ファイルが指定したディレクトリにあり、ファイルの拡張子が.ymlになっていることを確認します。

エージェントと同じフォルダーに複数のYAMLファイルがある場合、カスタムメトリックは機能しません。カスタマイズするときは、バックアップやコピーを別のフォルダーに移動してください。

ファイルの読み込みを確認する

エージェントがYAMLファイルを読み込んでいることを確認するには:

  1. newrelic.yml設定ファイルを開きます。
  2. ログレベルのプロパティをlog_level: finerに変更します。
  3. アプリケーションを起動します。
  4. logs/newrelic_agent.logファイルに、ファイルが読み込まれたことを示す以下のステートメントが含まれていることを確認します。

      Reading custom extension file /path/to/file/file.yml
  5. このステートメントが見つからない場合は、YAMLファイルの場所を確認します。プロセスにファイルに対する読み取りアクセス権があることも確認します。
  6. ファイルに以下のステートメントが含まれることを確認します。

      Adding extension with name NAME_FROM_YAML and version VERSION_FROM_YAML
  7. このステートメントが見つからない場合は、ドキュメントが正しく解析されていることを確認します。より高いバージョン番号で、同じ名前の別の拡張ファイルがあるかどうかも確認します。

InsightsにカスタムJMXメトリックスを表示する

カスタムJMXメトリックスを表示するには、New Relic InsightsのMetric Explorerを使用して、カスタマイズしたチャートを検索および作成します。InsightsにJMXカウンタを表示するには:

  1. insights.newrelic.com > Data explorer > Metricsの順に移動し、JMXカウンタを保持するアプリケーションを選択します。
  2. JMXを探すか、YAMLファイルに設定されているカウンタへのパスを直接探します。
    カウンタへのパスを直接探す
    サンプルYAMLファイル
    name: TomcatCustom version: 1.0 enabled: true jmx: - object_name: java.nio:type=BufferPool,name=* metrics: - attributes: Count type: monotonically_increasing 

    カウンタは、サンプルYAMLファイル内のオブジェクトから探すことができます。Metric Explorerで、以下を検索します。

          JMX/java.nio/BufferPool/direct/Count
          JMX/java.nio/BufferPool/mapped/Count 

    メトリックスに名前を付けて保存する方法の詳細については、カスタムJMX YAMLファイルの例をご覧ください。

その他のヘルプ

推奨する詳細情報: