メトリックの収集

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にできます。

valuePath構成では、MBeanまたはMBeanを使用できます。

operationName構成の場合、MBeanのみにできます。

mbean_name: string MBean: mbeanまたはmbeansタイプのオブジェクト名。mbeansタイプの場合、オブジェクト名にはワイルドカード文字(*)を使用できますが、mbeanの場合はワイルドカードはサポートされていません。
value_path: string パスはスラッシュ( / )で区切られて、mbeanの値を取得します。値パスは数値を導く必要があります。ルート・パスはmbeanオブジェクトの属性名である必要があり、分割パスは前のパス値の次のいずれかにできます:
  • オブジェクト・フィールド名。
  • パラメータを取らないオブジェクトのメソッド名。
  • CompositeDataのキー。
  • TubularDataのキー。
  • 配列のインデックス。
  • Mapのキー。
  • コレクションのインデックス。

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-usedjvm-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

前述の例では、メトリックは毎分の最上部に収集されます。収集されるメトリックには、CacheStatisticsDatabaseQueryTimeの2つがあります。このMBean構成のソースは、MBeanのみにできます。

CacheStatisticsの場合、MBeanオブジェクト名はcom.cache:type=CacheServiceMXBeanです。起動されるメソッドはcacheStatisticsです。この操作では、特定のユーザーによってフィルタされた、指定されたキャッシュ名のキャッシュ統計が取得されます。SessionCacheおよびJohnDoeは、それぞれCacheNameおよびUserNameのパラメータ値です。ユーザーは、ディメンションとしてAssociatedCacheNameCacheHitsCacheMissesInMemoryHitsOnDiskHitsなどの有用な属性のマップを作成し、対応する値とともに後述するように、サポートされている戻り型の一部として返すことができます。

DatabaseQueryTimeの場合、MBeanオブジェクト名はcom.db:type=DbManagerMXBeanです。起動されるメソッドはdbQueryTimeです。このMBeanにはパラメータが構成されていません。

サポートされているメソッドの戻り型は次のとおりです。
  • Map<Map<String、Object>、Long>
  • マップ<マップ<文字列、オブジェクト>、ダブル>
  • long
  • Double