GenericJMX

GenericJMX モニターには、この Splunk Observability Cloud インテグレーションを使用してください。メリット、インストール、設定、メトリクスを参照してください

Splunk Distribution of OpenTelemetry Collector は、Smart Agent レシーバを genericjmx モニタータイプで使用して、管理情報を提供しクエリする汎用フレームワークである Java Management Extensions(JMX)上のメトリクスを公開します。このインターフェイスは、使用されるメモリとスレッドに関する情報を提供するために、Java 仮想マシン(JVM)によって使用されます。より柔軟な代替手段としては、「JMX モニター」を使用します。

注: ネイティブの OpenTelemetry コンポーネントを使用して OpenTelemetry Collector で JMX を監視するには、「JMX レシーバ」を参照してください。

このインテグレーションはKubernetesとLinuxでのみ利用可能です。

メリット

インテグレーションを設定すると、これらの機能にアクセスできるようになります:

インストール

このインテグレーションを導入するには、以下の手順に従ってください:

  1. Splunk Distribution of OpenTelemetry Collector をホストまたはコンテナプラットフォームにデプロイします:

  2. 設定のセクションで説明するように、モニターを設定します。

  3. Splunk Distribution of OpenTelemetry Collector を再起動します。

設定

Smart Agent モニターとCollector のインテグレーションを使用するには、以下の手順に従います:

  1. Smart Agent レシーバーを設定ファイルに含めます。

  2. レシーバーセクションおよびパイプラインセクションの両方で、Collector 構成にモニタータイプを追加します。

このインテグレーションを有効にするには、Collector構成に以下を追加します:

receivers:
  smartagent/genericjmx:
    type: collectd/genericjmx
    ...  # Additional config

次に、設定ファイルの service.pipelines.metrics.receivers セクションにモニターを追加します:

service:
  pipelines:
    metrics:
      receivers: [smartagent/genericjmx]

高度な設定例

次の例を参照してください:

receivers:
  smartagent/genericjmx:
    type: collectd/genericjmx
    host: my-java-app
    port: 7099
    mBeanDefinitions:
      threading:
        objectName: java.lang:type=Threading
        values:
          - type: gauge
            table: false
            instancePrefix: jvm.threads.count
            attribute: ThreadCount

コンフィギュレーション設定

次の表に、このモニターの設定オプションを示します:

オプション

必須

タイプ

説明

host

yes

string

接続先のホスト。JMX がリモートアクセス用に設定され

エージェントからアクセスできる必要があります。

port

yes

integer

アプリケーションの(RMI ポートではない)JMX 接続ポート。この

は、アプリケーションの実行時にJVMに設定されるべき com.sun.management.jmxremote.port Javaプロパティに対応しています。

name

いいえ

string

serviceName

いいえ

string

これは、Splunk

Observability Cloud UIでサービスタイプを識別して、内蔵コンテンツを取得する方法です。

serviceURL

いいえ

string

JMX 接続文字列。これは Go テンプレートとしてレンダリングされ、

この設定の他の値にアクセスできます。この文字列を直接設定しないでください。上で指定したようにホストとポートを設定することをお勧めします。デフォルト値は service:jmx:rmi:///jndi/rmi://{{.Host}}:{{.Port}}/jmxrmi です。

instancePrefix

いいえ

string

生成されたプラグイン・インスタンスにプレフィックスをつけます。第 2 の

instancePrefix が参照されるMBeanブロックで指定された場合、Connectionブロックで指定された接頭辞がプラグイン・インスタンスの先頭に現れ、MBeanブロックで指定された接頭辞がそれに追加されます。

username

いいえ

string

サーバーを認証するユーザー名

password

いいえ

string

サーバーを認証するためのユーザーパスワード

customDimensions

いいえ

map of strings

接続収集時にカスタムディメンションのキーと値のペアを取り込み

します。

mBeansToCollect

いいえ

list of strings

実際に収集するために mBeanDefinitions で定義されているMBeansの

リスト。指定しない場合、定義されたすべての MBeans が収集されます。

mBeansToOmit

いいえ

list of strings

省略する MBean のリスト。これは、ごく少数の

MBeansのみをデフォルトのリストから省く必要がある場合に有用です。

mBeanDefinitions

いいえ

map of objects (下表参照)

JMX MBean の値をメトリクスにマッピングする方法を指定します。特有

のサービスモニター(Cassandra、Kafka、CctiveMQ など)には、マッピングのセットがあらかじめロードされており、このオプションで追加したマッピングは、それらのマッピングにマージされます。詳細については、Collectd のドキュメントを参照してください。

ネストされた mBeanDefinitions コンフィギュレーションオブジェクトには以下のフィールドがあります。

オプション

必須

タイプ

説明

objectName

いいえ

string

MBeanServerからMBeansを取得するために使われるパターンを設定

MBeanServer。複数の MBean が返される場合、instanceFrom オプションを使用して識別子を一意にする必要があります。

instancePrefix

いいえ

string

生成されたプラグイン・インスタンスにプレフィックスをつけます。

instanceFrom

いいえ

list of strings

JMX が MBeans を識別するために使用するオブジェクト名には、

