SOA 固有のプロパティの設定
以下の設定プロパティを使用して、SOA パフォーマンス管理(SPM)をカスタマイズできます。
apmdevops104jp
以下の設定プロパティを使用して、SOA パフォーマンス管理(SPM)をカスタマイズできます。
Web サービスに表示される名前の設定
デフォルトでは、Web サービスのノードは Web サービスの
ネームスペース
を使用して名前を付けられます。Web サービスのネームスペースはその URL に似ています。たとえば、Web サービスが以下の URL を使用するとします。http://ClearingHouse.demobank.ca.com
この場合、そのノードはデフォルトでは以下のように表示されます。
http_//ClearingHouse.demobank.ca.com
オプションで、ノード名として Web サービス
エンドポイント
を使用するようにエージェントを設定できます。Web サービス エンドポイントには、サービスについてサーバ名やポート番号のような追加の情報が含まれます。たとえば、ClearingHouse.demobank.ca.com Web
サービスについて Web サービス エンドポイントが表示されるように選択した場合、Investigator で、そのノードは以下のように表示されることがあります。http_localhost_8383_demobank_services_ClearingHouseService
エージェントの webservices.pbd ファイルを編集し、{namespace} または {servicename} のいずれを使用するかを指定することにより、表示される名前を変更できます。ほとんどの場合、ネームスペースは、Investigator と SOA 依存マップに表示される最もわかりやすい名前です。ただし、webservices.pbd ファイルと IntroscopeAgent.profile ファイルを編集する場合は、サービス エンドポイントを使用できます。
注:
このリリースでは、WCF Web サービスのクライアント側の nameformatter は、{servicename} をサポートしていません。また、{namespace} を {servicename} に置き換えるオプション設定手順は、WCF Web サービスのメトリック設定には適用されません。Investigator および依存マップでノード名としてサービス エンドポイントを使用するには、以下の手順に従います。
- <Agent_Home>ディレクトリ内のwebservices.pbdファイルを開きます。
- {namespace}のすべてのインスタンスを検索して、{servicename}に置き換えます。{namespace} が完全修飾メトリック名の一部としてトレーサに含まれるため、ファイルにはこの文字列が多数含まれています。
- webservices.pbdファイルを保存します。
- <Agent_Home>ディレクトリ内のappmap-soa.pbdファイルを開きます。
- {namespace}のすべてのインスタンスを検索して、{servicename}に置き換えます。
- appmap-soa.pbdファイルを保存します。
- アプリケーション サーバを再起動します。アプリケーション サーバの再起動後、Investigator ツリーと SOA 依存マップには、ネームスペースではなく Web サービス エンドポイント名が表示されます。ネームスペースではなくサービス エンドポイント名を使用している場合は、クライアンとサーバの[概要]タブに表示されるネームスペースのラベルを変更することもお勧めします。
クライアンとサーバの[概要]タブで使用されるラベルを変更するには、以下の手順に従います。
- <EM_Home>/ext/xmltv/ディレクトリ内のws.overview.tv.xmlファイルを開きます。
- Namespacesのすべてのインスタンスを検索して、Servicesに置き換えます。
- ws.overview.tv.xmlファイルを保存します。
- Enterprise Manager を再起動します。Enterprise Manager の再起動後、Investigator ツリーで[WebServices]、[Client]、または[Server]ノードを選択すると、[概要]タブに[サービス]ラベルが表示されます。
Web Services Manager 7.0.x のメトリック命名規則を使用するには、以下の手順に従います。
- ディレクトリ内の IntroscopeAgent.profile ファイルを開きます。
- com.wily.introscope.agent.soa.metricNameFormattingプロパティをそのファイルに追加します。
- com.wily.introscope.agent.soa.metricNameFormattingプロパティを以下のように設定します。com.wily.introscope.agent.soa.metricNameFormatting=/:この設定は、メトリック名内のスラッシュ(/)およびコロン(:)文字をアンダースコア(_)文字に置き換えます。この設定を使用して、http://CheckingAccount/demobank.ca.com は http_CheckingAccount_demobank.ca.com として表示されます。
- IntroscopeAgent.profileファイルを保存します。
- アプリケーション サーバを再起動します。アプリケーション サーバの再起動後、Investigator ツリーと SOA 依存マップには、ネームスペースではなく Web サービス エンドポイント名が表示されます。
プロセスにまたがるトランザクション追跡では、エージェントはあるプロセスから別のプロセスへ渡すことができる相関識別子を挿入する必要があります。エージェントはこの相関識別子を SOAP ヘッダまたは HTTP ヘッダに挿入できます。
ほとんどのサービスが SOAP メッセージングを使用するため、相関識別子は SOAP ヘッダにデフォルトで挿入され、そのヘッダから読み取られます。ただし、ある特定の状況では、HTTP ヘッダを使用して相関識別子を渡すことが優先される場合があります。たとえば、まれな状況ですが、SOAP ヘッダに相関識別子を追加すると、メッセージが拒否される場合があります。これは、相関 ID によって SOAP ペイロードが変更されるためです。
アプリケーションがどのように SOAP メッセージを処理するか、どのようにセキュリティを実装したかに応じて、
IntroscopeAgent.profile
ファイルを修正して、HTTP ヘッダまたは SOAP ヘッダのいずれで相関 ID を渡すかを選択できます。クライアント側およびサーバ側の相関識別子の処理を制御する 4 つのエージェント設定プロパティがあります。これらのプロパティを使用して、相関識別子を SOAP ヘッダ、HTTP ヘッダ、または両方のヘッダ プロトコルに挿入するか、まったく挿入しないかを指定できます。これらのプロパティは、以下の標準のエージェント プレフィックス
com.wily.introscope.agent
で始まります。- soapheaderinsertion.enabledクライアントが SOAP ヘッダに相関識別子を挿入することを有効にします。
- クライアントが SOAP ヘッダを使用できるようにするには、このプロパティを true に設定します。
- クライアントが SOAP ヘッダに相関識別子を挿入しないようにするには、このプロパティを false に設定します。
- httpheaderinsertion.enabledクライアントが HTTP ヘッダに相関識別子を挿入することを有効にします。
- クライアントが HTTP ヘッダを使用できるようにするには、このプロパティを true に設定します。
- クライアントが HTTP ヘッダに相関識別子を挿入しないようにするには、このプロパティを false に設定します。
- soapheaderread.enabledサーバが SOAP ヘッダから相関識別子を読み取ることを有効にします。
- サーバが SOAP ヘッダを使用できるようにするには、このプロパティを true に設定します。
- サーバが SOAP ヘッダを読み取らないようにするには、このプロパティを false に設定します。
- httpheaderread.enabledサーバが HTTP ヘッダから相関識別子を読み取ることを有効にします。
- サーバが HTTP ヘッダを使用できるようにするには、このプロパティを true に設定します。
- サーバが HTTP ヘッダを読み取らないようにするには、このプロパティを false に設定します。
クライアントおよびサーバ用のプロパティの設定
これらのプロパティを設定して、エージェント単位で特定の動作を有効または無効にできます。たとえば、サーバが SOAP と HTTP の両方に基づいたサービスからのメッセージを処理する場合、いずれかのタイプのヘッダ内の相関 ID を読み取るが、SOAP ヘッダに識別子を挿入しないように、そのサーバ上のエージェントを以下のように設定することもできます。
com.wily.introscope.agent.soapheaderread.enabled=true com.wily.introscope.agent.httpheaderread.enabled=true com.wily.introscope.agent.soapheaderinsertion.enabled=false com.wily.introscope.agent.httpheaderinsertion.enabled=true
これらの設定を使用して、ローカル コンピュータは、他のエージェントによって送信された SOAP ヘッダから相関識別子を読み取ることができますが、HTTP ヘッダにのみ相関識別子を挿入できます。ただし、追跡を有効にするには、Web サービスのクライアントとサーバが同じタイプのヘッダに対して相関識別子の挿入と読み取りを行う必要があることに注意してください。たとえば、HTTP ヘッダに相関識別子を挿入するようにクライアントを設定する場合、HTTP ヘッダから識別子を読み取るようにサーバを設定する必要があります。
SOAP と HTTP の両方に対して相関識別子の挿入を無効にし、プロセスにまたがるトランザクション追跡をオフにする場合、4 つのすべてのプロパティを false に設定できます。たとえば、以下の通りです。
com.wily.introscope.agent.soapheaderread.enabled=false com.wily.introscope.agent.httpheaderread.enabled=false com.wily.introscope.agent.soapheaderinsertion.enabled=false com.wily.introscope.agent.httpheaderinsertion.enabled=false
これらのプロパティを修正する前に、SOA 依存マップおよびプロセスにまたがるトランザクション追跡では、相関識別子をあるプロセスから別のプロセスへ渡す必要があることに注意してください。
これらのプロパティを false に設定することにより相関追跡を無効にする場合、SOA 依存マップに依存関係を適切に表示できず、依存関係メトリックを正確に収集できなくなり、トランザクション追跡が不完全になることがあります。
SOAP ハンドラの挿入ポイントの設定
IntroscopeAgent.profile ファイル内の設定プロパティを使用して、SOAP ハンドラが SOAP ハンドラ チェーン内のどこに挿入されるかを制御できます。これらのプロパティにより、暗号化や元の SOAP メッセージに対するシグネチャ確認が必要なアプリケーションに柔軟性が提供され、SOAP ヘッダの挿入がアプリケーションによる SOAP メッセージの検証の妨げにならないようにできます。
SOAP ハンドラを挿入するためのクライアントおよびサーバのプロパティ
SOAP ハンドラを使用するアプリケーション サーバの場合は、以下の構成プロパティを使用して SPM SOAP ヘッダを制御できます。
- soa.client.prependhandlerSOAP ヘッダをクライアント上の SOAP ハンドラ チェーン内の先頭または末尾に挿入することを有効にします。
- SOAP ヘッダが SOAP ハンドラ チェーン内の先頭のハンドラによって挿入されるようにするには、このプロパティを true に設定します。
- SOAP ヘッダが SOAP ハンドラ チェーン内の末尾のハンドラによって挿入されるようにするには、このプロパティを false に設定します。
- soa.server.appendhandlerSOAP ヘッダをサーバ上の SOAP ハンドラ チェーン内の先頭または末尾で読み取ることを有効にします。
- SOAP ヘッダが SOAP ハンドラ チェーン内の末尾のハンドラによって読み取られるようにするには、このプロパティを true に設定します。
- SOAP ヘッダが SOAP ハンドラ チェーン内の先頭のハンドラによって読み取られ、その後に削除されるようにするには、このプロパティを false に設定します。
SOAP ハンドラのデフォルトの順序の変更
デフォルトでは、クライアント上のハンドラ チェーン内の先頭のハンドラは SOAP ヘッダを挿入し、サーバ上のチェーン内の末尾のハンドラはヘッダを読み取ります。一部のアプリケーションでは、SPM SOAP ヘッダおよび元の SOAP メッセージが適切に渡されることを確認するため、デフォルト動作の修正が必要になる場合があります。たとえば、アプリケーションが SOAP メッセージのシグネチャを確認する必要がある場合、デフォルトの動作を修正することが必要になることがあります。
デフォルトのプロパティ設定を変更する理由を示すために、チェーン内の先頭のハンドラによって SOAP ヘッダが挿入されるアプリケーションを考えます。SOAP メッセージはその後 2 番目のハンドラでシグネチャを付与されるとします。メッセージがサーバ上で受信されると、先頭のハンドラはシグネチャを確認しようとします。SPM SOAP ヘッダは挿入されましたが、まだ読み取られて削除されていないため、シグネチャ確認は失敗し、メッセージが拒否されます。
構成プロパティにより、チェーン内の先頭のハンドラが SPM SOAP ヘッダを読み取って削除するようにデフォルトの動作を変更することができます。この設定により、チェーン内の次のハンドラが元の SOAP メッセージに対してシグネチャを確認できるようになります。たとえば、以下の通りです。
com.wily.introscope.agent.soa.client.prependhandler=true com.wily.introscope.agent.soa.server.appendhandler=false
プロパティのデフォルト設定はほとんどの環境で適切ですが、これらの設定プロパティにより、さまざまなアプリケーション シナリオに SOA パフォーマンス管理を適応させる柔軟性が得られます。
SOA 依存マップに関する制限の設定
通常、Enterprise Manager 上に保存された依存マップ データは、検出されたアプリケーション間のすべての依存関係を表しており、展開されているサービス指向アーキテクチャの完全なモデルを提供します。しかし、非常に大規模または複雑な SOA 環境では、すべての SOA コンポーネントとそれらの依存関係を完全に表現すると、Enterprise Manager 自体のパフォーマンスやオペレーションに影響する場合があります。
依存マップが Enterprise Manager のパフォーマンスに影響を与えないようにするために、マップのサイズおよび複雑さを制限する設定プロパティがあります。デフォルトでは、これらの設定プロパティは、最大 5,000 のノードおよび最大 25,000 の依存関係(1 ノードあたり 5 つの依存関係という割合)に依存マップを制限します。
これらの制限を制御するために、
IntroscopeEnterpriseManager.properties
ファイルで以下の Enterprise Manager 設定プロパティを設定できます。- dependencymap.max.vertices依存関係データがスタンドアロンまたはコレクタ Enterprise Manager で保存できるノードの最大数を設定します。デフォルトでは、このプロパティは 5000 に設定されています。
- dependencymap.max.edge.ratio依存関係対ノードの最大比率を設定して、スタンドアロンまたはコレクタ Enterprise Manager 上で保存できる依存関係データの全体的な複雑さを制御します。デフォルトでは、このプロパティは 5 に設定されています。
ほとんどの組織の場合、SOA ネットワークには 5000 未満のコンポーネントが必要です。また、標準の依存関係比率は 1 つのコンポーネントあたり 1 つまたは 2 つの依存関係です。デフォルト設定により、したがって、ほとんどの組織のニーズを超えるサイズおよび複雑さが可能です。ただし、まれな場合ですが、デフォルト値を修正することもできます。たとえば、以下のようにプロパティを修正することもできます。
- デフォルト値が SOA 環境に対応しない場合に、依存マップのサイズと複雑さを大きくする。変更がどのように Enterprise Manager のパフォーマンスに影響を与える可能性があるかを考慮する必要があります。
- SOA 環境にデフォルト値が許可するほど多くのノードおよび依存関係が必要でない場合に、依存マップのサイズおよび複雑さを意図的に制限する。何らかの変更により SOA 依存マップ モデルが余計に不完全になる可能性があるかどうかを考慮する必要があります。
たとえば、データの保存対象となるノードを減らすが、1 つのノードあたりの依存関係を増やすには、以下のようにプロパティを修正します。
com.wily.introscope.soa.dependencymap.max.vertices=2000 com.wily.introscope.soa.dependencymap.max.edge.ratio=8
JAX-WS 2.2.6 以上との SPM の互換性の設定
JAX-WS の新しいバージョン(2.2.6 以上)では、
java.util.HashMap
の代わりに com.sun.xml.ws.transport.Headers
を使用することが想定されています。アプリケーションが Web サービス呼び出しを行う際に ClassCastException を回避するには、IntroscopeAgent.profile
ファイル
で以下の設定プロパティをコメント解除します。com.wily.introscope.agent.soa.JAXWSHeadersClassName=com.sun.xml.ws.transport.Headers
この変更は、プロセスまたは JVM にまたがるトランザクション追跡には何の影響も与えません。また、古い機能を損なうこともありません。アプリケーションのさまざまな機能に対して 2 つの JAX-WS 実装がアプリケーションにある場合は、このプロパティを有効にすると、両方の実装が動作します。