back to all blogsすべてのブログ投稿を表示

New vendor metrics for MicroProfile Metrics in Open Liberty 23.0.0.11

image of author image of author
Laura Cowen and 田中 孝清 (翻訳) 2023年11月14日
他言語版へのリンク: English ,

Open Liberty 23.0.0.11 では、MicroProfile Metrics に新しいベンダーメトリクスが追加され、ユーザーが追加の計算をすることなく,さまざまな監視ツールのダッシュボードに直接追加できるようになりました。また、このリリースで発表されましたが、23.0.0.10 から利用可能な、指定したディレクトリ内のすべてのファイルをサーバー構成に含める機能もあります。そして、セキュリティ修正もあります。

Open Liberty 23.0.0.11では,

23.0.0.11で修正されたバグリストをご参照ください。

23.0.0.11を使用してアプリを実行する

Open Liberty 23.0.0.11は、Maven, Gradle, Docker, およびダウンロードしたアーカイブから利用いただけます。

Ask a question on Stack Overflow

MicroProfile Metrics 3.0、4.0、5.0 用の新しいベンダーメトリクス

Open Liberty の MicroProfile Metrics 5.0(mpMetrics-5.0), 4.0(mpMetrics-4.0), 3.0(mpMetrics-3.0)の更新により、/metrics エンドポイントに新しい ベンダーメトリクス が追加されました。

以前から、様々なモニタリングコンポーネントで既に提供されていた時間と合計カウントから、自分で新しいメトリクスを計算することができました。たとえば、「リクエストあたりの応答時間」メトリクスを取得するには、MicroProfile Metrics機能で提供される時系列データの配列を使って計算できます。しかし、すべての監視ツールがこのような複雑な時系列の演算をサポートしているわけではありません。

MicroProfile Metrics 5.0の機能を使用すると、追加の計算を行うことなく、さまざまな監視ツールのダッシュボードで新しいメトリックを直接使用できます。

以下の表に、新しいベンダー・メトリクスを示します:

Metric Endpoint output (Prometheus format)

MicroProfile Metrics 5.0

MicroProfile Metrics 3.0 & 4.0

Process CPU Utilization Percent

# HELP cpu_processCpuUtilization_percent The recent CPU time that is used by the JVM process from all processors that are available to the JVM. The value is between 0 and 1.
# TYPE cpu_processCpuUtilization_percent gauge cpu_processCpuUtilization_percent{mp_scope="vendor",} 0.03710604254625131

# TYPE vendor_cpu_processCpuUtilization_percent gauge
# HELP vendor_cpu_processCpuUtilization_percent The recent CPU time that is used by the JVM process from all processors that are available to the JVM. The value is between 0 and 1. vendor_cpu_processCpuUtilization_percent 0.03721734429065744

Heap Utilization Percent

# HELP memory_heapUtilization_percent The portion of the maximum heap memory that is currently in use. This metric displays -1 if the maximum heap memory size is unknown. The value is between 0 and 1.+ # TYPE memory_heapUtilization_percent gauge memory_heapUtilization_percent{mp_scope="vendor",} 0.007193807512521744

# TYPE vendor_memory_heapUtilization_percent gauge
# HELP vendor_memory_heapUtilization_percent The portion of the maximum heap memory that is currently in use. This metric displays -1 if the maximum heap memory size is unknown. The value is between 0 and 1. vendor_memory_heapUtilization_percent 0.0061398036777973175

GC Time per Cycle

# HELP gc_time_per_cycle_seconds The recent average time spent per garbage collection cycle. This metric displays -1 if the garbage collection elapsed time or count is unknown for this collector.
# TYPE gc_time_per_cycle_seconds gauge gc_time_per_cycle_seconds{mp_scope="vendor",name="global",} 0.005

# TYPE vendor_gc_time_per_cycle_seconds gauge
# HELP vendor_gc_time_per_cycle_seconds The recent average time spent per garbage collection cycle. This metric displays -1 if the garbage collection elapsed time or count is unknown for this collector. vendor_gc_time_per_cycle_seconds{name="global"} 0.004385714285714285

Connection Pool in Use Time per Used Connection

# HELP connectionpool_inUseTime_per_usedConnection_seconds The recent average time that connections are in use.
# TYPE connectionpool_inUseTime_per_usedConnection_seconds gauge connectionpool_inUseTime_per_usedConnection_seconds{datasource="jdbc_exampleDS1",mp_scope="vendor",} 0.497

# TYPE vendor_connectionpool_inUseTime_per_usedConnection_seconds gauge
# HELP vendor_connectionpool_inUseTime_per_usedConnection_seconds The recent average time that connections are in use. vendor_connectionpool_inUseTime_per_usedConnection_seconds{datasource="jdbc_exampleDS1"} 0.743

Connection Pool Wait Time per Queued Request

# HELP connectionpool_waitTime_per_queuedRequest_seconds The recent average wait time for queued connection requests.
# TYPE connectionpool_waitTime_per_queuedRequest_seconds gauge connectionpool_waitTime_per_queuedRequest_seconds{datasource="jdbc_exampleDS1",mp_scope="vendor",} 35.0

# TYPE vendor_connectionpool_waitTime_per_queuedRequest_seconds gauge
# HELP vendor_connectionpool_waitTime_per_queuedRequest_seconds The recent average wait time for queued connection requests. vendor_connectionpool_waitTime_per_queuedRequest_seconds{datasource="jdbc_exampleDS1"} 45.0

Servlet Elapsed Time per Request

