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]
ヘルパーを使用することをお勧めします。一度に複数のデータポイントを送信する方が若干効率的ですが、非常に大量のデータを送信するのでなければ、それほど重要ではありません。
メリット 🔗
インテグレーションを設定すると、これらの機能にアクセスできるようになります:
メトリクスを表示します。独自のカスタム・ダッシュボードを作成することができ、ほとんどのモニターは組み込みのダッシュボードも提供しています。ダッシュボードについては、Splunk Observability Cloudでダッシュボードを表示する を参照してください。
Infrastructure Monitoring に表示される環境内の物理サーバー、仮想マシン、AWS インスタンス、およびその他のリソースのデータ駆動型の視覚化を表示します。ナビゲーターについては、Splunk Infrastructure Monitoring でナビゲーターを使用する を参照してください。
Metric Finder にアクセスして、モニターから送信されたメトリクスを検索します。詳細については、メトリクス・ファインダーとメタデータ・カタログを検索する を参照してください。
インストール 🔗
このインテグレーションを導入するには、以下の手順に従ってください:
Splunk Distribution of the OpenTelemetry Collector をホストまたはコンテナプラットフォームにデプロイします:
[設定] セクションの説明に従ってインテグレーションを設定します。
Splunk Distribution of OpenTelemetry Collector を再起動します。
設定 🔗
Smart Agent モニターとCollector のインテグレーションを使用するには、以下の手順に従います:
Smart Agent レシーバーを設定ファイルに含めます。
レシーバーセクションおよびパイプラインセクションの両方で、Collector 構成にモニタータイプを追加します。
Collector でSmart Agent モニターを使用する の方法を参照してください。
Smart Agent レシーバー の設定方法を参照してください。
一般的な設定オプションのリストについては、モニターの共通設定 を参照してください。
Collectorの詳細は、はじめに:Collectorを理解して使用する を参照してください。
例 🔗
このインテグレーションを有効にするには、Collector構成に以下を追加します:
receivers:
smartagent/jmx:
type: jmx
... # Additional config
次に、設定ファイルの service.pipelines.metrics.receivers
セクションにモニターを追加します:
service:
pipelines:
metrics:
receivers: [smartagent/jmx]
コンフィギュレーション設定 🔗
次の表に、このインテグレーションの設定オプションを示します:
オプション |
必須 |
タイプ |
説明 |
---|---|---|---|
|
いいえ |
|
|
|
いいえ |
|
|
|
いいえ |
|
|
|
はい |
|
|
|
いいえ |
|
該当する場合は、JMX 認証用のユーザー名。 |
|
いいえ |
|
JMX 認証用のパスワード(該当する場合)。 |
|
いいえ |
|
|
|
いいえ |
|
キーストアファイルのパスワード(必要な場合)。 |
|
いいえ |
|
キーストアタイプ。(デフォルト: |
|
いいえ |
|
TLSプロファイルが必要な場合は、信頼されたストアのパス。 |
|
いいえ |
|
トラストストアファイルのパスワード(必要な場合)。 |
|
いいえ |
|
|
|
いいえ |
|
レルムはプロファイル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をご利用のお客様
Submit a case in the Splunk Support Portal .
Contact Splunk Support .
見込み客および無料トライアルユーザー様
Splunk Answers のコミュニティサポートで質問し、回答を得る
Splunk #observability ユーザーグループの Slack チャンネルに参加して、世界中の顧客、パートナー、Splunk 社員とのコミュニケーションを図る。参加するには、Get Started with Splunk Community マニュアルの チャットグループ を参照してください。