在生产环境中IRIS通常以故障转移集群的形态被部署,而集群中各故障转移成员的镜像状态将决定该集群在故障发生时是否能够顺利切换保障业务不中断。因此,成员状态通常也是运维团队需要巡检或监控的目标。
尽管IRIS内部API提供了丰富的集群配置、成员状态等一系列接口,但除Portal上的镜像监视器外,并没有特定的接口便于外部系统访问(如进行企业级监控集成时),也没有整合好的监控接口可用,但在IRIS上开发一个REST接口暴露镜像状态数据并不困难,如下所示:
Include%syMirror
Class Monitor.MirrorMonitoring Extends %CSP.REST
{
/// Default the Content-Type for this application.
Parameter CONTENTTYPE = "application/json";
/// By default convert the input stream to Unicode
Parameter CONVERTINPUTSTREAM = 1;
/// The default response charset is utf-8
Parameter CHARSET = "utf-8";
ClassMethod GetMirrorStatus() As %Status
{
set tSC = $$$OK
//保存起始命名空间
Set nsName = ##Class(%SYSTEM.SYS).NameSpace()
set mirrorName=$lg(##class(%SYSTEM.Mirror).GetMirrorNames(),1)
if "" = mi