# HELP servlet_request_elapsedTime_per_request_seconds The recent average elapsed response time per servlet request.
# TYPE servlet_request_elapsedTime_per_request_seconds gauge servlet_request_elapsedTime_per_request_seconds{mp_scope="vendor",servlet=”myapp_servletA",} 0.001256676333333333 servlet_request_elapsedTime_per_request_seconds{mp_scope="vendor",servlet=" myapp_servletB",} 0.00372855566666666 servlet_request_elapsedTime_per_request_seconds{mp_scope="vendor",servlet=" myapp_servletC",} 1.731813674

# TYPE vendor_servlet_request_elapsedTime_per_request_seconds gauge
# HELP vendor_servlet_request_elapsedTime_per_request_seconds The recent average elapsed response time per servlet request. vendor_servlet_request_elapsedTime_per_request_seconds{servlet=”myapp_servletA",} 0.36816000695238094 vendor_servlet_request_elapsedTime_per_request_seconds{servlet=" myapp_servletB",} 0.384967335 vendor_servlet_request_elapsedTime_per_request_seconds{servlet=" myapp_servletC",} 1.333671328

REST Elapsed Time per Request

# HELP REST_request_elapsedTime_per_request_seconds The recent average elapsed response time per RESTful resource method request.
# TYPE REST_request_elapsedTime_per_request_seconds gauge REST_request_elapsedTime_per_request_seconds{class=”my.package.MyClass",method=”simpleGet",mp_scope=”vendor"} 0.0061460695

# TYPE vendor_REST_request_elapsedTime_per_request_seconds gauge
# HELP vendor_REST_request_elapsedTime_per_request_seconds The recent average elapsed response time per RESTful resource method request. vendor_REST_request_elapsedTime_per_request_seconds{class=”my.package.MyClass",method=”simpleGet"} 0.0024352581

Heap UtilizationとCPU Utilizationメトリクスは、サーバーの起動時から使用できます。接続プール、REST、およびサーブレット・メトリクスは、既存のベンダー・メトリクスと同様に、アプリケーションに関連するデータ・ソース、REST API、またはサーブレットが含まれている場合に使用できます。

新しいベンダー・メトリクスは、server.xml でMicroprofileメトリクスのFeature(バージョン 3.0、4.0、または 5.0)を有効にすると、/metrics のURLで利用できるようになります:

<featureManager>
   <feature>mpMetrics-5.0</feature>
</featureManager>

詳細な情報については,以下のリンクを参照してください:

指定したディレクトリにあるすべてのファイルをサーバー構成に含める

server.xml ファイルの include 要素を使うと、サーバ構成にインクルードするファイルの場所を指定することができます。以前のリリースでは、各インクルード ファイルの場所を個別に指定する必要がありました。23.0.0.10リリースからは、すべてのインクルードファイルを1つのディレクトリに配置し、include 要素でディレクトリの場所を指定するだけでよくなりました。

Kubernetes上で実行する場合、シークレットをフォルダごとマウントすることが、実行中のポッドにシークレットからの変更を動的に反映させる唯一の方法であるため、これは重要です。

server.xml ファイルの include 要素の location 属性に、設定ファイルが格納されているディレクトリを入力します。例えば:

    <include location="./common/"/>

変更後、ログに以下の出力が表示されます:

[AUDIT   ] CWWKG0028A: Processing included configuration resource: /Users/rickyherget/libertyGit/open-liberty/dev/build.image/wlp/usr/servers/com.ibm.ws.config.include.directory/common/a.xml
[AUDIT   ] CWWKG0028A: Processing included configuration resource: /Users/rickyherget/libertyGit/open-liberty/dev/build.image/wlp/usr/servers/com.ibm.ws.config.include.directory/common/b.xml
[AUDIT   ] CWWKG0028A: Processing included configuration resource: /Users/rickyherget/libertyGit/open-liberty/dev/build.image/wlp/usr/servers/com.ibm.ws.config.include.directory/common/c.xml

ディレクトリ内のファイルはアルファベット順に処理され、サブディレクトリは無視されます。

Libertyコンフィギュレーションのインクルードについての詳細は、Include configuration docs を参照してください。

このリリースにおけるセキュリティ脆弱性 (CVE) の修正

CVE CVSS スコア 脆弱性評価 影響を受けるバージョン ノート

CVE-2023-46158

4.9

Weaker security

23.0.0.9 - 23.0.0.10

下記のフィーチャーに影響あり Application Security 1.0, Application Security 2.0, Application Security 3.0, Application Security 4.0 Application Security 5.0

過去のセキュリティ脆弱性修正リストについては、Security vulnerability (CVE) list を参照してください。

今すぐOpen Liberty 23.0.0.11を入手する

Maven を使用している場合は,pom.xml ファイルに以下の記述を追加してください。

<plugin>
    <groupId>io.openliberty.tools</groupId>
    <artifactId>liberty-maven-plugin</artifactId>
    <version>3.9</version>
</plugin>

また,Gradle を使用している場合は,`build.gradle`ファイルに以下の記述を追加してください。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'io.openliberty.tools:liberty-gradle-plugin:3.7'
    }
}
apply plugin: 'liberty'

コンテナイメージ の場合はこちらです。

FROM icr.io/appcafe/open-liberty

または,ダウンロードページをご参照ください。

IntelliJ IDEA, Visual Studio Code または Eclipse IDE 使用している場合、オープンソースの Liberty developer tools を活用することで、IDE内から効率的な開発、テスト、デバッグ、アプリケーション管理を行うことができます。

Ask a question on Stack Overflow