Recon API
The Recon API v1 is a set of HTTP endpoints that help you understand the current state of an Ozone cluster and to troubleshoot if needed.
HTTP Endpoints
Containers
/containers
URL Structure
GET /api/v1/containers
Parameters
prevKey (optional)
Only returns the containers with ID greater than the given prevKey. Example: prevKey=1
limit (optional)
Only returns the limited number of results. The default limit is 1000.
Returns
Returns all the ContainerMetadata objects.
{
"data": {
"totalCount": 3,
"containers": [
{
"ContainerID": 1,
"NumberOfKeys": 834
},
{
"ContainerID": 2,
"NumberOfKeys": 833
},
{
"ContainerID": 3,
"NumberOfKeys": 833
}
]
}
}
/containers/:id/keys
URL Structure
GET /api/v1/containers/:id/keys
Parameters
prevKey (optional)
Only returns the keys that are present after the given prevKey key prefix. Example: prevKey=/vol1/bucket1/key1
limit (optional)
Only returns the limited number of results. The default limit is 1000.
Returns
Returns all the KeyMetadata objects for the given ContainerID.
{
"totalCount":7,
"keys": [
{
"Volume":"vol-1-73141",
"Bucket":"bucket-3-35816",
"Key":"key-0-43637",
"DataSize":1000,
"Versions":[0],
"Blocks": {
"0": [
{
"containerID":1,
"localID":105232659753992201
}
]
},
"CreationTime":"2020-11-18T18:09:17.722Z",
"ModificationTime":"2020-11-18T18:09:30.405Z"
},
...
]
}
/containers/missing
URL Structure
GET /api/v1/containers/missing
Parameters
No parameters.
Returns
Returns the MissingContainerMetadata objects for all the missing containers.
{
"totalCount": 26,
"containers": [{
"containerID": 1,
"missingSince": 1605731029145,
"keys": 7,
"pipelineID": "88646d32-a1aa-4e1a",
"replicas": [{
"containerId": 1,
"datanodeHost": "localhost-1",
"firstReportTimestamp": 1605724047057,
"lastReportTimestamp": 1605731201301
},
...
]
},
...
]
}
/containers/:id/replicaHistory
URL Structure
GET /api/v1/containers/:id/replicaHistory
Parameters
No parameters.
Returns
Returns all the ContainerHistory objects for the given ContainerID.
[
{
"containerId": 1,
"datanodeHost": "localhost-1",
"firstReportTimestamp": 1605724047057,
"lastReportTimestamp": 1605730421294
},
...
]
/containers/unhealthy
URL Structure
GET /api/v1/containers/unhealthy
Parameters
batchNum (optional)
The batch number (like “page number”) of results to return. Passing 1, will return records 1 to limit. 2 will return limit + 1 to 2 * limit, etc.
limit (optional)
Only returns the limited number of results. The default limit is 1000.
Returns
Returns the UnhealthyContainerMetadata objects for all the unhealthy containers.
{
"missingCount": 2,
"underReplicatedCount": 0,
"overReplicatedCount": 0,
"misReplicatedCount": 0,
"containers": [{
"containerID": 1,
"containerState": "MISSING",
"unhealthySince": 1605731029145,
"expectedReplicaCount": 3,
"actualReplicaCount": 0,
"replicaDeltaCount": 3,
"reason": null,
"keys": 7,
"pipelineID": "88646d32-a1aa-4e1a",
"replicas": [{
"containerId": 1,
"datanodeHost": "localhost-1",
"firstReportTimestamp": 1605722960125,
"lastReportTimestamp": 1605731230509
},
...
]
},
...
]
}
/containers/unhealthy/:state
URL Structure
GET /api/v1/containers/unhealthy/:state
Parameters
batchNum (optional)
The batch number (like “page number”) of results to return. Passing 1, will return records 1 to limit. 2 will return limit + 1 to 2 * limit, etc.
limit (optional)
Only returns the limited number of results. The default limit is 1000.
Returns
Returns the UnhealthyContainerMetadata objects for the containers in the given state. Possible unhealthy container states are
MISSING
,MIS_REPLICATED
,UNDER_REPLICATED
,OVER_REPLICATED
. The response structure is same as/containers/unhealthy
.
ClusterState
/clusterState
URL Structure
GET /api/v1/clusterState
Parameters
No parameters.
Returns
Returns a summary of the current state of the Ozone cluster.
{
"pipelines": 5,
"totalDatanodes": 4,
"healthyDatanodes": 4,
"storageReport": {
"capacity": 1081719668736,
"used": 1309212672,
"remaining": 597361258496
},
"containers": 26,
"volumes": 6,
"buckets": 26,
"keys": 25
}
Datanodes
/datanodes
URL Structure
GET /api/v1/datanodes
Parameters
No parameters.
Returns
Returns all the datanodes in the cluster.
{
"totalCount": 4,
"datanodes": [{
"uuid": "f8f8cb45-3ab2-4123",
"hostname": "localhost-1",
"state": "HEALTHY",
"lastHeartbeat": 1605738400544,
"storageReport": {
"capacity": 270429917184,
"used": 358805504,
"remaining": 119648149504
},
"pipelines": [{
"pipelineID": "b9415b20-b9bd-4225",
"replicationType": "RATIS",
"replicationFactor": 3,
"leaderNode": "localhost-2"
}, {
"pipelineID": "3bf4a9e9-69cc-4d20",
"replicationType": "RATIS",
"replicationFactor": 1,
"leaderNode": "localhost-1"
}],
"containers": 17,
"leaderCount": 1
},
...
]
}
Pipelines
/pipelines
URL Structure
GET /api/v1/pipelines
Parameters
No parameters.
Returns
Returns all the pipelines in the cluster.
{
"totalCount": 5,
"pipelines": [{
"pipelineId": "b9415b20-b9bd-4225",
"status": "OPEN",
"leaderNode": "localhost-1",
"datanodes": ["localhost-1", "localhost-2", "localhost-3"],
"lastLeaderElection": 0,
"duration": 23166128,
"leaderElections": 0,
"replicationType": "RATIS",
"replicationFactor": 3,
"containers": 0
},
...
]
}
Tasks
/task/status
URL Structure
GET /api/v1/task/status
Parameters
No parameters.
Returns
Returns the status of all the Recon tasks.
[
{
"taskName": "OmDeltaRequest",
"lastUpdatedTimestamp": 1605724099147,
"lastUpdatedSeqNumber": 186
},
...
]
Utilization
/utilization/fileCount
URL Structure
GET /api/v1/utilization/fileCount
Parameters
volume (optional)
Filters the results based on the given volume name.
bucket (optional)
Filters the results based on the given bucket name.
fileSize (optional)
Filters the results based on the given fileSize.
Returns
Returns the file counts within different file ranges with
fileSize
in the response object being the upper cap for file size range.[{
"volume": "vol-2-04168",
"bucket": "bucket-0-11685",
"fileSize": 1024,
"count": 1
}, {
"volume": "vol-2-04168",
"bucket": "bucket-1-41795",
"fileSize": 1024,
"count": 1
}, {
"volume": "vol-2-04168",
"bucket": "bucket-2-93377",
"fileSize": 1024,
"count": 1
}, {
"volume": "vol-2-04168",
"bucket": "bucket-3-50336",
"fileSize": 1024,
"count": 2
}]
Metrics
/metrics/:api
URL Structure
GET /api/v1/metrics/:api
Parameters
Refer to Prometheus HTTP API Reference for complete documentation on querying.
Returns
This is a proxy endpoint for Prometheus and returns the same response as the prometheus endpoint. Example: /api/v1/metrics/query?query=ratis_leader_election_electionCount
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"__name__": "ratis_leader_election_electionCount",
"exported_instance": "33a5ac1d-8c65-4c74-a0b8-9314dfcccb42",
"group": "group-03CA9397D54B",
"instance": "ozone_datanode_1:9882",
"job": "ozone"
},
"value": [
1599159384.455,
"5"
]
}
]
}
}