Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule アプリケーションで API 自動検出を設定して、アプリケーション内のエンドポイントへの要求などの重要なメトリクスを API Manager に表示します。API Manager は Anypoint Platform の一部です。
Mule アプリケーションの自動検出設定には、Mule ゲートウェイランタイムで実行される API Manager の API からの API インスタンス ID が必要です。また、アプリケーションには API Manager で API に接続するための Anypoint Platform ログイン情報 (クライアント ID とシークレット) が必要です。
Mule ゲートウェイ API インスタンスのその他の重要な使用法については、『API インスタンスの管理』 and 『Mule Gateway ポリシーの概要』を参照してください。
Mule アプリケーションの自動検出設定の API インスタンス ID を取得するには、Mule ゲートウェイランタイムで実行される API Manager の API にアクセスできる必要があります。または、API Manager ドキュメントの『Mule ゲートウェイ API インスタンスの追加』の手順に従って API を作成できます。
API Manager の API は、Mule アプリケーションのエンドポイントを定義する Anypoint Exchange の API 仕様に関連付けられています。エンドポイントを定義する API 仕様の例、およびエンドポイントを実装する Mule アプリケーションの例については、例を参照してください。 API 仕様の作成に関する案内については、以下を参照してください。
Anypoint Code Builder から仕様を設計する場合は『API 仕様の作成およびインポート』
Design Center から仕様を設計する場合は「design-center::design-designing-api-specs-fragments.adoc」
API 仕様を Exchange にパブリッシュするための案内については、以下を参照してください。
Anypoint Code Builder から仕様をパブリッシュする場合は『Exchange への API 仕様とフラグメントのパブリッシュ』
『API 仕様のパブリッシュ』 Design Center から仕様をパブリッシュする場合は
API Manager の Mule ゲートウェイランタイムで実行される API に要求データを送信するように Mule アプリケーションを設定します。API は、API Manager のグラフでこのデータを追跡します。
Mule アプリケーションの自動検出設定には、API インスタンス ID を参照するグローバル要素 (<api-gateway:discovery/>
) と、Mule アプリケーションの Mule Runtime Engine が API Manager で API の Anypoint Platform ビジネスグループまたは環境に接続できるようにするログイン情報 (クライアント ID とシークレット) が必要です。
自動検出をセットアップする手順は、次のとおりです。
始める前にの前提条件を満たします。
Anypoint Platform の [Access Management (アクセス管理)] ( US、 EU
) から、ビジネスグループのクライアント ID とシークレットを取得します。
Anypoint Platform ( US、 EU
) の [Access Management (アクセス管理)] で、ビジネスグループのリストを開きます。
代わりに Anypoint Platform ホームページからビジネスグループリストに移動するには、[Access Management (アクセス管理)] を開き、[Business Groups (ビジネスグループ)] をクリックします。
ビジネスグループリストで、ビジネスグループの名前をクリックします。
ビジネスグループの [Settings (設定)] タブをクリックします。
Access Manager の [Settings (設定)] タブから [Client ID (クライアント ID)] と [Client Secrets (クライアントシークレット)] の値を取得します。
API Manager で API インスタンスから API インスタンス ID を取得します。
Anypoint Code Builder の Mule アプリケーションで、API インスタンス ID を使用してアプリケーションを API インスタンスとペアリングします。
Mule アプリケーションの XML エディターで、アプリケーションの <flow/>
要素の上に <api-gateway:autodiscovery/>
要素を追加します。次に例を示します。
<api-gateway:autodiscovery apiId="YOUR_API_ID_HERE" flowRef="currentTimeFlow" doc:name="Autodiscovery" />
xml
より詳しいコンテキストについては、例: Mule アプリケーションの例を参照してください。
API インスタンス ID を apiID
値として貼り付けます。次に例を示します。
<api-gateway:autodiscovery apiId="123456" flowRef="currentTimeFlow" doc:name="Autodiscovery" />
xml
Anypoint Code Builder で、ビジネスグループのクライアント ID とクライアントシークレットを [Settings (設定)] タブの Mule Runtime 引数に追加します。
[Settings (設定)] タブを開きます。
[Anypoint Code Builder] パネルから (歯車) アイコンをクリックします。
アクティビティバーから (歯車) アイコンをクリックし、[Settings (設定)] を選択して、[Settings (設定)] タブで
mule
を検索します。
『[Command Palette (コマンドパレット)』] でコマンド MuleSoft: Open ACB Settings
を指定します。
[Settings (設定)] タブで、[Mule] › [Runtime: Default Arguments (ランタイム: デフォルト引数)] を見つけます。
テキスト項目で、クライアント ID とシークレット引数を既存の引数の末尾に追加します。次に例を示します。
-M-Danypoint.platform.client_id=999abcde1f888e9h9aaa00ff5a5b03c5 -M-Danypoint.platform.client_secret=abc0d1234e5a4ab321A000B2033D4E56
例のモック値をクライアント ID とシークレットに置き換えます。
アプリケーションを実行して、ビルドログで次の情報をチェックして、API が接続されていることを確認します。
クライアント ID とクライアントシークレットが API Manager に対して正常に検証されている。
基盤となる GateKeeper
が FLEXIBLE
モードで使用可能 (ブロック解除済み) である。
API Gateway 拡張機能が STANDALONE
になっている。
API インスタンスによって追跡されるアプリケーションのエンドポイントに要求を送信します。
詳細は、『開発環境でのフローのトリガー』を参照してください。
API Manager で、API インスタンスが登録済み (アクティブ) で、API Manager でメトリクスが生成されていることを確認します。
API 自動検出についてテストされた例を次に示します。
テストには、Design Center での仕様の作成、Exchange への仕様のパブリッシュ、Exchange で仕様に関連付けられた API Manager での Mule ゲートウェイ API インスタンスの作成が含まれます。
テストには、API Manager からの apiID
値を含む <api-gateway:autodiscovery/>
要素の追加、Anypoint Code Builder 設定の Mule Runtime 引数へのクライアント ID とシークレットの追加、デバッグモードでのアプリケーションの実行によるローカルでのアプリケーションのデプロイ、アプリケーションでの定義済みエンドポイントへの要求、API Manager で関連付けられた Mule ゲートウェイ API インスタンスがアクティブであることの確認、要求によってインスタンスのグラフにデータ (重要なメトリクス) が生成されることの確認が含まれます。
次の OAS 仕様では、Mule アプリケーションの例の 1 つのエンドポイントを定義します。
openapi: "3.0.0" (1)
info:
version: 1.0.0
title: my-autodiscovery-api
servers:
- url: https://my-autodiscovery-app.us-e2.cloudhub.io
paths:
/current-time: (2)
get:
responses:
"200":
description: my description here.
content:
application/json:
schema:
type: object
properties:
current-time:
type: string
example:
current-time: "2024-08-05 14:56:12" (3)
yaml
1 | OAS 3.0 仕様 |
2 | /current-time エンドポイント定義 |
3 | 書式設定された日時値の例 |
<http:listener-config name="HTTP_Listener_config" > (1)
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<api-gateway:autodiscovery apiId="YOUR_API_ID_HERE" flowRef="currentTimeFlow" doc:name="Autodiscovery" /> (2)
<flow name="currentTimeFlow"> (3)
<http:listener path="/current-time" config-ref="HTTP_Listener_config" doc:name="Listener" doc:id="bce0d0"/> (4)
<ee:transform doc:name="Transform" doc:id="ahlupg" > (5)
<ee:message>
<ee:set-payload >
<![CDATA[#[%dw 2.0
output application/json
---
{
"current-time": now() as String {format: "yyyy-MM-dd hh:mm:ss"}
}]]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<logger doc:name="Logger" doc:id="bhcobk" message="#[payload]"/> (6)
</flow>
xml
1 | HTTP リスナー接続設定例 |
2 | フロー currentTimeFlow を参照する自動検出設定
このアプリケーションを試す場合は、 |
3 | フロー currentTimeFlow |
4 | エンドポイント設定 path="/current-time" の HTTP リスナー
このエンドポイントは、OAS 仕様の例で定義されたエンドポイントの名前と一致します。 |
5 | DataWeave を使用して現在時刻を指定された形式で取得する Transform Message コンポーネント
この形式は、OAS 仕様の例で定義された形式と一致します。 |
6 | アプリケーション実行中の http://localhost:8081/current-time への要求時に現在時刻 (payload 内) を出力する Logger コンポーネント |