Web サービスを使用した InterSystems IRIS の監視
この付録では、InterSystems IRIS® Data Platform のサポートにより WS-Management 仕様準拠機能を使用する方法について簡単に説明します。それらの機能を使用すると、SOAP を介してリモートで InterSystems IRIS インスタンスを監視できます。
InterSystems IRIS での WS-Monitoring のサポートの概要
SYS.WSMon パッケージは、WS-Management 仕様Opens in a new tabに従って、InterSystems IRIS インスタンスのリモート監視に使用できる Web サービスを提供します。このパッケージは、機能面で SNMP インタフェース (このドキュメントの付録 “SNMP を使用した InterSystems IRIS の監視” を参照) と類似していますが、組み込みの InterSystems IRIS Web サービス・サポートを使用しています。
WS-Management のサポートには、以下が含まれます。
これらのクラスは、%SYS ネームスペースでのみ使用できます。
基本的な監視として、ログ・モニタリング Web サービスと別インスタンスの Web クライアントを使用できます。以下の図は、監視クライアントがターゲット・インスタンスに監視データを要求する様子を示しています。ターゲット・インスタンス上のログ監視 Web サービスが応答し、クライアント監視データを送信しています。
より高度な例としては、別の InterSystems IRIS インスタンス上で実行されている可能性もある イベント・シンク・サービスを Web クライアントがサブスクライブすることがあります。例えば、以下の図では、監視クライアントはプライマリ・インスタンスに 3 番目のインスタンスをサブスクライブするよう要求を送信しています。プライマリ・インスタンスの監視 Web サービスは、クライアントにサブスクリプション ID を送信して応答し、その後、3 番目のインスタンスにイベントを送信します。3 番目のインスタンスはカスタム・レポートやアラートを作成するなど、さまざまな方法でこれらのイベントを処理できます。
イベント・シンク Web サービスでは、業務に必要なあらゆる処理を実行できます。
スタジオに用意されている SOAP ウィザードを使用して、Web サービスおよび Web クライアントを WSDL から生成できます。このウィザードの使用法の詳細は、"Web サービスおよび Web クライアントの作成" を参照してください。(同様のウィザードは、さまざまなサードパーティ・テクノロジによっても提供されています。)
モニタリング Web サービスの URL
任意の InterSystems IRIS インスタンスに対して、ログ・モニタリング Web サービスを次の URL で使用できます。
http://server:port/csp/sys/SYS.WSMon.Service.cls
server は、InterSystems IRIS が実行されているサーバです。また、port は、InterSystems IRIS Web サービス・サーバが使用するポートです。以下はその例です。
http://localhost:52773/csp/sys/SYS.WSMon.Service.cls
同様に、この Web サービスの WSDL を次の URL で使用できます。
http://server:port/csp/sys/SYS.WSMon.Service.cls?WSDL=1
モニタリング Web サービスの Web メソッド
SYS.WSMon.ServiceOpens in a new tab クラスには、以下の Web メソッドが用意されています。
EventCancel()
method EventCancel(id) as %Integer
指定された Web サービスのサブスクリプションをキャンセルします。EventSubscribe() を参照してください。
EventSubscribe()
method EventSubscribe(location) as %String
指定された Web サービスをサブスクライブして、その InterSystems IRIS インスタンスのイベントに関する情報を受信します。この Web サービスには、例で示されているように、独自の Web サービスまたは SYS.WSMon.EventSinkOpens in a new tab Web サービスを指定することができます。独自の Web サービスを作成する場合、SYS.WSMon.EventSinkOpens in a new tab Web サービスの WSDL に従う必要があります。
location には、その Web サービスの EventSink() メソッドを呼び出すのに必要な URL を指定します。SYS.WSMon.EventSinkOpens in a new tab では、次のように location を指定できます。
http://server:port/csp/sys/SYS.WSMon.EventSink.cls
server は、InterSystems IRIS が実行されているサーバです。また、port は、InterSystems IRIS が使用するポートです。
それぞれのイベントに対して、InterSystems IRIS は、指定された Web サービスの EventSink() メソッドの呼び出しを試行して、SYS.WSMon.wsEventOpens in a new tab のインスタンスを送信します。
このメソッドが返す ID は、サブスクリプションのキャンセルに使用できます。EventCancel() を参照してください。
Web クライアントの監視
SYS.WSMon.ClientOpens in a new tab クラスとその関連クラスは、同一または別の InterSystems IRIS インスタンスにある SYS.WSMon.Server Web サービスのメソッドを呼び出すことのできる、InterSystems IRIS Web サービス・クライアントです。
この Web クライアント・クラスでは、次の LOCATION パラメータを使用します。
Parameter LOCATION = "http://server:port/csp/sys/SYS.WSMon.Service.cls"
server は、InterSystems IRIS が実行されているサーバです。また、port は、InterSystems IRIS Web サービス・サーバが使用するポートです。
以下に示すように、その他の InterSystems IRIS Web サービス・クライアントを使用するときと同様にこの Web クライアントを使用します。
-
Web クライアント・クラスのインスタンスを作成します。
-
必要に応じて、Location プロパティを設定します。
この設定は、使用する SYS.WSMon.Server Web サービスがクライアントとは異なるマシンにある場合、または 52773 以外のポートを使用する場合に必要です。
-
必要に応じて、その他のプロパティを設定します。
"Web サービスおよび Web クライアントの作成" を参照してください。
-
Web メソッドを呼び出します。
-
Web メソッドによって返される値を確認します。
詳細は、呼び出す Web メソッドによって異なります。“モニタリング Web サービスの Web メソッド”、およびクラス・リファレンスの返りタイプの説明を参照してください。
ターミナル・セッションの例を以下に示します。
USER>set $namespace = "%SYS"
%SYS>set client=##class(SYS.WSMon.Client).%New()
%SYS>set client.Location="http://localhost:57799/csp/sys/SYS.WSMon.Service.cls"
%SYS>set myroutinestats=client.GetRoutine()
%SYS>write myroutinestats.RtnCallsLocal
19411581
%SYS>write myroutinestats.RtnCallsRemote
0
%SYS>write myroutinestats.RtnCommands
432764817
%SYS>
データを取得してユーザ・インタフェースに表示するときには、プログラムによりクライアントを作成して使用するほうがより一般的です。
Note:
SYS.WSMon パッケージを使用できるのは、%SYS ネームスペースに限られます。つまり、ここに記載されている手順を実行するには、%SYS ネームスペースを使用する必要があります。
イベントの処理
InterSystems IRIS が提供するサンプル Web サービス (SYS.WSMon.EventSinkOpens in a new tab) は、ログ・モニタリング Web サービスによって送信されるイベントを受信して処理できます。この Web サービスを使用することも、独自の Web サービスを作成することもできます。
サンプル・イベント・シンク Web サービスの使用
SYS.WSMon.EventSinkOpens in a new tab は、イベントを受信して処理することのできる、InterSystems IRIS のサンプル Web サービスです。
任意の InterSystems IRIS インスタンスに対して、ログ・モニタリング Web サービスを次の URL で使用できます。
http://server:port/csp/sys/SYS.WSMon.EventSink.cls
server は、InterSystems IRIS が実行されているサーバです。また、port は、InterSystems IRIS Web サービス・サーバが使用するポートです。
この Web サービスにはメソッドが 1 つあります。
CacheEventSink()
Method CacheEventSink(event As SYS.WSMon.wsEvent) As %Integer
Windows プラットフォームでは、イベントが発生すると、このサンプル・メソッドによってポップアップ・ウィンドウが表示されます。その他のプラットフォームでは、^SYS("MONITOR","WSMON","EVENT_RECEIVED",$h) にエントリが追加されます。
このメソッドは常に 1 を返します。
このサンプル・サービスをサブスクライブして、モニタリング Web サービスからイベントを受信するには、ターミナルで以下のように実行します。
USER>set $namespace = "%sys"
%SYS>set client=##class(SYS.WSMon.Client).%New()
%SYS>set eventsinklocation="http://localhost:52773/csp/sys/SYS.WSMon.EventSink.cls"
%SYS>set subscriptionid=client.EventSubscribe(eventsinklocation)
%SYS>write subscriptionid
CacheEventSubscription_2
eventsinklocation は、イベントを処理するイベント・シンク Web サービスのURL です。
独自のイベント・シンク・Web サービスの作成
独自のイベント・シンク Web サービスを作成するには、スタジオで SOAP ウィザードを使用して、以下の WSDL から Web サービスを生成します。
http://server:port/csp/sys/SYS.WSMon.EventSink.cls?WSDL=1
server は、InterSystems IRIS が実行されているサーバです。また、port は、InterSystems IRIS Web サービス・サーバが使用するポートです。
このウィザードの使用法の詳細は、"Web サービスおよび Web クライアントの作成" を参照してください。
続いて、生成された Web サービスの CacheEventSink() メソッドを変更して、カスタム・ロジックを組み込みます。