Question
Mark Charlton · Jan 20

Monitoring Mirror Health

I've been trying for a while to come up with a set of tools to monitor the health of a mirror set and email a report nightly on the status of the mirror, or flag issues in real time.
Making sure that all the databases are caught up, that all the mirror members are online. 

I've tried a number of methods I've found to try to access the state of the mirror and mostly found they're internal or unsupported routes, (that when questioning WRC have swiftly been removed from the online documentation...). The best I've found is %SYSTEM.Mirror, but that just lists the state of the entire mirror set and doesn't appear to be at the database level. 

At the moment I have a custom routine in ZMIRROR that emails me when the failover mirror becomes primary, so I know that a mirror switch has taken place. That only works if the entire server fails over, and doesn't give me any insight into the status of the DR mirror. 

Ideally I'd like the current primary to list the status of the other nodes and then email a status, or if it loses connectivity to a DR node or a reporting node it flags it with some actions, (email, REST call, etc). I can call GetStatus on a given node, but if that node it down then it won't run and I don't know how to call it to check the status of a remote node. 

The methods in SYS.Mirror all seem to be related to working with mirrors from the perspective of the mirror I'm on. 
##class(SYS.Mirror).AsyncDejournalStatus() for example seems to only work on the async mirror and not on the primary. 

What tools / methods do other people use to monitor their mirror health from within Iris/cache? 

Product version: IRIS 2022.1
$ZV: 2022.1.0.209.0
1
0 108
Discussion (2)1
Log in or sign up to continue

d ^MIRROR on the primary shows the data of the target mirrors so the data is available.

The documentation topic is here.

%SYSTEM.Mirror can give you information but only about the instance you run it on.

w $SYSTEM.Mirror.GetMemberStatus()
        Primary

Hi 

I know those are available, but I need to be able to access the data within those routines within objectscript.  I want to be able to pull out the current status of each member of a mirror set from one member of that mirror set. From those docs, this is the data I want access to, but in a way I can access, check and report upon via scheduled scripts/reports so that if a mirror member goes offline I can pick it up from the primary say and email out a notification.  If there is a way to do that with those utilities I can't see them from the documentation. 

Member Name+Type            Status     Journal Transfer  Dejournaling
--------------------------  ---------  ----------------  --------------
MIR25FEB_A
     Failover               Primary    N/A               N/A
MIR25FEB_B
     Failover               Backup     Active            Caught up
MIR25FEB_C
     Disaster Recovery      Connected  Caught up         Caught up
MIR25FEB_D
     Read-Only Reporting    Connected  Caught up         Caught up