Skip to main content
A newer release of this product is available.

Cluster MetroCluster diagnostics endpoint overview

Contributors

Overview

You can use this API to initiate a MetroCluster diagnostics operation and fetch the results of a completed diagnostics operation on a MetroCluster over IP configuration. The GET operation retrieves the results of a completed diagnostics operation for the MetroCluster over IP configuration. These can include the overall high level and details for the checks done for different components. By default, the response does not include the details. If the fields query is used in the request, the response will include the details. The POST request can be used to start a MetroCluster diagnostics operation or set up a schedule for the diagnostics to be run periodically.

Details

Details provide a way to view all the checks done on a component and the result of each check. The details of the checks are not included in the response by default. In order to fetch the details, use the fields query parameter.

  • node.details

  • aggregate.details

  • cluster.details

Starting a MetroCluster diagnostics operation

A new MetroCluster diagnostics operation can be started by issuing a POST to /cluster/metrocluster/diagnostics. There are no extra parameters required to initiate a diagnostics operation.

Polling the POST job for status of diagnostics operation

After a successful POST /cluster/diagnostics operation is issued, an HTTP status code of 202 (Accepted) is returned along with a job UUID and a link in the body of the response. The POST job continues asynchronously and can be monitored by using the job UUID and the /cluster/jobs API. The "message" field in the response of the GET /cluster/jobs/{uuid} request shows the current step in the job, and the "state" field shows the overall state of the job.


Examples

Running the diagnostics operation

This example shows the POST request for starting a diagnostic operation for a MetroCluster over IP configuration and the responses returned:

#API
/api/cluster/metrocluster/diagnostics

POST Request

curl -X POST https://<mgmt-ip>/api/cluster/metrocluster/diagnostics

POST Response

HTTP/1.1 202 Accepted
Date: Tue, 22 Sep 2020 17:20:53 GMT
Server: libzapid-httpd
X-Content-Type-Options: nosniff
Cache-Control: no-cache,no-store,must-revalidate
Location: /api/cluster/metrocluster/diagnostics
Content-Length: 189
Content-Type: application/hal+json
{
"job": {
  "uuid": "f7d3804c-fcf7-11ea-acaf-005056bb47c1",
  "_links": {
    "self": {
      "href": "/api/cluster/jobs/f7d3804c-fcf7-11ea-acaf-005056bb47c1"
    }
  }
}
}

Monitoring the job progress

Use the link provided in the response to the POST request to fetch information for the diagnostics operation job.

Request

curl -X GET https://<mgmt-ip>/api/cluster/jobs/f7d3804c-fcf7-11ea-acaf-005056bb47c1

Job status response

HTTP/1.1 202 Accepted
Date: Tue, 22 Sep 2020 17:21:12 GMT
Server: libzapid-httpd
X-Content-Type-Options: nosniff
Cache-Control: no-cache,no-store,must-revalidate
Content-Length: 345
Content-Type: application/hal+json
{
"uuid": "f7d3804c-fcf7-11ea-acaf-005056bb47c1",
"description": "POST /api/cluster/metrocluster/diagnostics",
"state": "running",
"message": "Checking nodes...",
"code": 2432853,
"start_time": "2020-09-22T13:20:53-04:00",
"_links": {
  "self": {
    "href": "/api/cluster/jobs/f7d3804c-fcf7-11ea-acaf-005056bb47c1"
  }
}
}

Final status of the diagnostics job

HTTP/1.1 202 Accepted
Date: Tue, 22 Sep 2020 17:29:04 GMT
Server: libzapid-httpd
X-Content-Type-Options: nosniff
Cache-Control: no-cache,no-store,must-revalidate
Content-Length: 372
Content-Type: application/hal+json
{
"uuid": "f7d3804c-fcf7-11ea-acaf-005056bb47c1",
"description": "POST /api/cluster/metrocluster/diagnostics",
"state": "success",
"message": "success",
"code": 0,
"start_time": "2020-09-22T13:20:53-04:00",
"end_time": "2020-09-22T13:22:04-04:00",
"_links": {
  "self": {
    "href": "/api/cluster/jobs/f7d3804c-fcf7-11ea-acaf-005056bb47c1"
  }
}
}

Retrieving the diagnostics operation

Request

curl -X GET https://<mgmt-ip>/api/cluster/metrocluster/diagnostics

Response

HTTP/1.1 202 Accepted
Date: Tue, 22 Sep 2020 18:04:28 GMT
Server: libzapid-httpd
X-Content-Type-Options: nosniff
Cache-Control: no-cache,no-store,must-revalidate
Content-Length: 1005
Content-Type: application/hal+json
{
"node": {
  "timestamp": "2020-09-22T13:47:01-04:00",
  "state": "ok",
  "summary": {
    "message": ""
  }
},
"interface": {
  "timestamp": "2020-09-22T13:47:01-04:00",
  "state": "ok",
  "summary": {
    "message": ""
  }
},
"aggregate": {
  "timestamp": "2020-09-22T13:47:01-04:00",
  "state": "ok",
  "summary": {
    "message": ""
  }
},
"cluster": {
  "timestamp": "2020-09-22T13:47:01-04:00",
  "state": "ok",
  "summary": {
    "message": ""
  }
},
"connection": {
  "timestamp": "2020-09-22T13:47:01-04:00",
  "state": "ok",
  "summary": {
    "message": ""
  }
},
"volume": {
  "timestamp": "2020-09-22T13:47:01-04:00",
  "state": "ok",
  "summary": {
    "message": ""
  }
},
"config_replication": {
  "timestamp": "2020-09-22T13:47:01-04:00",
  "state": "ok",
  "summary": {
    "message": ""
  }
},
"_links": {
  "self": {
    "href": "/api/cluster/metrocluster/diagnostics"
  }
}
}

