Cluster MetroCluster diagnostics endpoint overview
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" } } }
Related ONTAP Commands
-
metrocluster check run
-
metrocluster check show
-
metrocluster check node show
-
metrocluster check aggregate show
-
metrocluster check cluster show