検索

第25章 Eclipse MicroProfile

download PDF

25.1. Eclipse MicroProfile Config を使用した設定の管理

重要

Eclipse MicroProfile Config は、テクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジープレビュー機能のサポート範囲」を参照してください。

25.1.1. MicroProfile Config SmallRye サブシステム

設定データは動的に変更でき、アプリケーションはサーバーを再起動せずに最新の設定情報にアクセスできる必要があります。Eclipse MicroProfile Config は設定データのポータブルな外部化を実現します。これにより、変更や再パッケージ化を必要とせずに、アプリケーションとマイクロサービスを複数の環境で実行するよう設定することができます。Eclipse MicroProfile Config 機能は、SmallRye Config を使用して JBoss EAP に実装され、microprofile-config-smallrye サブシステムによって提供されます。このサブシステムはデフォルトの JBoss EAP 7.4 設定に含まれています。

25.1.2. MicroProfile Config SmallRye サブシステムによってサポートされる ConfigSources

形式や元の場所が異なることがある MicroProfile Config 設定プロパティーは、org.eclipse.microprofile.config.spi.ConfigSource インターフェースの実装である ConfigSources によって提供されます。

MicroProfile Config 仕様は、設定値を取得するために、以下のデフォルト ConfigSource 実装を提供します。

  • System.getProperties() の使用。
  • System.getenv() の使用。
  • クラスパス上のすべての META-INF/microprofile-config.properties から。

microprofile-config-smallrye サブシステムは、設定値を取得するために ConfigSource リソースの以下の追加タイプをサポートします。

注記

以下のセクションでは、管理 CLI を使用して microprofile-config-smallrye サブシステムを設定しますが、管理コンソールを使用することもできます。 管理コンソールで Configuration Subsystems MicroProfile Config と選択し、表示 をクリックすると、設定できます。

MicroProfile Config SmallRye サブシステムの設定に使用できる属性のリストは「MicroProfile Config SmallRye サブシステムの属性」を参照してください。

プロパティーからの ConfigSource 設定の取得

ConfigSource のアクセス用にプロパティーを直接保存するには、config-source 属性を追加し、properties をリストとして指定します。

以下の管理 CLI コマンドは property1 および property2 プロパティーの設定データが含まれる ConfigSource を作成します。

/subsystem=microprofile-config-smallrye/config-source=props:add(properties={property1=value1,property2=value2})

このコマンドを実行すると、microprofile-config-smallrye サブシステムに以下の XML 設定が指定されます。

<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
    <config-source name="props">
        <property name="property1" value="value1"/>
        <property name="property2" value="value2"/>
    </config-source>
</subsystem>
ディレクトリーからの ConfigSource 設定の取得

ConfigSource を作成してディレクトリーのファイルからプロパティーを読み取りするには、config-source 属性を追加して、ファイルが含まれるディレクトリーを指定します。dir ディレクトリーの各ファイルの名前はプロパティーの名前で、ファイルの内容はプロパティーの値になります。

以下の CLI コマンドは、/etc/config/numbers-app/ ディレクトリーのファイルから設定プロパティーを読み取る ConfigSource を作成します。

/subsystem=microprofile-config-smallrye/config-source=file-props:add(dir={path=/etc/config/numbers-app})

このコマンドを実行すると、microprofile-config-smallrye サブシステムに以下の XML 設定が指定されます。

<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
    <config-source name="file-props">
        <dir path="/etc/config/numbers-app"/>
    </config-source>
</subsystem>

この構造は、OpenShift の ConfigMaps によって使用される構造に対応します。dir の値は、OpenShift または Kubernetes の ConfigMap 定義にある mountPath に対応します。

JBoss EAP にデプロイされたすべてのアプリケーションは、ディレクトリーに保存されたプロパティーにプログラムを使用してアクセスできます。

/etc/config/numbers-app/ ディレクトリーに以下の 2 つのファイルが含まれていることを仮定します。

  • num.size: このファイルには 5 が値として含まれています。
  • num.max: このファイルには 100 が値として含まれています。

以下のコード例では、num.size5 を返し、num.max100 を返します。

@Inject
@ConfigProperty(name = "num.size")
int numSize;

