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

JMX 🔗

Splunk Distribution of OpenTelemetry Collector は、Smart Agent レシーバーjmx モニタータイプを使用して、任意の Groovy スクリプトを実行し、リモート Java アプリケーションからフェッチされた JMX MBeans を SignalFx データポイントに変換します。これは、GenericJMX モニターよりも柔軟な選択肢です。

注釈

Splunk Distribution of OpenTelemetry Java でアプリケーションをインストルメンテーションする場合、JMX モニターを使用する代わりに Java エージェントでメトリクスをキャプチャできます。詳しくは 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年05月29日.