Recon API

Recon API v1 是一组 HTTP 端点,可以帮助您了解 Ozone 集群的当前状态,并在需要时进行故障排除。

HTTP 端点

容器

  • /containers

    URL 结构

    1. GET /api/v1/containers

    参数

    • prevKey (可选)

      只回传ID大于给定的 prevKey 的容器。 示例:prevKey=1

    • limit (可选)

      只回传有限数量的结果。默认限制是1000。

    回传

    回传所有 ContainerMetadata 对象。

    1. {
    2. "data": {
    3. "totalCount": 3,
    4. "containers": [
    5. {
    6. "ContainerID": 1,
    7. "NumberOfKeys": 834
    8. },
    9. {
    10. "ContainerID": 2,
    11. "NumberOfKeys": 833
    12. },
    13. {
    14. "ContainerID": 3,
    15. "NumberOfKeys": 833
    16. }
    17. ]
    18. }
    19. }
  • /containers/:id/keys

    URL 结构

    1. GET /api/v1/containers/:id/keys

    参数

    • prevKey (可选)

      只回传在给定的 prevKey 键前缀之后的键。 示例:prevKey=/vol1/bucket1/key1

    • limit (可选)

      只回传有限数量的结果。默认限制是1000。

    回传

    回传给定容器 ID 的所有 KeyMetadata 对象。

    1. {
    2. "totalCount":7,
    3. "keys": [
    4. {
    5. "Volume":"vol-1-73141",
    6. "Bucket":"bucket-3-35816",
    7. "Key":"key-0-43637",
    8. "DataSize":1000,
    9. "Versions":[0],
    10. "Blocks": {
    11. "0": [
    12. {
    13. "containerID":1,
    14. "localID":105232659753992201
    15. }
    16. ]
    17. },
    18. "CreationTime":"2020-11-18T18:09:17.722Z",
    19. "ModificationTime":"2020-11-18T18:09:30.405Z"
    20. },
    21. ...
    22. ]
    23. }
  • /containers/missing

    URL 结构

    1. GET /api/v1/containers/missing

    参数

    没有参数。

    回传

    回传所有丢失容器的 MissingContainerMetadata 对象。

    1. {
    2. "totalCount": 26,
    3. "containers": [{
    4. "containerID": 1,
    5. "missingSince": 1605731029145,
    6. "keys": 7,
    7. "pipelineID": "88646d32-a1aa-4e1a",
    8. "replicas": [{
    9. "containerId": 1,
    10. "datanodeHost": "localhost-1",
    11. "firstReportTimestamp": 1605724047057,
    12. "lastReportTimestamp": 1605731201301
    13. },
    14. ...
    15. ]
    16. },
    17. ...
    18. ]
    19. }
  • /containers/:id/replicaHistory

    URL 结构

    1. GET /api/v1/containers/:id/replicaHistory

    参数

    没有参数。

    回传

    回传给定容器 ID 的所有 ContainerHistory 对象。

    1. [
    2. {
    3. "containerId": 1,
    4. "datanodeHost": "localhost-1",
    5. "firstReportTimestamp": 1605724047057,
    6. "lastReportTimestamp": 1605730421294
    7. },
    8. ...
    9. ]
  • /containers/unhealthy

    URL 结构

    1. GET /api/v1/containers/unhealthy

    参数

    • batchNum (可选)

      回传结果的批号(如“页码”)。 传递1,将回传记录1到limit。传递2,将回传limit + 1到2 * limit,依此类推。

    • limit (可选)

      只回传有限数量的结果。默认限制是1000。

    回传

    回传所有不健康容器的 UnhealthyContainerMetadata 对象。

    1. {
    2. "missingCount": 2,
    3. "underReplicatedCount": 0,
    4. "overReplicatedCount": 0,
    5. "misReplicatedCount": 0,
    6. "containers": [{
    7. "containerID": 1,
    8. "containerState": "MISSING",
    9. "unhealthySince": 1605731029145,
    10. "expectedReplicaCount": 3,
    11. "actualReplicaCount": 0,
    12. "replicaDeltaCount": 3,
    13. "reason": null,
    14. "keys": 7,
    15. "pipelineID": "88646d32-a1aa-4e1a",
    16. "replicas": [{
    17. "containerId": 1,
    18. "datanodeHost": "localhost-1",
    19. "firstReportTimestamp": 1605722960125,
    20. "lastReportTimestamp": 1605731230509
    21. },
    22. ...
    23. ]
    24. },
    25. ...
    26. ]
    27. }
  • /containers/unhealthy/:state

    URL 结构

    1. GET /api/v1/containers/unhealthy/:state

    参数

    • batchNum (可选)

      回传结果的批号(如“页码”)。 传递1,将回传记录1到limit。传递2,将回传limit + 1到2 * limit,依此类推。

    • limit (可选)

      只回传有限数量的结果。默认限制是1000。

    回传

    回传处于给定状态的容器的 UnhealthyContainerMetadata 对象。 不健康的容器状态可能为MISSING, MIS_REPLICATED, UNDER_REPLICATED, OVER_REPLICATED。 响应结构与/containers/unhealthy相同。

