New PowerHA Modern Web Interface
We recently announced a modern web interface for PowerHA on IBM i 7.4 and 7.5. This new modern web interface will provide at-a-glance health information from a web browser. Additional information on this new interface will be available in December. We recommend utilizing the new web interface built into PowerHA instead of Fortra’s Insite and Insite Analytics. The instructions below will remain for existing installations and those looking for examples of utilizing PowerHA SQL services in other monitoring products.
Planned availability: December 16th, 2022
PowerHA by design requires minimal ongoing monitoring, management, and maintenance. With PowerHA dashboards, ongoing monitoring is simplified even more. Dashboards enable administrators to see any errors or warnings that may affect their business continuity. These dashboards can be configured to show PowerHA information alongside information from other products and can be configured to show multiple PowerHA environments on one screen.
Before You Begin
The dashboards are delivered as part of Fortra’s Insite and Insite Analytics - a free offering from Fortra. Insite and Insite Analytics must be installed prior to following the steps below. For more information on Insite see the following information:
These dashboards require the following PowerHA versions: 7.4 HA 4.3.1 7.2 HA 3.5
Procedure
Open Insite Analytics
Log in to the Insite Server
Open the Insite Analytics Product
Creating Data Connections
Data connections define the link between the SQL queries, the different systems and databases across the network where the data is stored. Follow the steps in this section to create data connections between Insite Analytics and the PowerHA cluster nodes.
Tip: You must add a Data Connection for at least one node in each PowerHA cluster. Data connections are not necessary for every node in a PowerHA cluster. Insite Analytics displays data as it is transmitted by the nodes with a data connection.
Add a data connection for at least one node in each cluster that will be on a dashboard
Queries
The Query Builder enables the creation of SQL queries, which are used to select the information to be displayed in Insite Dashboards. Follow the procedure in this section to create SQL queries with Query Builder:
In the Insite Analytics menu select
Queries
Add the basic PowerHA Queries
Add the Cluster Nodes Query with the following information:
Query Name | PowerHA Cluster Nodes |
---|---|
Description | A list of all cluster nodes along with their status information |
SQL | SELECT NODE,NODE_STATUS FROM QHASM.CLUSTER_NODES |
For instructions to add queries to Insite Analytics, expand this section.
2. Add the Administrative Domains Query with the following information:
Query Name | PowerHA Administrative Domains |
---|---|
Description | A list of administrative domains with their status information |
SQL | SELECT ADMINISTRATIVE_DOMAIN,DOMAIN_STATUS FROM QHASM.ADMIN_DOMAIN_LIST |
3. Add the Monitored Resources Query with the following information:
Query Name | PowerHA Monitored Resources Requiring Attention |
---|---|
Description | A list of monitored resources that are either failed or inconsistent along with additional node level information |
SQL | SELECT DETAILS.MONITORED_RESOURCE,DETAILS.RESOURCE_TYPE,DETAILS.LIBRARY,DETAILS.GLOBAL_STATUS,DETAILS.NODE,DETAILS.LOCAL_STATUS,DETAILS.MESSAGE_ID,DETAILS.MESSAGE_TEXT FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST()) LIST, TABLE(QHASM.ADMIN_DOMAIN_MRE_DETAILS(MONITORED_RESOURCE => LIST.MONITORED_RESOURCE, RESOURCE_TYPE => LIST.RESOURCE_TYPE, LIBRARY => LIST.LIBRARY)) DETAILS WHERE (LIST.GLOBAL_STATUS = '*INCONSISTENT' OR LIST.GLOBAL_STATUS = '*FAILED') AND DETAILS.LOCAL_STATUS != 'CURRENT' |
Note: Since the Monitored Resources Requiring Attention query only returns monitored resources that require attention, it is likely that when previewing this query, no data will be returned.
4. Add the Unmonitored Resources Query with the following information:
Query Name | PowerHA Unmonitored Resources |
---|---|
Description | A list of resources not currently monitored by the administrative domain that could be monitored by the administrative domain |
SQL | SELECT JOBD.OBJNAME AS "Unmonitored Resource", '*JOBD' as "Resource Type", JOBD.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALL','*JOBD','*ALLSIMPLE')) JOBD WHERE JOBD.OBJLONGSCHEMA != 'QSYS' AND JOBD.OBJLONGSCHEMA != 'QINSYS' AND JOBD.OBJLONGSCHEMA != 'QINPRIOR' AND JOBD.OBJLONGSCHEMA != 'QINMEDIA' AND NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*JOBD')) MRE WHERE MRE.MONITORED_RESOURCE = JOBD.OBJNAME) UNION SELECT SBSD.OBJNAME AS "Unmonitored Resource", '*SBSD' as "Resource Type", SBSD.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALL','*SBSD','*ALLSIMPLE')) SBSD WHERE SBSD.OBJLONGSCHEMA != 'QSYS' AND SBSD.OBJLONGSCHEMA != 'QINSYS' AND SBSD.OBJLONGSCHEMA != 'QINPRIOR' AND SBSD.OBJLONGSCHEMA != 'QINMEDIA' AND NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*SBSD')) MRE WHERE MRE.MONITORED_RESOURCE = SBSD.OBJNAME) UNION SELECT USRPRF.OBJNAME AS "Unmonitored Resource", '*USRPRF' as "Resource Type", USRPRF.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('QSYS','*USRPRF','*ALLSIMPLE')) USRPRF WHERE NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*USRPRF')) MRE WHERE MRE.MONITORED_RESOURCE = USRPRF.OBJNAME) UNION SELECT AUTL.OBJNAME AS "Unmonitored Resource", '*AUTL' as "Resource Type", AUTL.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('QSYS','*AUTL','*ALLSIMPLE')) AUTL WHERE NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*AUTL')) MRE WHERE MRE.MONITORED_RESOURCE = AUTL.OBJNAME) UNION SELECT CLS.OBJNAME AS "Unmonitored Resource", '*CLS' as "Resource Type", CLS.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALL','*CLS','*ALLSIMPLE')) CLS WHERE CLS.OBJLONGSCHEMA != 'QSYS' AND CLS.OBJLONGSCHEMA != 'QINSYS' AND CLS.OBJLONGSCHEMA != 'QINPRIOR' AND CLS.OBJLONGSCHEMA != 'QINMEDIA' AND NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*CLS')) MRE WHERE MRE.MONITORED_RESOURCE = CLS.OBJNAME) |
5. Add the Cluster Resource Groups Query with the following information:
Query Name | PowerHA Cluster Resource Groups |
---|---|
Description | A list of cluster resource groups along with their status |
SQL | SELECT CLUSTER_RESOURCE_GROUP,CRG_TYPE,CRG_STATUS,PRIMARY_NODE FROM QHASM.CLUSTER_RESOURCE_GROUP_LIST |
6. Add the Recovery Domain Nodes Requiring Attention Query with the following information:
Query Name | PowerHA Recovery Domain Nodes Requiring Attention |
---|---|
Description | A list of nodes in CRG recovery domains that are inactive or ineligible |
SQL | SELECT RCYDMN.CLUSTER_RESOURCE_GROUP, RCYDMN.NODE, RCYDMN.NODE_STATUS, RCYDMN.SITE_NAME FROM QHASM.CLUSTER_RESOURCE_GROUP_LIST LIST, TABLE(QHASM.CRG_RECOVERY_DOMAIN(LIST.CLUSTER_RESOURCE_GROUP)) RCYDMN WHERE NODE_STATUS != 'ACTIVE' |
Note: Since the Recovery Domain Nodes Requiring Attention query only returns nodes that are not eligible for a switchover, it is likely that when previewing this query, no data will be returned.
7. Add the Session Info Query with the following information:
Query Name | PowerHA Session Information |
---|---|
Description | A list of sessions along with current replication status |
SQL | SELECT SESSION_INFO.SESSION_NAME,SESSION_INFO.SESSION_TYPE,SESSION_INFO.ASP_DEVICE,SESSION_INFO.SOURCE_NODE,SESSION_INFO.SOURCE_ASP_STATE,SESSION_INFO.COPY_STATUS,SESSION_INFO.TARGET_NODE,SESSION_INFO.TARGET_ASP_STATE FROM QHASM.SESSION_LIST SESSION_LIST, TABLE(QHASM.SESSION_INFO(SESSION => SESSION_LIST.SESSION_NAME)) SESSION_INFO |
Add the PowerHA Queries with Drilldown Query
1. Add the Count Cluster Nodes Requiring Attention Query:
Query Name | PowerHA Count Cluster Nodes Requiring Attention |
---|---|
Description | A count of cluster nodes that are not active |
SQL | SELECT COUNT(*) AS COUNT FROM QHASM.CLUSTER_NODES WHERE NODE_STATUS != 'ACTIVE' |
Drilldown Query | PowerHA Cluster Nodes |
For instructions to add drilldown queries to Insite Analytics, expand this section.
2. Add the Count of Admin Domains Requiring Attention Query:
Query Name | PowerHA Count of Admin Domains Requiring Attention |
---|---|
Description | A count of administrative domains that are not active |
SQL | SELECT COUNT(*) AS COUNT FROM QHASM.ADMIN_DOMAIN_LIST WHERE DOMAIN_STATUS != 'ACTIVE' |
Drilldown Query | PowerHA Administrative Domains |
3. Add the Count of Monitored Resources Requiring Attention Query:
Query Name | PowerHA Count of Monitored Resources Requiring Attention |
---|---|
Description | A count of monitored resources requiring attention |
SQL | SELECT COUNT(*) AS COUNT FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST()) LIST WHERE LIST.GLOBAL_STATUS = '*INCONSISTENT' OR LIST.GLOBAL_STATUS = '*FAILED' |
Drilldown Query | PowerHA Monitored Resources Requiring Attention |
4. Add the Count of Unmonitored Resources Query:
Query Name | PowerHA Count of Unmonitored Resources |
---|---|
Description | A count of resources not currently monitored by the administrative domain that could be monitored by the administrative domain |
SQL | SELECT COUNT(*) AS COUNT FROM (SELECT JOBD.OBJNAME AS "Unmonitored Resource", '*JOBD' as "Resource Type", JOBD.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALL','*JOBD','*ALLSIMPLE')) JOBD WHERE JOBD.OBJLONGSCHEMA != 'QSYS' AND JOBD.OBJLONGSCHEMA != 'QINSYS' AND JOBD.OBJLONGSCHEMA != 'QINPRIOR' AND JOBD.OBJLONGSCHEMA != 'QINMEDIA' AND NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*JOBD')) MRE WHERE MRE.MONITORED_RESOURCE = JOBD.OBJNAME) UNION SELECT SBSD.OBJNAME AS "Unmonitored Resource", '*SBSD' as "Resource Type", SBSD.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALL','*SBSD','*ALLSIMPLE')) SBSD WHERE SBSD.OBJLONGSCHEMA != 'QSYS' AND SBSD.OBJLONGSCHEMA != 'QINSYS' AND SBSD.OBJLONGSCHEMA != 'QINPRIOR' AND SBSD.OBJLONGSCHEMA != 'QINMEDIA' AND NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*SBSD')) MRE WHERE MRE.MONITORED_RESOURCE = SBSD.OBJNAME) UNION SELECT USRPRF.OBJNAME AS "Unmonitored Resource", '*USRPRF' as "Resource Type", USRPRF.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('QSYS','*USRPRF','*ALLSIMPLE')) USRPRF WHERE NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*USRPRF')) MRE WHERE MRE.MONITORED_RESOURCE = USRPRF.OBJNAME) UNION SELECT AUTL.OBJNAME AS "Unmonitored Resource", '*AUTL' as "Resource Type", AUTL.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('QSYS','*AUTL','*ALLSIMPLE')) AUTL WHERE NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*AUTL')) MRE WHERE MRE.MONITORED_RESOURCE = AUTL.OBJNAME) UNION SELECT CLS.OBJNAME AS "Unmonitored Resource", '*CLS' as "Resource Type", CLS.OBJLONGSCHEMA as "Resource Library" FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALL','*CLS','*ALLSIMPLE')) CLS WHERE CLS.OBJLONGSCHEMA != 'QSYS' AND CLS.OBJLONGSCHEMA != 'QINSYS' AND CLS.OBJLONGSCHEMA != 'QINPRIOR' AND CLS.OBJLONGSCHEMA != 'QINMEDIA' AND NOT EXISTS ( SELECT MONITORED_RESOURCE FROM TABLE(QHASM.ADMIN_DOMAIN_MRE_LIST(RESOURCE_TYPE => '*CLS')) MRE WHERE MRE.MONITORED_RESOURCE = CLS.OBJNAME)) |
Drilldown Query | PowerHA Unmonitored Resources |
5. Add the Count of Cluster Resource Groups Requiring Attention Query:
Query Name | PowerHA Count of Cluster Resource Groups Requiring Attention |
---|---|
Description | A count of cluster resource groups that are not active |
SQL | SELECT COUNT(*) AS COUNT FROM QHASM.CLUSTER_RESOURCE_GROUP_LIST WHERE CRG_STATUS != 'ACTIVE' |
Drilldown Query | PowerHA Cluster Resource Groups |
6. Add the Count of Recovery Domain Nodes Requiring Attention Query:
Query Name | PowerHA Count of Recovery Domain Nodes Requiring Attention |
---|---|
Description | A count of cluster resource groups that are not active |
SQL | SELECT COUNT(*) AS COUNT FROM QHASM.CLUSTER_RESOURCE_GROUP_LIST LIST, TABLE(QHASM.CRG_RECOVERY_DOMAIN(LIST.CLUSTER_RESOURCE_GROUP)) RCYDMN WHERE NODE_STATUS != 'ACTIVE' |
Drilldown Query | PowerHA Recovery Domain Nodes Requiring Attention |
7. Add the Count of Sessions Requiring Attention Query:
Query Name | PowerHA Count of Sessions Requiring Attention |
---|---|
Description | A count of sessions where the copy status is not active |
SQL | SELECT COUNT(*) AS COUNT FROM QHASM.SESSION_LIST SESSION_LIST, TABLE(QHASM.SESSION_INFO(SESSION => SESSION_LIST.SESSION_NAME)) SESSION_INFO WHERE SESSION_INFO.COPY_STATUS != 'ACTIVE' |
Drilldown Query | PowerHA Session Information |
PowerHA Status Dashboard
This section describes how to create a Insite Dashboard and add various widgets to show the status of PowerHA, highlighting issues that require attention. The example dashboard defined here includes all the queries you have defined. You can choose which of these to include and adjust the layout to suit your preferences.
Create an Insite Dashboard
2. Add PowerHA Dashboard Widgets
For instructions to add PowerHA widgets to Insite Analytics, expand this section.
Other Suggestions
The dashboard described in this document is just one example of a PowerHA dashboard. Some suggestions for use include:
If you have multiple clusters to monitor, a single dashboard can be created with a group for each cluster or a separate dashboard can be created for each cluster.
If you have PowerHA and Robot HA, a single dashboard can be created that shows both the status of PowerHA and the status of Robot HA.
You can create queries to other data sources and combine PowerHA data with data from other applications.