基本的にキーと値のペアである、いわゆる「プロパティ」が含まれます。指定されたオブジェクト名が一意でなく、複数の MBean が返される場合、通常はそれらのプロパティの値が異なっています。このオプションを使用して、適切なプロパティ値からプラグインインスタンスを構築できます。これはオプションであり、複数のプロパティ値からプラグインインスタンスを生成するために繰り返すことができます。

values

いいえ

list of objects (下表参照)

value ブロックは、MBean の1つ以上の属性を

値リストにマッピングします。各 MBean ブロック内に少なくとも 1 つの value ブロックが存在する必要があります。

dimensions

いいえ

list of strings

ネストされた values コンフィギュレーションオブジェクトには以下のフィールドがあります。

オプション

必須

タイプ

説明

type

いいえ

string

MBean 属性の値を扱うために使われるデータセットを設定

します。

table

いいえ

bool

返された属性が複合型の場合、true に設定します。

true に設定すると、複合型内のキーが型インスタンスに追加されます。デフォルト値は false です。

instancePrefix

いいえ

string

MBeanブロックの直下にある同名のオプションと同様に機能

しますが、代わりに型インスタンスを設定します。

instanceFrom

いいえ

list of strings

MBeanブロックの直下にある同名のオプションと同様に機能

しますが、代わりに型インスタンスを設定します。

attribute

いいえ

string

値を読み込む属性名を設定します。を

ドットを使用してキー名を属性名に連結することで、複合タイプのキーにアクセスできます。たとえば、「attrib0.key42」です。 tabletrueに設定されている場合、パスは複合タイプを指している必要があります。それ以外の場合は、数値タイプを指している必要があります。

attributes

いいえ

list of strings

上記の attribute 設定の複数形。これは

1つの MBean から複数のメトリクスを導出するために使用されます。

メトリクス

https://raw.githubusercontent.com/signalfx/splunk-otel-collector/main/internal/signalfx-agent/pkg/monitors/collectd/genericjmx/metadata.yaml

備考

  • Splunk Observability Cloud で利用可能なメトリクスタイプの詳細は、「メトリクスタイプ」を参照してください。

  • ホストベースのサブスクリプションプランでは、デフォルトのメトリクスは、ホスト、コンテナ、バンドルメトリクスなど、Splunk Observability Cloud のホストベースのサブスクリプションに含まれるメトリクスです。カスタムメトリクスはデフォルトでは提供されていないため、料金が発生する場合があります。詳細については、「メトリクスカテゴリ」を参照してください。

  • MTSベースのサブスクリプションプランでは、すべてのメトリクスがカスタムです。

  • メトリクスを追加するには、「その他のメトリクスの追加」で extraMetrics の設定方法を参照してください。

トラブルシューティング

__ ___ ___ _ ______ _____________ _____ ________ ___ ___ ___ ____ __ ___ ____ ____ __ ______ _____________ ______ ___ ___ ___ ____ __ ___ _________ _____

_________ __ ______ _____________ _____ _________

_________ __ ___________ _________ ___ ____ _____ _____

  • ___ _ ________ ___ ___ _______ _______ _________ _______ __ ______ ________

  • ____ ___ ______ ______________ ____ _____ _____ _______ __ ___________ ____ __________ _________ ___ ______ _________ __________ __ _____ ___ ____ _______

公開されているポート

次の Java プロパティは、JMX ポートをインバウンド接続に公開する方法を示しています。詳細については、 Java ドキュメントの「JMX テクノロジーを使用したモニタリングと管理」を参照してください。

java \
  -Dcom.sun.management.jmxremote.port=5000 \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.rmi.port=5000 \
  ...

これは、エージェントが Java アプリケーションホストのポート 5000 へのアクセスを許可されている限り機能します。これによって認証や暗号化が有効になることはありませんが、これらは追加できることに注意してください。

次のエラーメッセージは、ホストの設定が 172.17.0.3 に設定され、ポートが 5000 に設定されていることを前提としています。ホスト設定とポート設定が異なる場合があります。次の項に、表示される可能性のあるエラーとその意味を示します。

接続拒否

java \
  -Dcom.sun.management.jmxremote.port=5000 \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.rmi.port=5000 \
  ...

このエラーは、指定されたホストで JMX 接続ポートが開いていないことを示します。netstat/ss または他のツールを使用して、このポートが設定されたホスト上で実際に開かれており、適切なアドレスでリスニングしていることを確認します。エージェントがリモートサーバーで実行されている場合、JMX がローカルホストのみをリスニングしていない可能性があります。

RMI接続の問題

Creating MBean server connection failed: java.rmi.ConnectException: Connection refused to host: 172.17.0.3; nested exception is:
     java.net.ConnectException: Connection timed out (Connection timed out)

これは、JMX 接続ポートには正常に到達したものの、接続先の RMI ポートがファイアウォールなどによってブロックされていることを示します。Java アプリケーションの com.sun.management.jmxremote.rmi.port プロパティが JMX 接続ポートと同じポートに設定されていることを確認してください。同様の原因を示す、「接続リセット」または「接続拒否」というエラーメッセージの他のバリエーションが存在する可能性があります。