Docs » Splunk Observability Cloud でサポートされているインテグレーション » アプリケーション・レシーバーの言語設定 » JMX

JMX 🔗

The Splunk Distribution of the OpenTelemetry Collector uses the Smart Agent receiver with the jmx monitor type to run an arbitrary Groovy script to convert JMX MBeans fetched from a remote Java application to SignalFx data points. This is a more flexible alternative to the GenericJMX monitor.

注釈

To monitor JMX with the OpenTelemetry Collector using native OpenTelemetry components refer to the JMXレシーバー.

If you are instrumenting an application with the Splunk Distribution of OpenTelemetry Java, you can capture metrics with the Java agent instead of using a JMX monitor. To learn more, see Metrics collection.

以下のユーティリティ・ヘルパーは、Groovyスクリプト内で、スクリプトのコンテキストで設定される変数 util

  • util.queryJMX(String objectName):このヘルパーは、ワイルドカードを含むことができる、与えられた objectName のために設定されたJMXアプリケーションをクエリします。いずれにせよ、戻り値は0個以上の GroovyMBean オブジェクトの List です。これはGroovyがMBean上の属性へのアクセスを簡単にするために提供する便利なラッパーです。 GroovyMBean オブジェクトについての詳細はhttp://groovy-lang.org/jmx.html。最初のMBeanにアクセスするために、返されたリストでGroovy .first() メソッドを使うことができます。

  • util.makeGauge(String name, double val, Map<String, String> dimensions): SignalFx ゲージ・データポイントを作成する便利な関数。これは、output.sendDatapoint[s] に供給できる DataPoint インスタンスを作成します。これはデータポイントを送信せず、作成のみを行います。

  • util.makeCumulative(String name, double val, Map<String, String> dimensions):SignalFx 累積カウンター・データポイントを作成するための便利な関数。これは、output.sendDatapoint[s] に与えることができる DataPoint インスタンスを作成します。これはデータポイントを送信せず、作成するだけです。

スクリプトコンテキストで利用可能な output インスタンスは、Splunk Observability Cloud にデータを送信するために使用されます。以下のメソッドが含まれています:

  • output.sendDatapoint(DataPoint dp):与えられたデータポイントをSignalFxに出力します。util.make[Gauge|Cumulative] ヘルパーを使用して、DataPoint インスタンスを作成します。

  • output.sendDatapoints(List<DataPoint> dp):指定されたデータポイントをSignalFxに送信します。DataPoint インスタンスを作成するには、util.make[Gauge|Cumulative] ヘルパーを使用することをお勧めします。一度に複数のデータポイントを送信する方が若干効率的ですが、非常に大量のデータを送信するのでなければ、それほど重要ではありません。

メリット 🔗

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

インストール 🔗

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

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

  2. [設定] セクションの説明に従ってインテグレーションを設定します。

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

設定 🔗

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

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

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

🔗

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

receivers:
  smartagent/jmx:
    type: jmx
    ...  # Additional config

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

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

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

次の表に、このインテグレーションの設定オプションを示します:

オプション

必須

タイプ

説明

host

いいえ

string

このモニターに検出ルールがある場合、ホストは自動検出によって埋められます

埋められます。

port

いいえ

integer

このモニターに検出ルールがある場合、ポートは自動検出によって埋められます

(デフォルト: 0 )

serviceURL

いいえ

string

JMX RMI/JMXMP エンドポイントのサービス URL。空の場合

は、標準の JMX RMI テンプレート service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi を使用して、host および port の値で埋められます。オーバーライドされた場合、hostport は影響を与えません。JMXMPエンドポイントでは、サービスURLを指定する必要があります。JMXMP エンドポイントの URL 形式は service:jmx:jmxmp://<host>:<port> です。

groovyScript

はい

string

JMX MBeansからデータポイントを生成するリテラルGroovy

スクリプト。このスクリプトの書き方の詳細については、トップレベルの jmx モニターのドキュメントを参照してください。Groovyスクリプトを別のファイルにして、${include:/<my_path>/jmx.groovy} で参照できます。include configの使い方については、https://github.com/signalfx/splunk-otel-collector/tree/main/internal/configsource/includeconfigsource。または、| ブロックインジケーターを使ってYAMLにそのまま書くこともできます。

username

いいえ

string

該当する場合は、JMX 認証用のユーザー名。

password

いいえ

string

JMX 認証用のパスワード(該当する場合)。

keyStorePath

いいえ