@Inject
@ConfigProperty(name = "num.max")
int numMax;
ConfigSource クラスからの ConfigSource 設定の取得

カスタムの org.eclipse.microprofile.config.spi.ConfigSource 実装クラスを作成および設定して、設定値のソースを提供することができます。

以下の管理 CLI コマンドは、org.example という名前の JBoss Module によって提供される、org.example.MyConfigSource という名前の実装クラスの ConfigSource を作成します。

/subsystem=microprofile-config-smallrye/config-source=my-config-source:add(class={name=org.example.MyConfigSource, module=org.example})

このコマンドを実行すると、microprofile-config-smallrye サブシステムに以下の XML 設定が指定されます。

<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
    <config-source name="my-config-source">
        <class name="org.example.MyConfigSource" module="org.example"/>
    </config-source>
</subsystem>

この ConfigSource クラスによって提供されるプロパティーはすべての JBoss EAP デプロイメントで使用できます。

JBoss EAP サーバーにグローバルモジュールを追加する方法は「グローバルモジュールの定義」を参照してください。

ConfigSourceProvider クラスからの ConfigSource 設定の取得

複数の ConfigSource インスタンスの実装を登録する、カスタムの org.eclipse.microprofile.config.spi.ConfigSourceProvider 実装クラスを作成および設定できます。

以下の管理 CLI コマンドは、org.example という名前の JBoss Module によって提供される、org.example.MyConfigSourceProvider という名前の実装クラスの config-source-provider を作成します。

/subsystem=microprofile-config-smallrye/config-source-provider=my-config-source-provider:add(class={name=org.example.MyConfigSourceProvider, module=org.example})

このコマンドを実行すると、microprofile-config-smallrye サブシステムに以下の XML 設定が指定されます。

<subsystem xmlns="urn:wildfly:microprofile-config-smallrye:1.0">
    <config-source-provider name="my-config-source-provider">
         <class name="org.example.MyConfigSourceProvider" module="org.example"/>
    </config-source-provider>
</subsystem>

ConfigSourceProvider 実装によって提供されるプロパティーはすべての JBoss EAP デプロイメントで使用できます。

JBoss EAP サーバーにグローバルモジュールを追加する方法は「グローバルモジュールの定義」を参照してください。

25.1.3. ConfigSources にアクセスするアプリケーションのデプロイ

Java コードで MicroProfile Config にアクセスするアプリケーションは、CDI を有効にする必要があります。 これには、デプロイメントアーカイブに META-INF/beans.xml または WEB-INF/beans.xml ファイルが含まれるようにするか、CDI bean アノテーションが含まれるようにします。

CDI の詳細は、JBoss EAP 『開発ガイド』 の「 コンテキストおよび依存関係の挿入(CDI) 」を参照してください。

25.2. MicroProfile OpenTracing SmallRye サブシステムでのリクエストのトレース

重要

Eclipse Microprofile OpenTracing は、テクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジープレビュー機能のサポート範囲」を参照してください。

25.2.1. Eclipse MicroProfile OpenTracing

サービス境界全体でリクエストをトレースする機能は、ライフサイクル中にリクエストが複数のサービスを通過するマイクロサービス環境で特に重要となります。Eclipse Microprofile OpenTracing 仕様は、Jakarta RESTful Web Services アプリケーション内の Open Tacing 対応の Tracer オブジェクトにアクセスするための、動作および API を定義します。動作は、送受信リクエストに対してどのように Open Tracing Spans が自動的に作成されるかを指定します。API は、指定のエンドポイントのトレースをどのように明示的に無効または有効にするかを定義します。

25.2.2. MicroProfile OpenTracing SmallRye サブシステム

Eclipse MicroProfile Open Tracing 機能は、SmallRye OpenTracing コンポーネントを使用して JBoss EAP に実装され、microprofile-opentracing-smallrye サブシステムによって提供されます。このサブシステムは、JAX-RS エンドポイントへのリクエストのトレースと CDI bean のサポートが含まれる Microprofile 1.3.0 を実装し、デフォルトの JBoss EAP 7.4 設定に含まれています。