集群状态

  • /clusterState

    URL 结构

    1. GET /api/v1/clusterState

    参数

    没有参数。

    回传

    返回 Ozone 集群当前状态的摘要。

    1. {
    2. "pipelines": 5,
    3. "totalDatanodes": 4,
    4. "healthyDatanodes": 4,
    5. "storageReport": {
    6. "capacity": 1081719668736,
    7. "used": 1309212672,
    8. "remaining": 597361258496
    9. },
    10. "containers": 26,
    11. "volumes": 6,
    12. "buckets": 26,
    13. "keys": 25
    14. }

数据节点

  • /datanodes

    URL 结构

    1. GET /api/v1/datanodes

    参数

    没有参数。

    回传

    回传集群中的所有数据节点。

    1. {
    2. "totalCount": 4,
    3. "datanodes": [{
    4. "uuid": "f8f8cb45-3ab2-4123",
    5. "hostname": "localhost-1",
    6. "state": "HEALTHY",
    7. "lastHeartbeat": 1605738400544,
    8. "storageReport": {
    9. "capacity": 270429917184,
    10. "used": 358805504,
    11. "remaining": 119648149504
    12. },
    13. "pipelines": [{
    14. "pipelineID": "b9415b20-b9bd-4225",
    15. "replicationType": "RATIS",
    16. "replicationFactor": 3,
    17. "leaderNode": "localhost-2"
    18. }, {
    19. "pipelineID": "3bf4a9e9-69cc-4d20",
    20. "replicationType": "RATIS",
    21. "replicationFactor": 1,
    22. "leaderNode": "localhost-1"
    23. }],
    24. "containers": 17,
    25. "leaderCount": 1
    26. },
    27. ...
    28. ]
    29. }

管道

  • /pipelines

    URL 结构

    1. GET /api/v1/pipelines

    参数

    没有参数

    回传

    回传在集群中的所有管道。

    1. {
    2. "totalCount": 5,
    3. "pipelines": [{
    4. "pipelineId": "b9415b20-b9bd-4225",
    5. "status": "OPEN",
    6. "leaderNode": "localhost-1",
    7. "datanodes": ["localhost-1", "localhost-2", "localhost-3"],
    8. "lastLeaderElection": 0,
    9. "duration": 23166128,
    10. "leaderElections": 0,
    11. "replicationType": "RATIS",
    12. "replicationFactor": 3,
    13. "containers": 0
    14. },
    15. ...
    16. ]
    17. }

任务

  • /task/status

    URL 结构

    1. GET /api/v1/task/status

    参数

    没有参数

    回传

    回传所有 Recon 任务的状态。

    1. [
    2. {
    3. "taskName": "OmDeltaRequest",
    4. "lastUpdatedTimestamp": 1605724099147,
    5. "lastUpdatedSeqNumber": 186
    6. },
    7. ...
    8. ]

使用率

  • /utilization/fileCount

    URL 结构

    1. GET /api/v1/utilization/fileCount

    参数

    • volume (可选)

      根据给定的卷名过滤结果。

    • bucket (可选)

      根据给定的桶名过滤结果。

    • fileSize (可选)

      根据给定的文件大小筛选结果。

    回传

    回传不同文件范围内的文件计数,其中响应对象中的fileSize是文件大小范围的上限。

    1. [{
    2. "volume": "vol-2-04168",
    3. "bucket": "bucket-0-11685",
    4. "fileSize": 1024,
    5. "count": 1
    6. }, {
    7. "volume": "vol-2-04168",
    8. "bucket": "bucket-1-41795",
    9. "fileSize": 1024,
    10. "count": 1
    11. }, {
    12. "volume": "vol-2-04168",
    13. "bucket": "bucket-2-93377",
    14. "fileSize": 1024,
    15. "count": 1
    16. }, {
    17. "volume": "vol-2-04168",
    18. "bucket": "bucket-3-50336",
    19. "fileSize": 1024,
    20. "count": 2
    21. }]

指标

  • /metrics/:api

    URL 结构

    1. GET /api/v1/metrics/:api

    参数

    请参阅 Prometheus HTTP API 参考 以获取完整的查询文档。

    回传

    这是 Prometheus 的代理端点,并回传与 Prometheus 端点相同的响应。 示例:/api/v1/metrics/query?query=ratis_leader_election_electionCount

    1. {
    2. "status": "success",
    3. "data": {
    4. "resultType": "vector",
    5. "result": [
    6. {
    7. "metric": {
    8. "__name__": "ratis_leader_election_electionCount",
    9. "exported_instance": "33a5ac1d-8c65-4c74-a0b8-9314dfcccb42",
    10. "group": "group-03CA9397D54B",
    11. "instance": "ozone_datanode_1:9882",
    12. "job": "ozone"
    13. },
    14. "value": [
    15. 1599159384.455,
    16. "5"
    17. ]
    18. }
    19. ]
    20. }
    21. }