第六十八章 使用 Web 服务监控 IRIS - 监控网络客户端
SYS.WSMon.Client
类和相关类是一个 IRIS
网络服务客户端,可以在同一个 IRIS
实例或另一个 IRIS
实例中调用 SYS.WSMon.Server
网络服务的方法。
此 Web 客户端类使用以下 LOCATION
参数:
Parameter LOCATION = "http://server:port/csp/sys/SYS.WSMon.Service.cls"
其中,服务器是运行 IRIS
的服务器,端口是 IRIS Web
服务服务器使用的端口。
以与使用其他 IRIS
网络服务客户端相同的方式使用此网络客户端:
- 创建
Web
客户端类的实例。 - 如果需要,设置其
Location
属性。
如果要使用的 SYS.WSMon.Server Web
服务与客户端位于不同的计算机上,或者如果它使用 52773
以外的端口,则这是必需的。
- 如果需要,设置其他属性。
- 调用网络方法。
- 检查
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>
更典型的是,以编程方式创建和使用客户端,可能是为了检索数据以显示在用户界面中。
注意:请记住,SYS.WSMon
包仅在 %SYS
命名空间中可用,这意味着必须在该命名空间中才能执行此处描述的步骤。
处理事件
IRIS 提供了一个示例 Web
服务(SYS.WSMon.EventSink
),可以接收和处理任何日志监控 Web
服务发送的事件。可以使用此 Web
服务或创建和使用自己的 Web
服务。
使用示例事件接收器 Web
服务
SYS.WSMon.EventSink
是一个示例 IRIS Web
服务,可以接收和处理事件。
对于给定的 IRIS 实例,日志监控 Web
服务可从以下 URL
获得:
http://server:port/csp/sys/SYS.WSMon.EventSink.cls
其中,服务器是运行 IRIS
的服务器,端口是 IRIS Web
服务服务器使用的端口。
此 Web
服务有一种方法:
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
服务,请使用 Studio
中的 SOAP
向导从以下 WSDL
生成 Web
服务:
http://server:port/csp/sys/SYS.WSMon.EventSink.cls?WSDL=1
其中,服务器是运行 IRIS
的服务器,端口是 IRIS Web
服务服务器使用的端口。
然后修改生成的 Web
服务中的 CacheEventSink()
方法以包含自定义逻辑。