microprofile-opentracing-smallrye には Jaeger Client がデフォルトのトレーサーとして同梱されています。また、Jakarta RESTful Web Services や Contexts and Dependency Injection など Jakarta EE アプリケーションで一般的に使用されるコンポーネントのインスツルメンテーションライブラリーのセットも含まれています。JBoss EAP サーバーに自動的にデプロイされた各 WAR は、独自の Tracer インスタンスを持ちます。EAR 内の各 WAR は個別の WAR として扱われ、各 WAR には独自の Tracer インスタンスがあります。デフォルトでは、Jaeger Client と使用されるサービス名はデプロイメントの名前から派生し、通常これは WAR ファイル名になります。

25.2.3. MicroProfile OpenTracing SmallRye サブシステムの設定

microprofile-opentracing-smallrye サブシステムは、デフォルトの JBoss EAP 7.4 設定に含まれています。有効な OpenTracing にはメモリーまたはパフォーマンスコストが関係するため、このサブシステムを無効にしたい場合があります。

以下の管理 CLI コマンドを使用してサーバー設定からサブシステムを削除し、サーバーインスタンスに対して MicroProfile Open Tracing 機能をグローバルに無効にします。

  1. サブシステムを削除します。

    /subsystem=microprofile-opentracing-smallrye:remove()
  2. 変更を反映するためにサーバーをリロードします。

    reload

以下の管理 CLI コマンドを使用してサーバー設定にサブシステムを追加し、サーバーインスタンスに対して MicroProfile Open Tracing 機能をグローバルに有効にします。

  1. サブシステムを追加します。

    /subsystem=microprofile-opentracing-smallrye:add()
  2. 変更を反映するためにサーバーをリロードします。

    reload

microprofile-opentracing-smallrye サブシステムに使用できる別の設定オプションはありません。代わりに、システムプロパティーまたは環境変数を設定して Jaeger Client を設定します。Jaeger Client の設定方法に関する詳細は、Jaeger のドキュメント を参照してください。有効なシステムプロパティーのリストは Jaeger ドキュメントの「Configuration via Environment」を参照してください。

重要

この機能はテクノロジープレビューとして提供されるため、システムプロパティーや環境変数を使用した Jaeger Client トレーサーの設定に関する現在の設定オプションは特に今後のリリースで互換性のない状態で変更される可能性があります。

また、デフォルトでは Jakarta 用の Jaeger Client に 0.001 に設定されている確率的サンプリングストラテジーがあり、約 1000 トレースに 1 つの割合でのみサンプルが取られることに注意してください。すべてのリクエストのサンプルを取るには、システムプロパティー JAEGER_SAMPLER_TYPEconst に設定し、JAEGER_SAMPLER_PARAM1 に設定します。

デフォルトトレーサーをオーバーライドする方法と、CDI bean のトレース方法に関する詳細は、『開発ガイド』 の「 Eclipse MicroProfile OpenTracing を使用したリクエストのトレース 」を参照してください。

25.3. Eclipse MicroProfile Health を使用したサーバー状態の監視

重要

Eclipse MicroProfile Health は、テクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジープレビュー機能のサポート範囲」を参照してください。

25.3.1. MicroProfile Health SmallRye サブシステム

JBoss EAP には、microprofile-health-smallrye サブシステムを使用して Eclipse MicroProfile Health 機能を提供する SmallRye Health コンポーネントが含まれています。このサブシステムは、JBoss EAP インスタンスが想定どおりに応答しているかどうかを判断するために使用され、デフォルトで有効になっています。

重要

デフォルトでは、MicroProfile Health SmallRye サブシステムはサーバーが稼働していることのみを評価します。カスタムヘルスチェックを含める場合は、『 開発ガイド』 の「 カスタムヘルスチェックの実装」 を参照してください。

Microprofile Health は、JBoss EAP をスタンドアロンサーバーとして実行している場合のみ利用できます。

25.3.2. 管理 CLI の例を使用したヘルスチェック

ヘルスチェックは管理 CLI を使用して確認できます。

  • :check 属性は、サーバーの現在の状態 (liveness) および (readiness プローブ) を取得します。
/subsystem=microprofile-health-smallrye:check
{
    "outcome" => "success",
    "result" => {
        "outcome" => "UP",
        "checks" => []
    }
}
  • :check-live 属性は liveness プローブの正常データのみを取得します。
