• ログイン無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

JMXモニタリングの統合

当社のJMX 統合 では、JMXでメトリクスを公開しているあらゆるアプリケーションを監視することができます。この統合には、JVM から主要なメトリクスを自動的に収集するデフォルトの収集ファイルが含まれています。また、YAML ファイルを使ってメトリクスの収集をカスタマイズし、任意のサブセットを収集することもできます。

統合をインストールし、収集するデータを確認するために読んでください。

互換性と要件

私たちの統合は、Java8以降と互換性があります。 PATHで構成されているものとは異なるJavaバージョンを使用する必要がある場合は、GitHubにあるNewRelicの構成ドキュメントに従ってください。

統合をインストールする前に、次の要件を満たしていることを確認してください。

インストールしてアクティブ化する

JMXインテグレーションをインストールするには、お使いの環境に応じた指示に従ってください。

''

その他の注意事項:

  • 高度:統合はtarball形式でも利用可能であり、パッケージマネージャーの外部にインストールできます。
  • インフラストラクチャエージェントがnri-jmxバイナリを実行すると、パスがPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binに設定されます。 Javaバイナリは、これらのパスの1つに含まれている必要があります。
  • nrjmx およびjmxは、JavaバイナリがシステムPATHに存在する必要があります。これはrootユーザーのPATHではなく、 /root/.bashrcPATH環境変数を変更しても影響を受けません。 PATHシステム変数を変更する方法の詳細をお読みください。
  • オンホスト統合は自動的に更新されません。最良の結果を得るには、統合パッケージとインフラストラクチャエージェントを定期的に更新してください。

統合を構成する

統合のYAML形式の構成では、必要なログイン資格情報を配置し、データの収集方法を構成できます。どのオプションを変更するかは、セットアップと設定によって異なります。

インストール方法に応じて、統合を構成する方法はいくつかあります。

JMX 統合では、 統合設定オプションメトリクス収集オプション の 2 種類の YAML ファイルを使用して、統合データを定義し、収集します。

設定オプションは以下の通りです。例については、 Example config をご覧ください。

統合設定ファイル

構成ファイルには、 intervaltimeoutinventory_sourceなどのすべての統合に適用できる共通の設定があります。これらの一般的な設定についてすべて読むには、 構成フォーマットのドキュメントを参照してください。

重要

従来の設定・定義ファイルを使用している場合は、 標準設定書 を参考にしてください。

JMXに関連する特定の設定は、構成ファイルのenvセクションを使用して定義されます。これらの設定は、JMXインスタンスへの接続、およびその他のセキュリティ設定と機能を制御します。有効な設定のリストについては、このドキュメントの次のセクションで説明します。

設定オプションは以下の通りです。設定例については、 example config file を参照してください。

JMX インスタンスの設定

JMX 統合では、メトリクス(M )とインベントリ(I )の両方の情報を収集します。以下の「 Applies To 」欄をチェックして、各コレクションに使用できる設定を確認してください。

例として、 ホスト接続ファイルの例 を参照してください。

'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''

設定

説明

デフォルト

に適用されます

JMX_HOST

JMXが動作しているホストです。

localhost

M / I

JMX_PORT

JMXが動作しているポートです。

9999

M / I

JMX_URI_PATH

JMX サービス URI のパス部分です。これは、非標準のサービス URI の場合に便利です。

該当なし

M / I

JMX_USER

JMX接続用のユーザー名です。

該当なし

M / I

JMX_PASS

JMX接続のパスワードです。

該当なし

M / I

JMX_REMOTE

(JBoss固有)JMXリモートURL接続形式を使用するかどうか。 trueの場合、接続はデフォルトでJBossドメインモードになります。

false

M / I

jmx_remote_jboss_standlone

(JBoss固有)JBossスタンドアロン接続形式を使用するかどうか。 jmx_remoteが設定されている場合にのみ関連します。

false

M / I

CONNECTION_URL

完全なJMXエンドポイントのURL。これは、1行ですべてのパラメータを提供することで、すべての接続引数(上記)を置き換えます。

例: "service:jmx:rmi:///jndi/rmi://localhost:7199/jmxrmi"

該当なし

M / I

コレクション_ファイル

メトリックコレクション定義ファイルへの完全なファイルパスのコンマ区切りリスト。オンホストインストールの場合、デフォルトのJVMメトリック収集ファイルは/etc/newrelic-infra/integrations.d/jvm-metrics.ymlにあります。

該当なし

M / I

collection_config

メトリクス・コレクションの設定をJSONで表したもの。

Jvmの例。