Retrieving check details for the node component

Request

curl -X GET https://<mgmt-ip>/api/cluster/metrocluster/diagnostics?fields=node.details

Response

HTTP/1.1 200 OK
Date: Thu, 10 Feb 2022 00:05:12 GMT
Server: libzapid-httpd
X-Content-Type-Options: nosniff
Cache-Control: no-cache,no-store,must-revalidate
Content-Length: 4506
Content-Type: application/hal+json
{
"node": {
  "details": [
    {
      "node": {
        "uuid": "11111111-1111-1111-1111-111111111111",
        "name": "node1",
        "_links": {
          "self": {
            "href": "/api/cluster/nodes/11111111-1111-1111-1111-111111111111"
          }
        }
      },
      "cluster": {
        "uuid": "12121212-1212-1212-1212-121212121212",
        "name": "clusterA",
        "_links": {
          "self": {
            "href": "/api/cluster/12121212-1212-1212-1212-121212121212"
          }
        }
      },
      "timestamp": "2022-02-09T18:47:00-05:00",
      "checks": [
        {
          "name": "node_reachable",
          "result": "ok"
        },
        {
          "name": "metrocluster_ready",
          "result": "ok"
        },
        {
          "name": "local_ha_partner",
          "result": "ok"
        },
        {
          "name": "ha_mirroring_on",
          "result": "ok"
        },
        {
          "name": "ha_mirroring_op_state",
          "result": "ok"
        },
        {
          "name": "symmetric_ha_relationship",
          "result": "ok"
        },
        {
          "name": "remote_dr_partner",
          "result": "ok"
        },
        {
          "name": "dr_mirroring_on",
          "result": "ok"
        },
        {
          "name": "dr_mirroring_op_state",
          "result": "ok"
        },
        {
          "name": "symmetric_dr_relationship",
          "result": "ok"
        },
        {
          "name": "remote_dr_auxiliary_partner",
          "result": "ok"
        },
        {
          "name": "symmetric_dr_auxiliary_relationship",
          "result": "ok"
        },
        {
          "name": "storage_failover_enabled",
          "result": "ok"
        },
        {
          "name": "has_intercluster_lif",
          "result": "ok"
        },
        {
          "name": "node_object_limit",
          "result": "ok"
        },
        {
          "name": "automatic_uso",
          "result": "ok"
        }
      ]
    },
    {
      "node": {
        "uuid": "22222222-2222-2222-2222-222222222222",
        "name": "node2",
        "_links": {
          "self": {
            "href": "/api/cluster/nodes/22222222-2222-2222-2222-222222222222"
          }
        }
      },
      "cluster": {
        "uuid": "23232323-2323-2323-2323-232323232323",
        "name": "clusterB",
        "_links": {
          "self": {
            "href": "/api/cluster/23232323-2323-2323-2323-232323232323"
          }
        }
      },
      "timestamp": "2022-02-09T18:47:00-05:00",
      "checks": [
        {
          "name": "node_reachable",
          "result": "ok"
        },
        {
          "name": "metrocluster_ready",
          "result": "ok"
        },
        {
          "name": "local_ha_partner",
          "result": "ok"
        },
        {
          "name": "ha_mirroring_on",
          "result": "ok"
        },
        {
          "name": "ha_mirroring_op_state",
          "result": "ok"
        },
        {
          "name": "symmetric_ha_relationship",
          "result": "ok"
        },
        {
          "name": "remote_dr_partner",
          "result": "ok"
        },
        {
          "name": "dr_mirroring_on",
          "result": "ok"
        },
        {
          "name": "dr_mirroring_op_state",
          "result": "ok"
        },
        {
          "name": "symmetric_dr_relationship",
          "result": "ok"
        },
        {
          "name": "remote_dr_auxiliary_partner",
          "result": "ok"
        },
        {
          "name": "symmetric_dr_auxiliary_relationship",
          "result": "ok"
        },
        {
          "name": "storage_failover_enabled",
          "result": "ok"
        },
        {
          "name": "has_intercluster_lif",
          "result": "ok"
        },
        {
          "name": "node_object_limit",
          "result": "ok"
        },
        {
          "name": "automatic_uso",
          "result": "ok"
        }
      ]
    }
  ]
},
"_links": {
  "self": {
    "href": "/api/cluster/metrocluster/diagnostics"
  }
}
}
  • metrocluster check run

  • metrocluster check show

  • metrocluster check node show

  • metrocluster check aggregate show

  • metrocluster check cluster show