/subsystem=microprofile-health-smallrye:check-live
{
    "outcome" => "success",
    "result" => {
        "outcome" => "UP",
        "checks" => []
    }
}
  • :check-ready 属性は readiness プローブの正常データのみを取得します。
/subsystem=microprofile-health-smallrye:check-ready
{
    "outcome" => "success",
    "result" => {
        "outcome" => "UP",
        "checks" => []
    }
}

25.3.3. 管理コンソールを使用したヘルスチェックの検証

管理コンソールには、ヘルスチェックとグローバルの結果をブール値として表示するチェックランタイム操作が含まれます。

管理コンソールからサーバーの現在の状態を取得するには、以下を実行します。

  1. Runtime タブに移動し、サーバーを選択します。
  2. Monitor の列で MicroProfile Health View の順にクリックします。

25.3.4. HTTP エンドポイントを使用したヘルスチェックの確認

ヘルスチェックは自動的に JBoss EAP の health コンテキストにデプロイされます。

That means that in addition to being able to examine it using the management CLI, you can also obtain the current health using the HTTP endpoint. The default address for the `/health` endpoint, accessible from the management interfaces, is `http://127.0.0.1:9990/health`.
  1. HTTP エンドポイントを使用して、サーバーの現在のヘルス状態を取得するには、以下の URL を使用します。
http://HOST:9990/health

このコンテキストにアクセスすると、サーバーの正常性を示すヘルスチェックが JSON 形式で表示されます。このエンドポイントは liveness プローブと readiness プローブの両方の正常性を確認します。

  1. /health/live エンドポイントは、liveness プローブの現在のヘルスをチェックします。
http://HOST:9990/health/live
  1. /health/ready エンドポイントは、readiness プローブの現在のヘルスをチェックします。
http://HOST:9990/health/ready

25.3.5. プローブが定義されていない場合のグローバルステータス

:empty-readiness-checks-status および :empty-liveness-checks-status は、readiness プローブまたは liveness プローブが定義されていない場合のグローバルステータスを指定する管理属性です。これらの属性により、アプリケーションは、そのアプリケーションが ready/live であることをプローブが確認するまで、’DOWN’ を報告できるようになります。デフォルトでは、これらの属性は ’UP’ を報告します。

  1. :empty-readiness-checks-status 属性は、readiness プローブが定義されていない場合に、readiness プローブのグローバルステータスを指定します。
/subsystem=microprofile-health-smallrye:read-attribute(name=empty-readiness-checks-status)
{
    "outcome" => "success",
    "result" => expression "${env.MP_HEALTH_EMPTY_READINESS_CHECKS_STATUS:UP}"
}
  1. :empty-liveness-checks-status 属性は、liveness プローブが定義されていない場合に、liveliness プローブのグローバルステータスを指定します。
/subsystem=microprofile-health-smallrye:read-attribute(name=empty-liveness-checks-status)
{
    "outcome" => "success",
    "result" => expression "${env.MP_HEALTH_EMPTY_LIVENESS_CHECKS_STATUS:UP}"
}

readiness および liveness プローブの両方を確認する /health HTTP エンドポイントと :check 操作は、これらの属性も考慮します。

25.3.6. HTTP エンドポイントの認証の有効化

health コンテキストを設定すると、このコンテキストへのアクセスにユーザーの認証を必要とすることができます。

このエンドポイントで認証を有効にするには、以下の手順に従います。

  1. microprofile-health-smallrye サブシステムで security-enabled 属性を true に設定します。

    /subsystem=microprofile-health-smallrye:write-attribute(name=security-enabled,value=true)
  2. 変更を反映するためにサーバーをリロードします。

    reload

health エンドポイントにアクセスしようとすると、認証プロンプトが表示されるようになります。

25.4. Eclipse MicroProfile Metrics

重要

Eclipse MicroProfile Metrics は、テクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの「テクノロジープレビュー機能のサポート範囲」を参照してください。

25.4.1. MicroProfile Metrics サブシステムについて

JBoss EAP では、microprofile-metrics-smallrye サブシステムを使用して Eclipse MicroProfile Metrics 機能を提供する SmallRye Metrics コンポーネントが含まれるようになりました。このサブシステムは、JBoss EAP インスタンスのモニタリングデータを提供するために使用されます。これはデフォルトで有効です。

重要