COLLECTION_CONFIG='{"collect":[{"domain":"java.lang","event_type":"JVMSample","beans":[{"query":"type=GarbageCollector,name=*","attributes":["CollectionCount","CollectionTime"]},{"query":"type=Memory","attributes":["HeapMemoryUsage.Committed","HeapMemoryUsage.Init","HeapMemoryUsage.Max","HeapMemoryUsage.Used","NonHeapMemoryUsage.Committed","NonHeapMemoryUsage.Init","NonHeapMemoryUsage.Max","NonHeapMemoryUsage.Used"]},{"query":"type=Threading","attributes":["ThreadCount","TotalStartedThreadCount"]},{"query":"type=ClassLoading","attributes":["LoadedClassCount"]},{"query":"type=Compilation","attributes":["TotalCompilationTime"]}]}]}'

Tomcatの例。

COLLECTION_CONFIG={"collect":[{"domain":"Catalina","event_type":"TomcatSample","beans":[{"query":"type=UtilityExecutor","attributes":["completedTaskCount"]}]}]}

COLLECTION_CONFIG アノテーションを使用してKubernetesでnri-jmxを設定するのに便利です。

該当なし

M / I

KEY_STORE

JMXクライアントのSSL証明書を含むキーストアのファイルパスです。

該当なし

M / I

キー・ストア・パスワード

SSLキーストアのパスワードです。

該当なし

M / I

LOCAL_ENTITY

ローカルエンティティのすべてのメトリクスを収集します。ローカルホストを監視する場合にのみ使用します。

false

M / I

タイムアウト

個々のJMXクエリのタイムアウトをミリ秒単位で指定します。

10000

M / I

TRUST_STORE

JMXサーバーのSSL証明書を含むキーストアのファイルパスです。

該当なし

M / I

trust_store_password

トラストストアのパスワードです。

該当なし

M / I

METRIC_LIMIT

エンティティごとに収集可能なメトリクスの数。この制限を超えた場合、そのエンティティは報告されません。0の制限は制限がないことを意味します。

200

M / I

METRICS

メトリックのみの収集を有効にするには、 trueに設定します。

false

在庫

インベントリのみの収集を有効にするには、 trueに設定します。

false

これらの設定の値は、いくつかの方法で定義できます。

  • 設定ファイルに直接値を追加します。これが最も一般的な方法です。
  • {{}}表記を使用して環境変数の値を置き換えます。これには、インフラストラクチャエージェントv1.14.0以降が必要です。詳細については、 こちらをご覧になるか、以下のをご覧ください。
  • シークレットマネジメントの使用。設定ファイル上に平文で表示されている機密情報(パスワードなど)を保護するために使用します。詳細については、 secrets management を参照してください。

ラベルとカスタム属性

また、ラベルを使ってメトリクスをさらに装飾することもできます。このような場合には、次のようになります。

デフォルトのサンプル設定ファイルには、ラベルの例が含まれています。これらは必須ではありませんので、お好きなものを削除、変更、追加してください。

labels:
env: production
role: jmx

メトリクス収集ファイル

メトリクス・コレクション定義ファイルは構造化されたYAMLファイルで、どのようなメトリクスを収集するかをインテグレーションに伝えます。構成例については、 メトリクス・コレクション・ファイルの例 を参照してください。

デフォルトのJVMメトリック収集ファイル: /etc/newrelic-infra/integrations.d/jvm-metrics.yml

ヒント

整理やメンテナンスを容易にするために、異なるコレクションファイルを書くことができます。例として、 設定ファイル を参照してください。

ドメイン

統合により、ドメインに従ってメトリックが収集および編成されます。ドメインごとに定義されたすべてのメトリックはNewRelicに送信され、対応するイベントタイプで見つけることができます。このイベントタイプは自動生成されるか、ユーザーが設定できます。各ファイルには、ドメインの配列を含む単一のcollect:ブロックが含まれています。ドメインごとに、次のキーが定義されています。

  • domain:JMXドメイン;たとえば、 java.lang 。ワイルドカードを使用して、複数のドメインを照合できます。たとえば、 java.* 。ワイルドカードを使用する場合は、 event_typeが必要であり、一意である必要があります。この項目は必須です。
  • event_type:このドメインのコレクションのイベントタイプ名。ドメインがワイルドカード化されている場合、これは必須であり、一意である必要があります。ドメインがワイルドカード化されておらず、これがユーザーによって定義されていない場合、これは自動生成されます。たとえば、ドメインjava.langのイベントタイプはJavaLangSampleになります。詳細については、命名のヒントを参照してください。
  • beans:このドメインで収集するBeanの配列。

重要

