メトリックの収集
APM Javaエージェントは、アプリケーション・サーバー・メトリックの定期的な収集をサポートしています。
APM Javaエージェントをデプロイした後は、次のタイプのメトリックを収集できます:
デフォルト・メトリック
デフォルト・メトリックは、デフォルトで使用可能なシステム定義のメトリックです。
デフォルト・メトリックの完全なセットについては、使用可能なメトリック: APM Java Agentのoracle_apm_monitoringを参照してください。
カスタム・メトリック
カスタム・メトリックは、既存のデフォルト・メトリック以外に、特定の要件を満たすために作成できるユーザー定義のメトリックです。
oracle-apm-agent/config/<version>
ディレクトリ内にMetricCollection.acmlという名前の新しい構成ファイルを作成します。
MetricCollection.acml
ファイルは、カスタム・メトリック収集構成用のACMLフォーマット(YAMLのサブセット)のカスタム・ファイルです。
ACMLタグ | データ型 | 説明 |
---|---|---|
<group name>: | string | 収集のstart_timeおよび間隔が異なる個別のメトリックをグループ化します。 |
<metric name>: | string | 収集されるメトリックの名前。1つのメトリック名は1つの値のみに対応します。命名規則は、ダッシュで区切った小文字の文字列です。 |
type: | string | メトリックのタイプ。measurementまたはdeltaにできます。
- measurement: 現在のランタイム値。 - delta: 値は収集間隔ごとに異なります。 |
scalar: | string | 数値のタイプ: longまたはdoubleにできます。 |
source: | メトリックのソース・エントリの配列を表すタグ。各メトリックには、1つ以上のソース・エントリを含めることができます。複数のソース・エントリがある場合でも、各エントリは収集時に順番にチェックされます。エントリが有効な値を返すことができる場合はそれが常にメトリック・エントリに使用され、残りのソース・エントリは無視されます。 | |
- | メトリック・ソース・エントリ配列要素。 | |
type: | string | メトリック・ソースのタイプ。mbeanまたはmbeansにできます。
|
mbean_name: | string | MBean: mbeanまたはmbeansタイプのオブジェクト名。mbeansタイプの場合、オブジェクト名にはワイルドカード文字(*)を使用できますが、mbeanの場合はワイルドカードはサポートされていません。 |
value_path: | string | パスはスラッシュ( / )で区切られて、mbeanの値を取得します。値パスは数値を導く必要があります。ルート・パスはmbeanオブジェクトの属性名である必要があり、分割パスは前のパス値の次のいずれかにできます:
mbeansタイプの場合、各mbeansオブジェクトの値が集計されます。同様に、mbeansタイプでパスにワイルドカード文字( * )を使用すると、取得されたすべての値が集計されます。 |
operation_name | string | 呼び出すMBeanメソッドの名前。MBeanは、Platform MBean Serverに登録する必要があります。 |
params (オプション) | string | カンマで区切られたメソッド・パラメータの値。
渡されたメソッド・パラメータとそれに対応する値は、メトリック・ディメンションとして取得されます。現在、Stringデータ型のみがメソッド・パラメータでサポートされています。 |
value_path
またはoperationName
属性を使用して2つの方法で定義できます。
value_path
属性: 登録済MBeanからメトリックを抽出できます。operationName
属性: ユーザーはカスタム・クラスをMBeanサーバーに登録し、operationName
で指定されたMBeanメソッドを呼び出すことができます。
value_path
属性の使用例を示します。
MyMetrics:
jvm-used-heap:
type: measurement
scalar: long
source:
-
type: mbean
mbean_name: java.lang:type=Memory
value_path: HeapMemoryUsage/used
jvm-used-heap-after-old-gc:
type: measurement
scalar: long
source:
-
type: mbeans
mbean_name: java.lang:type=GarbageCollector,name=*Old*
value_path: LastGcInfo/memoryUsageAfterGc/*/value/used
-
type: mbeans
mbean_name: java.lang:type=GarbageCollector,name=*MarkSweep*
value_path: LastGcInfo/memoryUsageAfterGc/*/value/used
前述の例では、メトリックは1分ごとに収集されます。収集されるメトリックは、jvm-heap-used
とjvm-used-heap-after-old-gc
の2つです。
jvm-heap-used
の場合、ソースは1つのみ(mbean
)です。mbeanオブジェクト名はjava.lang:type=Memory
です。このmbeanオブジェクトにはHeapMemoryUsage
の属性があり、そのデータ型はCompositeDataSupportです。これは数値ではないため、メトリックとして使用できません。ただし、これはヒープの取得元として使用したメトリックのマップを表しています。そのため、使用したマップ・キーを含むオブジェクトへのドリルダウンが必要です。
jvm-used-heap-after-old-gc
の場合、2つのソース(mbeans
)があり、どちらも's'が付く複数形です。メトリックは定義ごとに順番に収集され、有効なメトリックを返す最初のソースが使用されます。ソースが2つある理由は、javaバージョンごとに異なるガベージ・コレクタ名があるためです。また、value_pathドリルダウンでもワイルドカードが使用され、すべてのメモリー領域のgc値の後にあるすべての使用済メモリーが単一のメトリック値として合計されます。値パスのデータ・ドリルダウンはLastGcInfo/memoryUsageAfterGc/*/value/used
で、これはLastGcInfo(CompositeData)/memoryUsageAfterGc(TabularData)/<index>(CompositeData)/value(MemoryUsage)/used(Long)
を示します。
operationName
属性を使用する例:
MyMetrics:
CacheStatistics:
type: measurement
scalar: double
skippable: false
source:
- type: mbean
mbean_name:com.cache:type=CacheServiceMXBean
operation_name: cacheStatistics
params: SessionCache,JohnDoe
DatabaseQueryTime:
type: measurement
scalar: long
skippable: false
source:
- type: mbean
mbean_name: com.db:type=DbManagerMXBean
operation_name: dbQueryTime
前述の例では、メトリックは毎分の最上部に収集されます。収集されるメトリックには、CacheStatistics
とDatabaseQueryTime
の2つがあります。このMBean構成のソースは、MBeanのみにできます。
CacheStatisticsの場合、MBeanオブジェクト名はcom.cache:type=CacheServiceMXBean
です。起動されるメソッドはcacheStatistics
です。この操作では、特定のユーザーによってフィルタされた、指定されたキャッシュ名のキャッシュ統計が取得されます。SessionCache
およびJohnDoe
は、それぞれCacheNameおよびUserNameのパラメータ値です。ユーザーは、ディメンションとしてAssociatedCacheName
、CacheHits
、CacheMisses
、InMemoryHits
、OnDiskHits
などの有用な属性のマップを作成し、対応する値とともに後述するように、サポートされている戻り型の一部として返すことができます。
DatabaseQueryTimeの場合、MBeanオブジェクト名はcom.db:type=DbManagerMXBean
です。起動されるメソッドはdbQueryTime
です。このMBeanにはパラメータが構成されていません。
- Map<Map<String、Object>、Long>
- マップ<マップ<文字列、オブジェクト>、ダブル>
- long
- Double