microprofile-metrics-smallrye サブシステムは、スタンドアロン設定でのみ有効になります。

25.4.2. HTTP エンドポイントを使用したメトリクスの検証

メトリクスは JBoss EAP 管理インターフェースで自動的に利用できるようになり、以下のコンテキストを使用できます。

  • /metrics/: MicroProfile 3.0 仕様に指定されたメトリクスが含まれます。
  • /metrics/vendor: メモリープールなどのベンダー固有のメトリクスが含まれます。
  • /metrics/application: MicroProfile Metrics API を使用するデプロイしたアプリケーションおよびサブシステムのメトリクスが含まれます。

JBoss EAP サブシステムメトリクスは Prometheus 形式で公開されます。

メトリクス名はサブシステムと属性名に基づきます。たとえば、サブシステム undertow は、アプリケーションデプロイメントのすべてのサーブレットのメトリクス属性 request-count を公開します。このメトリクスの名前は jboss_undertow_request_count です。接頭辞 jboss はメトリクスソースを特定するのに役立ちます。

EAP で公開されるメトリクスの一覧を表示するには、CLI で以下のコマンドを実行します。

$ curl -v http://localhost:9990/metrics | grep -i type

例: JAX-RS アプリケーションの要求数の取得

以下の例は、JBoss EAP にデプロイされた web サービスへのリクエスト数を検索する方法を示しています。この例では、helloworld-rs クイックスタートを web サービスとして使用します。クイックスタートを jboss-eap-quickstarts からダウンロードします。

helloworld-rs クイックスタートの request-count メトリックを確認するには、以下の手順に従います。

  1. undertow サブシステムの統計を有効にします。

    • 統計が有効な状態でスタンドアロンサーバーを起動します。

      $ ./standalone.sh -Dwildfly.statistics-enabled=true
    • 既にサーバーが稼働している場合は、undertow サブシステムの統計を有効にします。

      /subsystem=undertow/:write-attribute(name=statistics-enabled,value=true)
  2. helloworld-rs クイックスタートをデプロイします。

    • クイックスタートのルートディレクトリーに、Maven を使用して web アプリケーションをデプロイします。

      $ mvn clean install wildfly:deploy
  3. curl コマンドを使用して CLI で http エンドポイントをクエリーし、request_count に対してフィルター処理を行います。

    $ curl -v http://localhost:9990/metrics |  grep request_count

    出力:

    jboss_undertow_request_count_total{server="default-server",http_listener="default",} 0.0

    返された属性値は 0.0 です。

  4. Web ブラウザーで http://localhost:8080/helloworld-rs/ にあるクイックスタートにアクセスし、任意のリンクをクリックします。
  5. CLI から http エンドポイントを再度クエリーします。

    $ curl -v http://localhost:9990/metrics |  grep request_count

    出力:

    jboss_undertow_request_count_total{server="default-server",http_listener="default",} 1.0

    値は 1.0 に更新されました。

    前回の 2 つの手順を繰り返して、要求数が正しく更新されていることを確認します。

25.4.3. 管理コンソールを使用した MicroProfile メトリクスの設定

管理コンソールでは、以下の設定を実行できます。

  • メトリクスの公開を有効または無効にします。
  • 公開されるメトリクスの接頭辞を編集します。
  • セキュリティーを有効または無効にします。
  • 必須でないフィールドを初期値またはデフォルト値にリセットします。

管理コンソールを使用して MicroProfile メトリクスを設定するには、以下の手順に従います。

  • 管理コンソールにアクセスし、Configuration Subsystems MicroProfile Metrics の順に移動して View をクリックし、MicroProfile Metrics ページを開きます。

25.4.4. HTTP エンドポイントの認証の有効化

metroics コンテキストおよびすべてのサブコンテキストは、コンテキストのアクセスにユーザー許可を必須にするように設定できます。以下の手順は、このエンドポイントで認証を有効にします。

  1. microprofile-metrics-smallrye サブシステムで security-enabled 属性を true に設定します。

    /subsystem=microprofile-metrics-smallrye:write-attribute(name=security-enabled,value=true)
  2. 変更を反映するためにサーバーをリロードします。

    reload

サブシステムが metrics エンドポイントにアクセスを試みると、認証プロンプトが表示されるようになりました。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.