設定ファイルには、1つのインスタンスにつき200のメトリクスの制限があります。特定のインスタンスで制限を超えた場合は、New Relic に送信されません。New Relic にデータが表示されない場合は、 トラブルシューティング手順 を確認して、制限を超えていないかどうかを確認してください。

豆類

各ドメインには、収集対象となる Bean の配列が含まれます。各ビーンには、以下のキーが定義されています。

  • query:収集するBean名。たとえば、 type=GarbageCollector,name=YoungGen 。ワイルドカードを使用できます。たとえば、 type=GarbageCollector,name=* 。この項目は必須です。
  • exclude_regex:コレクションから除外するBeanに一致する正規表現パターンのオプションのリスト。たとえば、 type=GarbageCollector,name=.*
  • attributes:収集する属性のリスト。指定しない場合は、すべての属性を収集します。

重要

HashMapおよびArrayListデータ型はサポートされていません。

属性

各Beanは、コレクションから除外できるBeanの任意のリストである属性を含むことができる。各属性には、以下のキーが定義されています。

重要

マップ属性の場合、 attr }キーまたはattr_regexキーのいずれかを定義する必要があります。

  • attr:属性名と完全に一致します。複合属性は、複合メンバー名を属性名にドットで追加することで収集できます。たとえば、 HeapMemoryUsage.Max

  • attr_regex:収集する属性に一致する正規表現パターン。

  • metric_type:この属性を収集するためのNewRelicメトリックタイプ。オプションは次のとおりです。

    • gauge:データは瞬時の数値測定として収集されます。
    • rate:データは、1秒あたりのそのメトリックの変化として収集されます。
    • delta:データは、最後の測定以降のそのメトリックの変化として収集されます。
    • attribute:データは文字列リテラルとして収集されます。

    指定しない場合、JMX統合は、返された値に基づいてメトリックタイプを推測しようとします。たとえば、メトリックが数値の場合、それはgaugeとして収集されます。メトリックが文字列の場合、 attributeとして収集されます。

    誤ったメトリックタイプでメトリックが収集された場合、収集ファイルに正しいメトリックタイプを手動で指定することができます。

  • metric_name:メトリックがNewRelicに表示される名前。指定しない場合、デフォルトで属性名になります。

JMXクエリの詳細については、 Oracle ObjectName のドキュメントを参照してください。

Kubernetesのアノテーションを利用したコレクションの設定

Kubernetesアノテーションを使用して、コレクション構成を提供できます。これを実現するには、 nri-jmxアプリケーションの構成ファイルを作成するKubernetesクラスターにconfigMapをデプロイする必要があります。

この設定ファイルでは、 container auto-discovery のコマンドを指定する必要があります。これにより、Kubernetesのアノテーションを含む統合設定でプレースホルダーを使用することができます。

TomcatアプリケーションでJVMを監視するためのconfigMapの例:

次に、アノテーションを使ってコレクションの構成を定義します。例えば、アノテーションを使用したTomcatのデプロイメントを示します。

apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deployment
labels:
app: java
spec:
replicas: 1
selector:
matchLabels:
app: java
template:
metadata:
annotations:
newrelic.config: >-
{
"collect": [
{
"domain": "java.lang",
"event_type": "JVMSample",
"beans": [
{
"query": "type=GarbageCollector,name=*",
"attributes": [
"CollectionCount",
"CollectionTime"
]
},
{
"query": "type=Memory",
"attributes": [
"HeapMemoryUsage.Committed",
"HeapMemoryUsage.Init",
"HeapMemoryUsage.Max",
"HeapMemoryUsage.Used",
"NonHeapMemoryUsage.Committed",
"NonHeapMemoryUsage.Init",
"NonHeapMemoryUsage.Max",
"NonHeapMemoryUsage.Used"
]
},
{
"query": "type=Threading",
"attributes": [
"ThreadCount",
"TotalStartedThreadCount"
]
},
{
"query": "type=ClassLoading",
"attributes": [
"LoadedClassCount"
]
},
{
"query": "type=Compilation",
"attributes": [
"TotalCompilationTime"
]
}
]
}
]
}
labels:
app: java
spec:
containers:
- name: tomcat
image: tomcat:10.0.12
ports:
- containerPort: 9999
env:
- name: CATALINA_OPTS
value: '-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'

オプションカスタムコネクタ

JMX では、アプリケーションとの通信にカスタム・コネクタを使用することができます。カスタムコネクターを使用するには、nrjmx クラスパスにカスタムコネクターを含める必要があります。

デフォルトでは、サブフォルダーconnectorsはクラスパスにあります。このフォルダが存在しない場合は、nrjmxがインストールされているフォルダの下に作成してください。

