Java Management Extensions (JMX) メトリクスの収集
CloudWatch エージェントを使用し、Java アプリケーションから Java Management Extensions (JMX) メトリクスを収集できます。
CloudWatch エージェントは、次のバージョンからこれらのメトリクスの収集をサポートしています。
JVM 8 以降
Kafka 0.8.2.x 以降
Tomcat 9、10.1、11 (ベータ)
JMX メトリクスの収集を開始するには、CloudWatch エージェント設定ファイルの metrics_collected
セクション内に jmx
セクションを追加します。jmx
セクションには、次のフィールドを含めることができます。
jvm
- オプション。インスタンスから Java 仮想マシン (JVM) メトリクスを取得するように指定します。詳細については、「JVM メトリクスの収集」を参照してください。このセクションには、次のフィールドを含めることができます。
-
measurement
– 収集する JVM メトリクスの配列を指定します。ここで使用できる値のリストについては、JVM メトリクスの収集 の表の [Metric] (メトリクス) 列を参照してください。各メトリクスのエントリでは、必要に応じて次のいずれかまたは両方を指定できます。
-
rename
– このメトリクスに別の名前を指定します。 -
unit
– メトリクスのデフォルト単位を上書きして、このメトリクスに使用する単位を指定します。指定する単位は、「MetricDatum」のUnit
に関する説明にリストされている有効な CloudWatch メトリクス単位でなければなりません。
-
-
kafka
- オプション。インスタンスから Apache Kafka ブローカーメトリクスを取得するように指定します。詳細については、「Kafka メトリクスの収集」を参照してください。このセクションには、次のフィールドを含めることができます。
-
measurement
– 収集する Kafka ブローカーメトリクスの配列を指定します。ここで使用できる値のリストについては、Kafka メトリクスの収集 の最初の表にある [メトリクス] 列を参照してください。各メトリクスのエントリでは、必要に応じて次のいずれかまたは両方を指定できます。
-
rename
– このメトリクスに別の名前を指定します。 -
unit
– メトリクスのデフォルト単位を上書きして、このメトリクスに使用する単位を指定します。指定する単位は、「MetricDatum」のUnit
に関する説明にリストされている有効な CloudWatch メトリクス単位でなければなりません。
-
-
kafka-consumer
- オプション。インスタンスから Apache Kafka コンシューマーメトリクスを取得するように指定します。詳細については、「Kafka メトリクスの収集」を参照してください。このセクションには、次のフィールドを含めることができます。
-
measurement
– 収集する Kafka ブローカーメトリクスの配列を指定します。ここで使用できる値のリストについては、Kafka メトリクスの収集 の 2 番目の表にある [メトリクス] 列を参照してください。各メトリクスのエントリでは、必要に応じて次のいずれかまたは両方を指定できます。
-
rename
– このメトリクスに別の名前を指定します。 -
unit
– メトリクスのデフォルト単位を上書きして、このメトリクスに使用する単位を指定します。指定する単位は、「MetricDatum」のUnit
に関する説明にリストされている有効な CloudWatch メトリクス単位でなければなりません。
-
-
kafka-producer
- オプション。インスタンスから Apache Kafka プロデューサーメトリクスを取得するように指定します。詳細については、「Kafka メトリクスの収集」を参照してください。このセクションには、次のフィールドを含めることができます。
-
measurement
– 収集する Kafka ブローカーメトリクスの配列を指定します。ここで使用できる値のリストについては、Kafka メトリクスの収集 の 3 番目の表にある [メトリクス] 列を参照してください。各メトリクスのエントリでは、必要に応じて次のいずれかまたは両方を指定できます。
-
rename
– このメトリクスに別の名前を指定します。 -
unit
– メトリクスのデフォルト単位を上書きして、このメトリクスに使用する単位を指定します。指定する単位は、「MetricDatum」のUnit
に関する説明にリストされている有効な CloudWatch メトリクス単位でなければなりません。
-
-
tomcat
- オプション。インスタンスから Tomcat メトリクスを取得するように指定します。詳細については、「Tomcat メトリクスの収集」を参照してください。このセクションには、次のフィールドを含めることができます。
-
measurement
– 収集する Tomcat メトリクスの配列を指定します。ここで使用できる値のリストについては、Tomcat メトリクスの収集 の表の [Metric] (メトリクス) 列を参照してください。各メトリクスのエントリでは、必要に応じて次のいずれかまたは両方を指定できます。
-
rename
– このメトリクスに別の名前を指定します。 -
unit
– メトリクスのデフォルト単位を上書きして、このメトリクスに使用する単位を指定します。指定する単位は、「MetricDatum」のUnit
に関する説明にリストされている有効な CloudWatch メトリクス単位でなければなりません。
-
-
jmx
セクションには、オプションの append_dimensions
フィールドを含めることもできます。
-
append_dimensions
- オプション。process メトリクスにのみ使用する追加のディメンション。このフィールドを指定した場合、エージェントにより収集されるすべてのタイプのメトリクスに使用されるappend_dimensions
フィールドで指定されたディメンションに加えて使用されます。
次のフィールドは Amazon EC2 専用です。
-
endpoint
– JMX クライアントが接続するアドレス。形式はip:port
です。エンドポイントが localhost ではない場合、パスワード認証および SSL を有効にする必要があります。 -
metrics_collection_interval
- オプション。設定ファイルのmetrics_collection_interval
セクションで指定されたグローバルなagent
を上書きして、processes メトリクスを収集する頻度を指定します。この値は数秒で指定されます。例えば、10 と設定するとメトリクスが 10 秒ごとに収集されるようになり、300 と設定するとメトリクスが 5 分ごとに収集されように指定されます。
この値を 60 秒未満に設定した場合、各メトリクスは高解像度メトリクスとして収集されます。詳細については、「高解像度のメトリクス」を参照してください。
JMX がパスワード認証またはリモートアクセス用の SSL で有効になっていた場合、次のフィールドを使用できます。
-
password_file
- オプション。パスワードへのキーの Java プロパティファイルを指定します。ファイルは読み取り専用であり、CloudWatch エージェントを実行しているユーザーに制限する必要があります。パスワード認証が有効になっている場合、com.sun.management.jmxremote.password.file
プロパティで指定された JMX パスワードファイルのエントリと同じユーザー名およびパスワードのペアが必要です。SSL が有効になっている場合、keystore
およびtruststore
のエントリが必要であり、それぞれjavax.net.ssl.keyStorePassword
およびjavax.net.ssl.trustStorePassword
に対応します。 -
username
– パスワード認証が有効になっている場合、指定されたパスワードファイルのユーザー名と一致するユーザー名を指定します。 -
keystore_path
– SSL が有効になっている場合、Java キーストアへのフルパスを指定します。このキーストアは、プライベートキーおよびパブリックキーへの証明書で構成されます。javax.net.ssl.keyStore
プロパティに対応します。 -
keystore_type
– SSL が有効になっている場合、使用されているキーストアの種類を指定します。javax.net.ssl.keyStoreType
プロパティに対応します。 -
truststore_path
– SSL が有効になっている場合、Java トラストストアへのフルパスを指定します。これには、リモート JMX サーバーのパブリック証明書が含まれている必要があります。javax.net.ssl.trustStore
プロパティに対応します。 -
truststore_type
– SSL が有効になっている場合、使用されているトラストストアの種類を指定します。javax.net.ssl.trustStoreType
プロパティに対応します。 -
remote_profile
- オプション。サポートされている JMX リモートプロファイルは、SASL/PLAIN
、SASL/DIGEST-MD5
、SASL/CRAM-MD5
の SASL プロファイルと組み合わせた TLS です。SASL/PLAIN
、SASL/DIGEST-MD5
、SASL/CRAM-MD5
、TLS SASL/PLAIN
、TLS SASL/DIGEST-MD5
、TLS SASL/CRAM-MD5
のいずれかである必要があります。 -
realm
- オプション。リモートプロファイルSASL/DIGEST-MD5
が必要な領域。 -
registry_ssl_enabled
– RMI レジストリ認証が有効になっている場合。JVM がcom.sun.management.jmxremote.registry.ssl=true
で設定されている場合、true に設定します。 insecure
エージェントがローカルホスト以外のエンドポイント用に設定されている場合、true
に設定して必要な検証をオプトアウトします。
次の内容は、CloudWatch エージェント設定ファイルの jmx
セクションです。
{ "metrics": { "metrics_collected": { "jmx": [ { "endpoint": "remotehost:1314", "jvm": { "measurement": [ "jvm.memory.heap.init", "jvm.memory.nonheap.used" ] }, "kafka": { "measurement": [ "kafka.request.count", { "name": "kafka.message.count", "rename": "KAFKA_MESSAGE_COUNT", "unit": "Count" } ] }, "username": "cwagent", "keystore_path": "/path/to/keystore", "keystore_type": "PKCS12", "truststore_path": "/path/to/truststore", "truststore_type": "PKCS12" }, { "endpoint": "localhost:1315", "kafka-producer": { "measurement": [ "kafka.producer.request-rate" ] }, "append_dimensions": { "service.name": "kafka/1" } } ] } } }
JVM メトリクスの収集
CloudWatch エージェントを使用して Java 仮想マシン (JVM) メトリクスを収集できます。これを設定するには、CloudWatch エージェント設定ファイルの jmx
セクション内に jvm
セクションを追加します。
次のメトリクスを収集できます。
メトリクス | ディメンション | 説明 |
---|---|---|
|
[DEFAULT] |
ロードされたクラスの合計数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
発生したガベージコレクションの合計数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
蓄積ガベージコレクションのおおよその経過時間。 単位: ミリ秒 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
JVM がヒープのためにオペレーティングシステムにリクエストするメモリの初期量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
ヒープに使用できるメモリの最大量。 単位: バイト 有意義な統計: 最大 |
|
[DEFAULT] |
現在のヒープメモリの使用量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
ヒープに使用できることが保証されているメモリの量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
JVM がヒープ以外の目的でオペレーティングシステムにリクエストするメモリの初期量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
ヒープ以外の目的で使用できるメモリの最大量。 単位: バイト 有意義な統計: 最大 |
|
[DEFAULT] |
ヒープ以外の現在のメモリ使用量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
ヒープ以外の目的で使用できることが保証されているメモリの量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
JVM がメモリプール用にオペレーティングシステムにリクエストするメモリの初期量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
メモリプールに使用できるメモリの最大量。 単位: バイト 有意義な統計: 最大 |
|
[DEFAULT]、 |
現在のメモリプールのメモリ使用量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
メモリプールで使用できることが保証されているメモリの量。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
現在のスレッドの数。 単位: なし 有意義な統計: 最小、最大、平均 |
JVM メトリクスは次のディメンションで収集されます。
ディメンション | 説明 |
---|---|
[DEFAULT] |
デフォルトで Amazon EC2 では、 Amazon EKS では、k8s に関連したコンテキストはメトリクスのディメンション ( |
|
|
Kafka メトリクスの収集
CloudWatch エージェントを使用して Apache Kafka メトリクスを収集できます。これを設定するには、CloudWatch エージェント設定ファイルの jmx
セクション内に次のサブセクションを 1 つ以上追加します。
kafka
セクションを使用して Kafka ブローカーメトリクスを収集します。kafka-consumer
セクションを使用して Kafka コンシューマーメトリクスを収集します。kafka-producer
セクションを使用して Kafka プロデューサーメトリクスを収集します。
Kafka ブローカーメトリクス
次のメトリクスは Kafka ブローカー用に収集できます。
メトリクス | ディメンション | 説明 |
---|---|---|
|
[DEFAULT] |
Kafka ブローカーが受信するメッセージの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
Kafka ブローカーが受信するリクエストの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
障害が発生した Kafka ブローカーへのリクエストの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
Kafka ブローカーがサービスリクエストにかかった合計時間。 単位: ミリ秒 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
Kafka ブローカーがサービスリクエストにかかった 50 パーセンタイルの時間。 単位: ミリ秒 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
Kafka ブローカーがサービスリクエストにかかった 99 パーセンタイルの時間。 単位: ミリ秒 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
Kafka ブローカーがサービスリクエストにかかった平均時間。 単位: ミリ秒 有意義な統計: 平均 |
|
[DEFAULT]、 |
Kafka ブローカーによって受信または送信されたバイト数。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
処理待ち状態で待機中のリクエストの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
Kafta ブローカーのパーティションの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
オフラインのパーティションの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
レプリケートが不十分なパーティションの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
同期レプリカの縮小および展開オペレーションの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
フォロワーレプリカとリーダーレプリカ間のメッセージの最大遅延。 単位: なし 有意義な統計: 最大 |
|
[DEFAULT] |
ブローカーでアクティブなコントローラーの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
リーダー選出レート。これが増加すると、ブローカーの障害を示します。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
クリーンでないリーダー選出レート。これが増加すると、ブローカーの障害を示します。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
リクエストキューのサイズ。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
ログのフラッシュ数。 単位: ミリ秒 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
ログフラッシュカウントの 50 パーセンタイル値。 単位: ミリ秒 有意義な統計: 最小、最大、平均 |
|
[DEFAULT] |
ログフラッシュカウントの 99 パーセンタイル値。 単位: ミリ秒 有意義な統計: 最小、最大、平均 |
Kafka ブローカーのメトリクスは次のディメンションで収集されます。
ディメンション | 説明 |
---|---|
[DEFAULT] |
デフォルトで Amazon EC2 では、 Amazon EKS では、k8s に関連したコンテキストはメトリクスのディメンション ( |
|
リクエストタイプ。指定できる値は |
|
ネットワークトラフィックの方向。指定できる値は |
|
同期レプリカのオペレーションタイプ。指定できる値は |
Kafka コンシューマーメトリクス
次のメトリクスは Kafka コンシューマー用に収集できます。
メトリクス | ディメンション | 説明 |
---|---|---|
|
[DEFAULT]、 |
すべてのトピックにおける 1 秒あたりのフェッチリクエストの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
コンシューマーがプロデューサーより遅れるメッセージの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
すべてのトピックにおける 1 秒あたりの平均消費バイト数 単位: バイト 有意義な統計: 平均 |
|
[DEFAULT]、 |
すべてのトピックでリクエストごとにフェッチされたバイト数。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
すべてのトピックにおける 1 秒あたりの平均消費レコードの数 単位: なし 有意義な統計: 平均 |
|
[DEFAULT]、 |
1 秒あたりの平均消費バイト数。 単位: バイト 有意義な統計: 平均 |
|
[DEFAULT]、 |
リクエストごとにフェッチされたバイト数。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
1 秒あたりの平均消費レコードの数。 単位: なし 有意義な統計: 平均 |
Kafka コンシューマーメトリクスは次のディメンションで収集されます。
ディメンション | 説明 |
---|---|
[DEFAULT] |
デフォルトで Amazon EC2 では、 Amazon EKS では、k8s に関連したコンテキストはメトリクスのディメンション ( |
|
クライアントの ID。 |
|
Kafka トピック。 |
Kafka プロデューサーメトリクス
次のメトリクスは Kafka プロデューサー用に収集できます。
メトリクス | ディメンション | 説明 |
---|---|---|
|
[DEFAULT]、 |
I/O スレッドが読み取りまたは書き込みの準備が完了したソケットの待機にかかった平均時間。 単位: なし 有意義な統計: 平均 |
|
[DEFAULT]、 |
すべてのサーバーに 1 秒あたりに送信された送信バイトの平均数。 単位: バイト 有意義な統計: 平均 |
|
[DEFAULT]、 |
平均リクエストレイテンシー。 単位: ミリ秒 有意義な統計: 平均 |
|
[DEFAULT]、 |
1 秒あたりの送信リクエストの平均数。 単位: なし 有意義な統計: 平均 |
|
[DEFAULT]、 |
1 秒あたりの受信レスポンスの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
トピック用に 1 秒あたりに送信された平均バイト数 単位: バイト 有意義な統計: 平均 |
|
[DEFAULT]、 |
トピックのレコードバッチの平均圧縮率。 単位: なし 有意義な統計: 平均 |
|
[DEFAULT]、 |
トピックのエラーの原因となった 1 秒あたりの送信レコードの平均数。 単位: なし 有意義な統計: 平均 |
|
[DEFAULT]、 |
トピックにおける 1 秒あたりのレコード送信を再試行した平均数。 単位: なし 有意義な統計: 平均 |
|
[DEFAULT]、 |
トピック用に 1 秒あたりに送信された平均レコード数 単位: なし 有意義な統計: 平均 |
Kafka プロデューサーメトリクスは次のディメンションで収集されます。
ディメンション | 説明 |
---|---|
[DEFAULT] |
デフォルトで Amazon EC2 では、 Amazon EKS では、k8s に関連したコンテキストはメトリクスのディメンション ( |
|
クライアントの ID。 |
|
Kafka トピック。 |
Tomcat メトリクスの収集
CloudWatch エージェントを使用して Apache Tomcat メトリクスを収集できます。これを設定するには、CloudWatch エージェント設定ファイルの metrics_collected
セクション内に tomcat
セクションを追加します。
次のメトリクスを収集できます。
メトリクス | ディメンション | 説明 |
---|---|---|
|
[DEFAULT] |
アクティブなセッションの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
発生したエラーの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
合計処理時間。 単位: ミリ秒 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
送信および受信バイト数。 単位: バイト 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
スレッドの数。 単位: なし 有意義な統計: 最小、最大、平均 |
|
[DEFAULT]、 |
リクエストを処理する最大時間。 単位: ミリ秒 有意義な統計: 最大 |
|
[DEFAULT]、 |
合計リクエスト。 単位: なし 有意義な統計: 最小、最大、平均 |
Tomcat メトリクスは次のディメンションで収集されます。
ディメンション | 説明 |
---|---|
[DEFAULT] |
デフォルトで Amazon EC2 では、 Amazon EKS では、k8s に関連したコンテキストはメトリクスのディメンション ( |
|
|
|
トラフィックの方向。指定できる値は |