string

クライアント認証がターゲットJVM上でアクティブ化される場合は

キーストアのパスが必要です。

keyStorePassword

いいえ

string

キーストアファイルのパスワード(必要な場合)。

keyStoreType

いいえ

string

キーストアタイプ。(デフォルト: jks )

trustStorePath

いいえ

string

TLSプロファイルが必要な場合は、信頼されたストアのパス。

trustStorePassword

いいえ

string

トラストストアファイルのパスワード(必要な場合)。

jmxRemoteProfiles

いいえ

string

サポートされるJMXリモート・プロファイルは、次のSASLプロファイルと

組み合わせたTLSです:SASL/PLAIN、SASL/DIGEST-MD5、SASL/CRAM-MD5。したがって、有効な jmxRemoteProfiles の値は、SASL/PLAIN SASL/DIGEST-MD5SASL/CRAM-MD5TLS SASL/PLAINTLS SASL/DIGEST-MD5TLS SASL/CRAM-MD5 です。

realm

いいえ

string

レルムはプロファイルSASL/DIGEST-MD5で必要とされます。

以下は、Cassandra nodetool status ユーティリティが提示するデータの一部をレプリケートするGroovyスクリプトの例です:

// Query the JMX endpoint for a single MBean.
ss = util.queryJMX("org.apache.cassandra.db:type=StorageService").first()

// Copied and modified from https://github.com/apache/cassandra
def parseFileSize(String value) {
    if (!value.matches("\\d+(\\.\\d+)? (GiB|KiB|MiB|TiB|bytes)")) {
        throw new IllegalArgumentException(
            String.format("value %s is not a valid human-readable file size", value));
    }
    if (value.endsWith(" TiB")) {
        return Math.round(Double.valueOf(value.replace(" TiB", "")) * 1e12);
    }
    else if (value.endsWith(" GiB")) {
        return Math.round(Double.valueOf(value.replace(" GiB", "")) * 1e9);
    }
    else if (value.endsWith(" KiB")) {
        return Math.round(Double.valueOf(value.replace(" KiB", "")) * 1e3);
    }
    else if (value.endsWith(" MiB")) {
        return Math.round(Double.valueOf(value.replace(" MiB", "")) * 1e6);
    }
    else if (value.endsWith(" bytes")) {
        return Math.round(Double.valueOf(value.replace(" bytes", "")));
    }
    else {
        throw new IllegalStateException(String.format("FileUtils.parseFileSize() reached an illegal state parsing %s", value));
    }
}

localEndpoint = ss.HostIdToEndpoint.get(ss.LocalHostId)
dims = [host_id: ss.LocalHostId, cluster_name: ss.ClusterName]

output.sendDatapoints([
    // Equivalent of "Up/Down" in the `nodetool status` output.
    // 1 = Live; 0 = Dead; -1 = Unknown
    util.makeGauge(
        "cassandra.status",
        ss.LiveNodes.contains(localEndpoint) ? 1 : (ss.DeadNodes.contains(localEndpoint) ? 0 : -1),
        dims),

    util.makeGauge(
        "cassandra.state",
        ss.JoiningNodes.contains(localEndpoint) ? 3 : (ss.LeavingNodes.contains(localEndpoint) ? 2 : 1),
        dims),

    util.makeGauge(
        "cassandra.load",
        parseFileSize(ss.LoadString),
        dims),

    util.makeGauge(
        "cassandra.ownership",
        ss.Ownership.get(InetAddress.getByName(localEndpoint)),
        dims)
    ])

本番のJMXサービスを監視するためにスクリプトを使用する前に、スクリプトが入念にテストされていることを確認してください。一般的に、スクリプトは属性のみを読み取るべきですが、それを強制するものはありません。

メトリクス 🔗

このインテグレーションで利用可能なメトリクスはありません。

トラブルシューティング 🔗

Splunk Observability Cloudをご利用のお客様で、Splunk Observability Cloudでデータを確認できない場合は、以下の方法でサポートを受けることができます。

Splunk Observability Cloudをご利用のお客様

見込み客および無料トライアルユーザー様

  • Splunk Answers のコミュニティサポートで質問し、回答を得る

  • Splunk #observability ユーザーグループの Slack チャンネルに参加して、世界中の顧客、パートナー、Splunk 社員とのコミュニケーションを図る。参加するには、Get Started with Splunk Community マニュアルの チャットグループ を参照してください。

This page was last updated on 2024年09月18日.