たとえば、JBossのサポートを追加するには、デフォルト(Linux)ライブラリパス/usr/lib/nrjmx//usr/lib/nrjmx/connectors/ )の下にconnectorsという名前のフォルダーを作成し、カスタムコネクターjar( $JBOSS_HOME/bin/client/jboss-cli-client.jar )をそのフォルダーにコピーします。これで、JBossに対してJMXクエリを実行できます。

構成例

オン・ホスト・インストールのためのファイル構成例。

オンホスト統合構成の一般的な構造の詳細については、「 構成」を参照してください。

データのネーミングのコツ

メトリクスは、サンプルの形で送信・保存されます。これは、メトリックデータとメタデータを含むキーと値のペアのリストです。各サンプルは、New Relic のイベントデータベースに イベント として保存されます。

New Relic に報告する JMX データの作成と命名は、お客様の責任で行ってください。このため、New Relic では、イベントタイプの名前を付ける際に、これらの規約に従うことを強く推奨します。一貫した命名法を行うために。

  • キャメルケースを使う。
  • どのようなデータが含まれているのかが明確にわかるような名称を使用してください。

例: MyorgApplicationSample

推奨: 異なるアプリケーション間で類似したメトリクスに同じ命名法を使用する。

データを見つけて使用する

このサービスからのデータは、 統合ダッシュボードに報告されます。

JMXデータは、構成ファイルで指定されたユーザー定義のイベントタイプに添付されます。たとえば、JMX統合を使用してTomcatを監視することに関心がある場合は、 TomcatSample }というevent_typeを定義し、そのイベントタイプをクエリします

トラブルシューティングの目的で、またはカスタムチャートとダッシュボードを作成するために、このデータをクエリできます。

データを検索して使用する方法の詳細については、統合データについてを参照してください。

メトリックデータ

統合によって生成されたメトリクスには、収集元である MBean に関連するメタデータが含まれます。このメタデータを NRQL クエリ で使用して、クエリが目的のビーンのデータのみを返すように、データをフィルタリングおよびファセットすることができます。また、メトリクス名はすべてのビーン間で一意であるとは限らないため、メトリクスを一意に識別するために使用することもできます。

各イベントには、以下のメタデータが含まれています。

名前

説明

displayName

これらのメトリクスのJMXドメイン名です。

entityName

これらのメトリクスのJMXドメイン名に、エンティティタイプの「domain:」を前置したもの。

host

メトリクスを収集しているJMXホストです。

query

これらのメトリクスを収集するために使用されるクエリ。

bean

これらのメトリクスが収集された属性を持つBean。

key:<mbean_key>

Bean名のキーごとに、Beanのキーの値を使用して“key:<mbean_key>というメトリックセットに属性が追加されます。

NRQLクエリの例

ここでは、収集されたすべてのJVMガベージコレクターをメタデータモニターで活用した、 NRQL クエリの例を示します。

SELECT latest(CollectionTime)
FROM JVMSample
FACET `key:name`
WHERE `key:type` = 'GarbageCollector'

メトリクスデータの属性

JMXインテグレーションでは、以下のメトリックデータ属性を収集します。

名前

説明

HeapMemoryUsage.Used

使用されたJavaヒープメモリの合計。

HeapMemoryUsage.Committed

使用するためにコミットされたJavaヒープメモリの合計。

HeapMemoryUsage.Init

最初に割り当てられたJavaヒープメモリ。

HeapMemoryUsage.Max

利用可能な最大のJavaヒープメモリです。

NonHeapMemoryUsage.Used

使用されたJavaの非ヒープメモリの合計。

NonHeapMemoryUsage.Committed

使用するためにコミットされたJavaの非ヒープメモリの合計。

NonHeapMemoryUsage.Init

最初に割り当てられたJavaの非ヒープメモリ。

NonHeapMemoryUsage.Max

利用可能なJavaの非ヒープメモリの最大値です。

ThreadCount

ライブスレッドの数です。

CollectionCount

発生したガベージコレクションの総数です。

CollectionTime

経過したおおよその累積ガベージコレクション時間です。

在庫データ

JMX 統合の構成パラメータをキャプチャします。このデータは、 インベントリページconfig/jmx ソースの下にあります。インベントリデータの詳細については、 Understand integration data を参照してください。

トラブルシューティング

トラブルシューティングのヒント:

''

''

ソースコードを確認してください

このインテグレーションは、オープンソース・ソフトウェアです。つまり、 そのソースコードを閲覧して 改良を送ったり、独自のフォークを作成して構築することができます。

Copyright © 2022 New Relic株式会社。