Geo Nodes API (deprecated)
- Tier: Premium, Ultimate
- Offering: 极狐GitLab私有化部署
The Geo Nodes API was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/369140) in 极狐GitLab 16.0 and is planned for removal in v5 of the API. Use the [Geo Sites API](geo_sites.md) instead. This change is a breaking change.
要与 Geo 节点端点交互,您必须以 管理员 身份进行身份验证。
创建一个新的 Geo 节点
创建一个新的 Geo 节点。
plaintextPOST /geo_nodes
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes" \ --request POST \ -d "name=himynameissomething" \ -d "url=https://another-node.example.com/"
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| primary | boolean | no | 指定此节点是否应为主节点。默认为 false。 |
| enabled | boolean | no | FLAG: 表示 Geo 节点是否启用。默认为 true。 |
| name | string | yes | Geo 节点的唯一标识符。必须与 gitlab.rb 中设置的 geo_node_name 匹配,否则必须与 external_url 匹配 |
| url | string | yes | Geo 节点的面向用户的 URL。 |
| internal_url | string | no | 主节点上定义的 URL,次级节点应使用该 URL 与其联系。如果未设置,则返回 url。 |
| files_max_capacity | integer | no | 控制此次级节点的 LFS/附件回填的最大并发性。默认为 10。 |
| repos_max_capacity | integer | no | 控制此次级节点的仓库回填的最大并发性。默认为 25。 |
| verification_max_capacity | integer | no | 控制此节点的仓库验证的最大并发性。默认为 100。 |
| container_repositories_max_capacity | integer | no | 控制此节点的容器仓库同步的最大并发性。默认为 10。 |
| sync_object_storage | boolean | no | FLAG: 表示次级 Geo 节点是否应复制对象存储中的 blob。默认为 false。 |
| selective_sync_type | string | no | 限制同步仅适用于特定群组或分片。有效值: "namespaces"、"shards" 或 null。 |
| selective_sync_shards | array | no | 如果 selective_sync_type == shards,则同步项目的仓库存储。 |
| selective_sync_namespace_ids | array | no | 如果 selective_sync_type == namespaces,则应同步的群组 ID。 |
| minimum_reverification_interval | integer | no | 仓库验证有效的间隔时间(以天为单位)。过期后,将重新验证。当设置在次级节点上时无效。 |
示例响应:
json1{ 2 "id": 3, 3 "name": "Test Node 1", 4 "url": "https://secondary.example.com/", 5 "internal_url": "https://secondary.example.com/", 6 "primary": false, 7 "enabled": true, 8 "current": false, 9 "files_max_capacity": 10, 10 "repos_max_capacity": 25, 11 "verification_max_capacity": 100, 12 "selective_sync_type": "namespaces", 13 "selective_sync_shards": [], 14 "selective_sync_namespace_ids": [1, 25], 15 "minimum_reverification_interval": 7, 16 "container_repositories_max_capacity": 10, 17 "sync_object_storage": false, 18 "clone_protocol": "http", 19 "web_edit_url": "https://primary.example.com/admin/geo/sites/3/edit", 20 "web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/3/replication/lfs_objects", 21 "_links": { 22 "self": "https://primary.example.com/api/v4/geo_nodes/3", 23 "status": "https://primary.example.com/api/v4/geo_nodes/3/status", 24 "repair": "https://primary.example.com/api/v4/geo_nodes/3/repair" 25 } 26}
检索关于所有 Geo 节点的配置
plaintextGET /geo_nodes
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes"
示例响应:
json1[ 2 { 3 "id": 1, 4 "name": "us-node", 5 "url": "https://primary.example.com/", 6 "internal_url": "https://internal.example.com/", 7 "primary": true, 8 "enabled": true, 9 "current": true, 10 "files_max_capacity": 10, 11 "repos_max_capacity": 25, 12 "container_repositories_max_capacity": 10, 13 "verification_max_capacity": 100, 14 "selective_sync_type": "namespaces", 15 "selective_sync_shards": [], 16 "selective_sync_namespace_ids": [1, 25], 17 "minimum_reverification_interval": 7, 18 "clone_protocol": "http", 19 "web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit", 20 "_links": { 21 "self": "https://primary.example.com/api/v4/geo_nodes/1", 22 "status":"https://primary.example.com/api/v4/geo_nodes/1/status", 23 "repair":"https://primary.example.com/api/v4/geo_nodes/1/repair" 24 } 25 }, 26 { 27 "id": 2, 28 "name": "cn-node", 29 "url": "https://secondary.example.com/", 30 "internal_url": "https://secondary.example.com/", 31 "primary": false, 32 "enabled": true, 33 "current": false, 34 "files_max_capacity": 10, 35 "repos_max_capacity": 25, 36 "container_repositories_max_capacity": 10, 37 "verification_max_capacity": 100, 38 "selective_sync_type": "namespaces", 39 "selective_sync_shards": [], 40 "selective_sync_namespace_ids": [1, 25], 41 "minimum_reverification_interval": 7, 42 "sync_object_storage": true, 43 "clone_protocol": "http", 44 "web_edit_url": "https://primary.example.com/admin/geo/sites/2/edit", 45 "web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/2/replication/lfs_objects", 46 "_links": { 47 "self":"https://primary.example.com/api/v4/geo_nodes/2", 48 "status":"https://primary.example.com/api/v4/geo_nodes/2/status", 49 "repair":"https://primary.example.com/api/v4/geo_nodes/2/repair" 50 } 51 } 52]
检索关于特定 Geo 节点的配置
plaintextGET /geo_nodes/:id
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/1"
示例响应:
json1{ 2 "id": 1, 3 "name": "us-node", 4 "url": "https://primary.example.com/", 5 "internal_url": "https://primary.example.com/", 6 "primary": true, 7 "enabled": true, 8 "current": true, 9 "files_max_capacity": 10, 10 "repos_max_capacity": 25, 11 "container_repositories_max_capacity": 10, 12 "verification_max_capacity": 100, 13 "selective_sync_type": "namespaces", 14 "selective_sync_shards": [], 15 "selective_sync_namespace_ids": [1, 25], 16 "minimum_reverification_interval": 7, 17 "clone_protocol": "http", 18 "web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit", 19 "_links": { 20 "self": "https://primary.example.com/api/v4/geo_nodes/1", 21 "status":"https://primary.example.com/api/v4/geo_nodes/1/status", 22 "repair":"https://primary.example.com/api/v4/geo_nodes/1/repair" 23 } 24}
编辑 Geo 节点
更新现有 Geo 节点的设置。
plaintextPUT /geo_nodes/:id
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer | yes | Geo 节点的 ID。 |
| enabled | boolean | no | FLAG: 表示 Geo 节点是否启用。 |
| name | string | no | Geo 节点的唯一标识符。必须与 gitlab.rb 中设置的 geo_node_name 匹配,否则必须与 external_url 匹配。 |
| url | string | no | Geo 节点的面向用户的 URL。 |
| internal_url | string | no | 主节点上定义的 URL,次级节点应使用该 URL 与其联系。如果未设置,则返回 url。 |
| files_max_capacity | integer | no | 控制此次级节点的 LFS/附件回填的最大并发性。 |
| repos_max_capacity | integer | no | 控制此次级节点的仓库回填的最大并发性。 |
| verification_max_capacity | integer | no | 控制此节点的验证的最大并发性。 |
| container_repositories_max_capacity | integer | no | 控制此节点的容器仓库同步的最大并发性。 |
| sync_object_storage | boolean | no | FLAG: 表示次级 Geo 节点是否应复制对象存储中的 blob。 |
| selective_sync_type | string | no | 限制同步仅适用于特定群组或分片。有效值: "namespaces"、"shards" 或 null。 |
| selective_sync_shards | array | no | 如果 selective_sync_type == shards,则同步项目的仓库存储。 |
| selective_sync_namespace_ids | array | no | 如果 selective_sync_type == namespaces,则应同步的群组 ID。 |
| minimum_reverification_interval | integer | no | 仓库验证有效的间隔时间(以天为单位)。过期后,将重新验证。当设置在次级节点上时无效。 |
示例响应:
json1{ 2 "id": 1, 3 "name": "cn-node", 4 "url": "https://secondary.example.com/", 5 "internal_url": "https://secondary.example.com/", 6 "primary": false, 7 "enabled": true, 8 "current": true, 9 "files_max_capacity": 10, 10 "repos_max_capacity": 25, 11 "container_repositories_max_capacity": 10, 12 "verification_max_capacity": 100, 13 "selective_sync_type": "namespaces", 14 "selective_sync_shards": [], 15 "selective_sync_namespace_ids": [1, 25], 16 "minimum_reverification_interval": 7, 17 "sync_object_storage": true, 18 "clone_protocol": "http", 19 "web_edit_url": "https://primary.example.com/admin/geo/sites/2/edit", 20 "web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/2/replication/lfs_objects", 21 "_links": { 22 "self":"https://primary.example.com/api/v4/geo_nodes/2", 23 "status":"https://primary.example.com/api/v4/geo_nodes/2/status", 24 "repair":"https://primary.example.com/api/v4/geo_nodes/2/repair" 25 } 26}
删除 Geo 节点
移除 Geo 节点。
plaintextDELETE /geo_nodes/:id
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | integer | yes | Geo 节点的 ID。 |
修复 Geo 节点
修复 Geo 节点的 OAuth 身份验证。
这只能对主 Geo 节点运行。
plaintextPOST /geo_nodes/:id/repair
示例响应:
json1{ 2 "id": 1, 3 "name": "us-node", 4 "url": "https://primary.example.com/", 5 "internal_url": "https://primary.example.com/", 6 "primary": true, 7 "enabled": true, 8 "current": true, 9 "files_max_capacity": 10, 10 "repos_max_capacity": 25, 11 "container_repositories_max_capacity": 10, 12 "verification_max_capacity": 100, 13 "clone_protocol": "http", 14 "web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit", 15 "_links": { 16 "self": "https://primary.example.com/api/v4/geo_nodes/1", 17 "status":"https://primary.example.com/api/v4/geo_nodes/1/status", 18 "repair":"https://primary.example.com/api/v4/geo_nodes/1/repair" 19 } 20}
检索关于所有 Geo 节点的状态
plaintextGET /geo_nodes/status
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/status"
示例响应:
json1[ 2 { 3 "geo_node_id": 1, 4 "healthy": true, 5 "health": "Healthy", 6 "health_status": "Healthy", 7 "missing_oauth_application": false, 8 "db_replication_lag_seconds": null, 9 "lfs_objects_count": 5, 10 "lfs_objects_checksum_total_count": 5, 11 "lfs_objects_checksummed_count": 5, 12 "lfs_objects_checksum_failed_count": 0, 13 "lfs_objects_synced_count": null, 14 "lfs_objects_failed_count": null, 15 "lfs_objects_registry_count": null, 16 "lfs_objects_verification_total_count": null, 17 "lfs_objects_verified_count": null, 18 "lfs_objects_verification_failed_count": null, 19 "lfs_objects_synced_in_percentage": "0.00%", 20 "lfs_objects_verified_in_percentage": "0.00%", 21 "job_artifacts_count": 2, 22 "job_artifacts_synced_count": null, 23 "job_artifacts_failed_count": null, 24 "job_artifacts_synced_in_percentage": "0.00%", 25 "projects_count": 41, 26 "repositories_count": 41, 27 "replication_slots_count": 1, 28 "replication_slots_used_count": 1, 29 "replication_slots_used_in_percentage": "100.00%", 30 "replication_slots_max_retained_wal_bytes": 0, 31 "repositories_checked_count": 20, 32 "repositories_checked_failed_count": 20, 33 "repositories_checked_in_percentage": "100.00%", 34 "last_event_id": 23, 35 "last_event_timestamp": 1509681166, 36 "cursor_last_event_id": null, 37 "cursor_last_event_timestamp": 0, 38 "last_successful_status_check_timestamp": 1510125024, 39 "version": "10.3.0", 40 "revision": "33d33a096a", 41 "merge_request_diffs_count": 5, 42 "merge_request_diffs_checksum_total_count": 5, 43 "merge_request_diffs_checksummed_count": 5, 44 "merge_request_diffs_checksum_failed_count": 0, 45 "merge_request_diffs_synced_count": null, 46 "merge_request_diffs_failed_count": null, 47 "merge_request_diffs_registry_count": null, 48 "merge_request_diffs_verification_total_count": null, 49 "merge_request_diffs_verified_count": null, 50 "merge_request_diffs_verification_failed_count": null, 51 "merge_request_diffs_synced_in_percentage": "0.00%", 52 "merge_request_diffs_verified_in_percentage": "0.00%", 53 "package_files_count": 5, 54 "package_files_checksum_total_count": 5, 55 "package_files_checksummed_count": 5, 56 "package_files_checksum_failed_count": 0, 57 "package_files_synced_count": null, 58 "package_files_failed_count": null, 59 "package_files_registry_count": null, 60 "package_files_verification_total_count": null, 61 "package_files_verified_count": null, 62 "package_files_verification_failed_count": null, 63 "package_files_synced_in_percentage": "0.00%", 64 "package_files_verified_in_percentage": "0.00%", 65 "pages_deployments_count": 5, 66 "pages_deployments_checksum_total_count": 5, 67 "pages_deployments_checksummed_count": 5, 68 "pages_deployments_checksum_failed_count": 0, 69 "pages_deployments_synced_count": null, 70 "pages_deployments_failed_count": null, 71 "pages_deployments_registry_count": null, 72 "pages_deployments_verification_total_count": null, 73 "pages_deployments_verified_count": null, 74 "pages_deployments_verification_failed_count": null, 75 "pages_deployments_synced_in_percentage": "0.00%", 76 "pages_deployments_verified_in_percentage": "0.00%", 77 "terraform_state_versions_count": 5, 78 "terraform_state_versions_checksum_total_count": 5, 79 "terraform_state_versions_checksummed_count": 5, 80 "terraform_state_versions_checksum_failed_count": 0, 81 "terraform_state_versions_synced_count": null, 82 "terraform_state_versions_failed_count": null, 83 "terraform_state_versions_registry_count": null, 84 "terraform_state_versions_verification_total_count": null, 85 "terraform_state_versions_verified_count": null, 86 "terraform_state_versions_verification_failed_count": null, 87 "terraform_state_versions_synced_in_percentage": "0.00%", 88 "terraform_state_versions_verified_in_percentage": "0.00%", 89 "snippet_repositories_count": 5, 90 "snippet_repositories_checksum_total_count": 5, 91 "snippet_repositories_checksummed_count": 5, 92 "snippet_repositories_checksum_failed_count": 0, 93 "snippet_repositories_synced_count": null, 94 "snippet_repositories_failed_count": null, 95 "snippet_repositories_registry_count": null, 96 "snippet_repositories_verification_total_count": null, 97 "snippet_repositories_verified_count": null, 98 "snippet_repositories_verification_failed_count": null, 99 "snippet_repositories_synced_in_percentage": "0.00%", 100 "snippet_repositories_verified_in_percentage": "0.00%", 101 "project_wiki_repositories_count": 3, 102 "project_wiki_repositories_checksum_total_count": 3, 103 "project_wiki_repositories_checksummed_count": 3, 104 "project_wiki_repositories_checksum_failed_count": 0, 105 "project_wiki_repositories_synced_count": null, 106 "project_wiki_repositories_failed_count": null, 107 "project_wiki_repositories_registry_count": null, 108 "project_wiki_repositories_verification_total_count": null, 109 "project_wiki_repositories_verified_count": null, 110 "project_wiki_repositories_verification_failed_count": null, 111 "project_wiki_repositories_synced_in_percentage": "0.00%", 112 "project_wiki_repositories_verified_in_percentage": "0.00%", 113 "group_wiki_repositories_count": 5, 114 "group_wiki_repositories_checksum_total_count": 5, 115 "group_wiki_repositories_checksummed_count": 5, 116 "group_wiki_repositories_checksum_failed_count": 0, 117 "group_wiki_repositories_synced_count": null, 118 "group_wiki_repositories_failed_count": null, 119 "group_wiki_repositories_registry_count": null, 120 "group_wiki_repositories_verification_total_count": null, 121 "group_wiki_repositories_verified_count": null, 122 "group_wiki_repositories_verification_failed_count": null, 123 "group_wiki_repositories_synced_in_percentage": "0.00%", 124 "group_wiki_repositories_verified_in_percentage": "0.00%", 125 "pipeline_artifacts_count": 5, 126 "pipeline_artifacts_checksum_total_count": 5, 127 "pipeline_artifacts_checksummed_count": 5, 128 "pipeline_artifacts_checksum_failed_count": 0, 129 "pipeline_artifacts_synced_count": null, 130 "pipeline_artifacts_failed_count": null, 131 "pipeline_artifacts_registry_count": null, 132 "pipeline_artifacts_verification_total_count": null, 133 "pipeline_artifacts_verified_count": null, 134 "pipeline_artifacts_verification_failed_count": null, 135 "pipeline_artifacts_synced_in_percentage": "0.00%", 136 "pipeline_artifacts_verified_in_percentage": "0.00%", 137 "uploads_count": 5, 138 "uploads_synced_count": null, 139 "uploads_failed_count": 0, 140 "uploads_registry_count": null, 141 "uploads_synced_in_percentage": "0.00%", 142 "uploads_checksum_total_count": 5, 143 "uploads_checksummed_count": 5, 144 "uploads_checksum_failed_count": null, 145 "uploads_verification_total_count": null, 146 "uploads_verified_count": null, 147 "uploads_verification_failed_count": null, 148 "uploads_verified_in_percentage": "0.00%", 149 "job_artifacts_count": 5, 150 "job_artifacts_checksum_total_count": 5, 151 "job_artifacts_checksummed_count": 5, 152 "job_artifacts_checksum_failed_count": 0, 153 "job_artifacts_synced_count": 5, 154 "job_artifacts_failed_count": 0, 155 "job_artifacts_registry_count": 5, 156 "job_artifacts_verification_total_count": 5, 157 "job_artifacts_verified_count": 5, 158 "job_artifacts_verification_failed_count": 0, 159 "job_artifacts_synced_in_percentage": "100.00%", 160 "job_artifacts_verified_in_percentage": "100.00%", 161 "ci_secure_files_count": 5, 162 "ci_secure_files_checksum_total_count": 5, 163 "ci_secure_files_checksummed_count": 5, 164 "ci_secure_files_checksum_failed_count": 0, 165 "ci_secure_files_synced_count": 5, 166 "ci_secure_files_failed_count": 0, 167 "ci_secure_files_registry_count": 5, 168 "ci_secure_files_verification_total_count": 5, 169 "ci_secure_files_verified_count": 5, 170 "ci_secure_files_verification_failed_count": 0, 171 "ci_secure_files_synced_in_percentage": "100.00%", 172 "ci_secure_files_verified_in_percentage": "100.00%", 173 "dependency_proxy_blobs_count": 5, 174 "dependency_proxy_blobs_checksum_total_count": 5, 175 "dependency_proxy_blobs_checksummed_count": 5, 176 "dependency_proxy_blobs_checksum_failed_count": 0, 177 "dependency_proxy_blobs_synced_count": 5, 178 "dependency_proxy_blobs_failed_count": 0, 179 "dependency_proxy_blobs_registry_count": 5, 180 "dependency_proxy_blobs_verification_total_count": 5, 181 "dependency_proxy_blobs_verified_count": 5, 182 "dependency_proxy_blobs_verification_failed_count": 0, 183 "dependency_proxy_blobs_synced_in_percentage": "100.00%", 184 "dependency_proxy_blobs_verified_in_percentage": "100.00%", 185 "container_repositories_count": 5, 186 "container_repositories_synced_count": 5, 187 "container_repositories_failed_count": 0, 188 "container_repositories_registry_count": 5, 189 "container_repositories_synced_in_percentage": "100.00%", 190 "container_repositories_checksum_total_count": 0, 191 "container_repositories_checksummed_count": 0, 192 "container_repositories_checksum_failed_count": 0, 193 "container_repositories_verification_total_count": 0, 194 "container_repositories_verified_count": 0, 195 "container_repositories_verification_failed_count": 0, 196 "container_repositories_verified_in_percentage": "100.00%", 197 "dependency_proxy_manifests_count": 5, 198 "dependency_proxy_manifests_checksum_total_count": 5, 199 "dependency_proxy_manifests_checksummed_count": 5, 200 "dependency_proxy_manifests_checksum_failed_count": 5, 201 "dependency_proxy_manifests_synced_count": 5, 202 "dependency_proxy_manifests_failed_count": 0, 203 "dependency_proxy_manifests_registry_count": 5, 204 "dependency_proxy_manifests_verification_total_count": 5, 205 "dependency_proxy_manifests_verified_count": 5, 206 "dependency_proxy_manifests_verification_failed_count": 5, 207 "dependency_proxy_manifests_synced_in_percentage": "100.00%", 208 "dependency_proxy_manifests_verified_in_percentage": "100.00%", 209 "design_management_repositories_count": 5, 210 "design_management_repositories_checksum_total_count": 5, 211 "design_management_repositories_checksummed_count": 5, 212 "design_management_repositories_checksum_failed_count": 5, 213 "design_management_repositories_synced_count": 5, 214 "design_management_repositories_failed_count": 0, 215 "design_management_repositories_registry_count": 5, 216 "design_management_repositories_verification_total_count": 5, 217 "design_management_repositories_verified_count": 5, 218 "design_management_repositories_verification_failed_count": 5, 219 "design_management_repositories_synced_in_percentage": "100.00%", 220 "design_management_repositories_verified_in_percentage": "100.00%", 221 "project_repositories_count": 5, 222 "project_repositories_checksum_total_count": 5, 223 "project_repositories_checksummed_count": 5, 224 "project_repositories_checksum_failed_count": 0, 225 "project_repositories_synced_count": 5, 226 "project_repositories_failed_count": 0, 227 "project_repositories_registry_count": 5, 228 "project_repositories_verification_total_count": 5, 229 "project_repositories_verified_count": 5, 230 "project_repositories_verification_failed_count": 0, 231 "project_repositories_synced_in_percentage": "100.00%", 232 "project_repositories_verified_in_percentage": "100.00%" 233 }, 234 { 235 "geo_node_id": 2, 236 "healthy": true, 237 "health": "Healthy", 238 "health_status": "Healthy", 239 "missing_oauth_application": false, 240 "db_replication_lag_seconds": 0, 241 "lfs_objects_count": 5, 242 "lfs_objects_checksum_total_count": 5, 243 "lfs_objects_checksummed_count": 5, 244 "lfs_objects_checksum_failed_count": 0, 245 "lfs_objects_synced_count": null, 246 "lfs_objects_failed_count": null, 247 "lfs_objects_registry_count": null, 248 "lfs_objects_verification_total_count": null, 249 "lfs_objects_verified_count": null, 250 "lfs_objects_verification_failed_count": null, 251 "lfs_objects_synced_in_percentage": "0.00%", 252 "lfs_objects_verified_in_percentage": "0.00%", 253 "job_artifacts_count": 2, 254 "job_artifacts_synced_count": 1, 255 "job_artifacts_failed_count": 1, 256 "job_artifacts_synced_in_percentage": "50.00%", 257 "design_management_repositories_count": 5, 258 "design_management_repositories_synced_count": 5, 259 "design_management_repositories_failed_count": 5, 260 "design_management_repositories_synced_in_percentage": "100.00%", 261 "design_management_repositories_checksum_total_count": 5, 262 "design_management_repositories_checksummed_count": 5, 263 "design_management_repositories_checksum_failed_count": 5, 264 "design_management_repositories_registry_count": 5, 265 "design_management_repositories_verification_total_count": 5, 266 "design_management_repositories_verified_count": 5, 267 "design_management_repositories_verification_failed_count": 5, 268 "design_management_repositories_verified_in_percentage": "100.00%", 269 "projects_count": 41, 270 "repositories_count": 41, 271 "replication_slots_count": null, 272 "replication_slots_used_count": null, 273 "replication_slots_used_in_percentage": "0.00%", 274 "replication_slots_max_retained_wal_bytes": null, 275 "repositories_checked_count": 5, 276 "repositories_checked_failed_count": 1, 277 "repositories_checked_in_percentage": "12.20%", 278 "last_event_id": 23, 279 "last_event_timestamp": 1509681166, 280 "cursor_last_event_id": 23, 281 "cursor_last_event_timestamp": 1509681166, 282 "last_successful_status_check_timestamp": 1510125024, 283 "version": "10.3.0", 284 "revision": "33d33a096a", 285 "merge_request_diffs_count": 5, 286 "merge_request_diffs_checksum_total_count": 5, 287 "merge_request_diffs_checksummed_count": 5, 288 "merge_request_diffs_checksum_failed_count": 0, 289 "merge_request_diffs_synced_count": 5, 290 "merge_request_diffs_failed_count": 0, 291 "merge_request_diffs_registry_count": 5, 292 "merge_request_diffs_verification_total_count": 5, 293 "merge_request_diffs_verified_count": 5, 294 "merge_request_diffs_verification_failed_count": 0, 295 "merge_request_diffs_synced_in_percentage": "100.00%", 296 "merge_request_diffs_verified_in_percentage": "100.00%", 297 "package_files_count": 5, 298 "package_files_checksum_total_count": 5, 299 "package_files_checksummed_count": 5, 300 "package_files_checksum_failed_count": 0, 301 "package_files_synced_count": 5, 302 "package_files_failed_count": 0, 303 "package_files_registry_count": 5, 304 "package_files_verification_total_count": 5, 305 "package_files_verified_count": 5, 306 "package_files_verification_failed_count": 0, 307 "package_files_synced_in_percentage": "100.00%", 308 "package_files_verified_in_percentage": "100.00%", 309 "terraform_state_versions_count": 5, 310 "terraform_state_versions_checksum_total_count": 5, 311 "terraform_state_versions_checksummed_count": 5, 312 "terraform_state_versions_checksum_failed_count": 0, 313 "terraform_state_versions_synced_count": 5, 314 "terraform_state_versions_failed_count": 0, 315 "terraform_state_versions_registry_count": 5, 316 "terraform_state_versions_verification_total_count": 5, 317 "terraform_state_versions_verified_count": 5, 318 "terraform_state_versions_verification_failed_count": 0, 319 "terraform_state_versions_synced_in_percentage": "100.00%", 320 "terraform_state_versions_verified_in_percentage": "100.00%", 321 "snippet_repositories_count": 5, 322 "snippet_repositories_checksum_total_count": 5, 323 "snippet_repositories_checksummed_count": 5, 324 "snippet_repositories_checksum_failed_count": 0, 325 "snippet_repositories_synced_count": 5, 326 "snippet_repositories_failed_count": 0, 327 "snippet_repositories_registry_count": 5, 328 "snippet_repositories_verification_total_count": 5, 329 "snippet_repositories_verified_count": 5, 330 "snippet_repositories_verification_failed_count": 0, 331 "snippet_repositories_synced_in_percentage": "100.00%", 332 "snippet_repositories_verified_in_percentage": "100.00%", 333 "group_wiki_repositories_count": 5, 334 "group_wiki_repositories_checksum_total_count": 5, 335 "group_wiki_repositories_checksummed_count": 5, 336 "group_wiki_repositories_checksum_failed_count": 0, 337 "group_wiki_repositories_synced_count": 5, 338 "group_wiki_repositories_failed_count": 0, 339 "group_wiki_repositories_registry_count": 5, 340 "group_wiki_repositories_verification_total_count": 5, 341 "group_wiki_repositories_verified_count": 5, 342 "group_wiki_repositories_verification_failed_count": 0, 343 "group_wiki_repositories_synced_in_percentage": "100.00%", 344 "group_wiki_repositories_verified_in_percentage": "100.00%", 345 "pipeline_artifacts_count": 5, 346 "pipeline_artifacts_checksum_total_count": 5, 347 "pipeline_artifacts_checksummed_count": 5, 348 "pipeline_artifacts_checksum_failed_count": 0, 349 "pipeline_artifacts_synced_count": 5, 350 "pipeline_artifacts_failed_count": 0, 351 "pipeline_artifacts_registry_count": 5, 352 "pipeline_artifacts_verification_total_count": 5, 353 "pipeline_artifacts_verified_count": 5, 354 "pipeline_artifacts_verification_failed_count": 0, 355 "pipeline_artifacts_synced_in_percentage": "100.00%", 356 "pipeline_artifacts_verified_in_percentage": "100.00%", 357 "uploads_count": 5, 358 "uploads_synced_count": null, 359 "uploads_failed_count": 0, 360 "uploads_registry_count": null, 361 "uploads_synced_in_percentage": "0.00%", 362 "uploads_checksum_total_count": 5, 363 "uploads_checksummed_count": 5, 364 "uploads_checksum_failed_count": null, 365 "uploads_verification_total_count": null, 366 "uploads_verified_count": null, 367 "uploads_verification_failed_count": null, 368 "uploads_verified_in_percentage": "0.00%", 369 "job_artifacts_count": 5, 370 "job_artifacts_checksum_total_count": 5, 371 "job_artifacts_checksummed_count": 5, 372 "job_artifacts_checksum_failed_count": 0, 373 "job_artifacts_synced_count": 5, 374 "job_artifacts_failed_count": 0, 375 "job_artifacts_registry_count": 5, 376 "job_artifacts_verification_total_count": 5, 377 "job_artifacts_verified_count": 5, 378 "job_artifacts_verification_failed_count": 0, 379 "job_artifacts_synced_in_percentage": "100.00%", 380 "job_artifacts_verified_in_percentage": "100.00%", 381 "dependency_proxy_blobs_count": 5, 382 "dependency_proxy_blobs_checksum_total_count": 5, 383 "dependency_proxy_blobs_checksummed_count": 5, 384 "dependency_proxy_blobs_checksum_failed_count": 0, 385 "dependency_proxy_blobs_synced_count": 5, 386 "dependency_proxy_blobs_failed_count": 0, 387 "dependency_proxy_blobs_registry_count": 5, 388 "dependency_proxy_blobs_verification_total_count": 5, 389 "dependency_proxy_blobs_verified_count": 5, 390 "dependency_proxy_blobs_verification_failed_count": 0, 391 "dependency_proxy_blobs_synced_in_percentage": "100.00%", 392 "dependency_proxy_blobs_verified_in_percentage": "100.00%", 393 "container_repositories_count": 5, 394 "container_repositories_synced_count": 5, 395 "container_repositories_failed_count": 0, 396 "container_repositories_registry_count": 5, 397 "container_repositories_synced_in_percentage": "100.00%", 398 "container_repositories_checksum_total_count": 0, 399 "container_repositories_checksummed_count": 0, 400 "container_repositories_checksum_failed_count": 0, 401 "container_repositories_verification_total_count": 0, 402 "container_repositories_verified_count": 0, 403 "container_repositories_verification_failed_count": 0, 404 "container_repositories_verified_in_percentage": "100.00%", 405 "dependency_proxy_manifests_count": 5, 406 "dependency_proxy_manifests_checksum_total_count": 5, 407 "dependency_proxy_manifests_checksummed_count": 5, 408 "dependency_proxy_manifests_checksum_failed_count": 5, 409 "dependency_proxy_manifests_synced_count": 5, 410 "dependency_proxy_manifests_failed_count": 0, 411 "dependency_proxy_manifests_registry_count": 5, 412 "dependency_proxy_manifests_verification_total_count": 5, 413 "dependency_proxy_manifests_verified_count": 5, 414 "dependency_proxy_manifests_verification_failed_count": 5, 415 "dependency_proxy_manifests_synced_in_percentage": "100.00%", 416 "dependency_proxy_manifests_verified_in_percentage": "100.00%", 417 "project_repositories_count": 5, 418 "project_repositories_checksum_total_count": 5, 419 "project_repositories_checksummed_count": 5, 420 "project_repositories_checksum_failed_count": 0, 421 "project_repositories_synced_count": 5, 422 "project_repositories_failed_count": 0, 423 "project_repositories_registry_count": 5, 424 "project_repositories_verification_total_count": 5, 425 "project_repositories_verified_count": 5, 426 "project_repositories_verification_failed_count": 0, 427 "project_repositories_synced_in_percentage": "100.00%", 428 "project_repositories_verified_in_percentage": "100.00%" 429 } 430]
检索关于特定 Geo 节点的状态
plaintextGET /geo_nodes/:id/status
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/2/status"
示例响应:
json1{ 2 "geo_node_id": 2, 3 "healthy": true, 4 "health": "Healthy", 5 "health_status": "Healthy", 6 "missing_oauth_application": false, 7 "db_replication_lag_seconds": 0, 8 "lfs_objects_count": 5, 9 "lfs_objects_checksum_total_count": 5, 10 "lfs_objects_checksummed_count": 5, 11 "lfs_objects_checksum_failed_count": 0, 12 "lfs_objects_synced_count": null, 13 "lfs_objects_failed_count": null, 14 "lfs_objects_registry_count": null, 15 "lfs_objects_verification_total_count": null, 16 "lfs_objects_verified_count": null, 17 "lfs_objects_verification_failed_count": null, 18 "lfs_objects_synced_in_percentage": "0.00%", 19 "lfs_objects_verified_in_percentage": "0.00%", 20 "job_artifacts_count": 2, 21 "job_artifacts_synced_count": 1, 22 "job_artifacts_failed_count": 1, 23 "job_artifacts_synced_in_percentage": "50.00%", 24 "projects_count": 41, 25 "repositories_count": 41, 26 "replication_slots_count": null, 27 "replication_slots_used_count": null, 28 "replication_slots_used_in_percentage": "0.00%", 29 "replication_slots_max_retained_wal_bytes": null, 30 "last_event_id": 23, 31 "last_event_timestamp": 1509681166, 32 "cursor_last_event_id": 23, 33 "cursor_last_event_timestamp": 1509681166, 34 "last_successful_status_check_timestamp": 1510125268, 35 "version": "10.3.0", 36 "revision": "33d33a096a", 37 "merge_request_diffs_count": 5, 38 "merge_request_diffs_checksum_total_count": 5, 39 "merge_request_diffs_checksummed_count": 5, 40 "merge_request_diffs_checksum_failed_count": 0, 41 "merge_request_diffs_synced_count": 5, 42 "merge_request_diffs_failed_count": 0, 43 "merge_request_diffs_registry_count": 5, 44 "merge_request_diffs_verification_total_count": 5, 45 "merge_request_diffs_verified_count": 5, 46 "merge_request_diffs_verification_failed_count": 0, 47 "merge_request_diffs_synced_in_percentage": "100.00%", 48 "merge_request_diffs_verified_in_percentage": "100.00%", 49 "package_files_count": 5, 50 "package_files_checksum_total_count": 5, 51 "package_files_checksummed_count": 5, 52 "package_files_checksum_failed_count": 0, 53 "package_files_synced_count": 5, 54 "package_files_failed_count": 0, 55 "package_files_registry_count": 5, 56 "package_files_verification_total_count": 5, 57 "package_files_verified_count": 5, 58 "package_files_verification_failed_count": 0, 59 "package_files_synced_in_percentage": "100.00%", 60 "package_files_verified_in_percentage": "100.00%", 61 "terraform_state_versions_count": 5, 62 "terraform_state_versions_checksum_total_count": 5, 63 "terraform_state_versions_checksummed_count": 5, 64 "terraform_state_versions_checksum_failed_count": 0, 65 "terraform_state_versions_synced_count": 5, 66 "terraform_state_versions_failed_count": 0, 67 "terraform_state_versions_registry_count": 5, 68 "terraform_state_versions_verification_total_count": 5, 69 "terraform_state_versions_verified_count": 5, 70 "terraform_state_versions_verification_failed_count": 0, 71 "terraform_state_versions_synced_in_percentage": "100.00%", 72 "terraform_state_versions_verified_in_percentage": "100.00%", 73 "snippet_repositories_count": 5, 74 "snippet_repositories_checksum_total_count": 5, 75 "snippet_repositories_checksummed_count": 5, 76 "snippet_repositories_checksum_failed_count": 0, 77 "snippet_repositories_synced_count": 5, 78 "snippet_repositories_failed_count": 0, 79 "snippet_repositories_registry_count": 5, 80 "snippet_repositories_verification_total_count": 5, 81 "snippet_repositories_verified_count": 5, 82 "snippet_repositories_verification_failed_count": 0, 83 "snippet_repositories_synced_in_percentage": "100.00%", 84 "snippet_repositories_verified_in_percentage": "100.00%", 85 "group_wiki_repositories_count": 5, 86 "group_wiki_repositories_checksum_total_count": 5, 87 "group_wiki_repositories_checksummed_count": 5, 88 "group_wiki_repositories_checksum_failed_count": 0, 89 "group_wiki_repositories_synced_count": 5, 90 "group_wiki_repositories_failed_count": 0, 91 "group_wiki_repositories_registry_count": 5, 92 "group_wiki_repositories_verification_total_count": 5, 93 "group_wiki_repositories_verified_count": 5, 94 "group_wiki_repositories_verification_failed_count": 0, 95 "group_wiki_repositories_synced_in_percentage": "100.00%", 96 "group_wiki_repositories_verified_in_percentage": "100.00%", 97 "pipeline_artifacts_count": 5, 98 "pipeline_artifacts_checksum_total_count": 5, 99 "pipeline_artifacts_checksummed_count": 5, 100 "pipeline_artifacts_checksum_failed_count": 0, 101 "pipeline_artifacts_synced_count": 5, 102 "pipeline_artifacts_failed_count": 0, 103 "pipeline_artifacts_registry_count": 5, 104 "pipeline_artifacts_verification_total_count": 5, 105 "pipeline_artifacts_verified_count": 5, 106 "pipeline_artifacts_verification_failed_count": 0, 107 "pipeline_artifacts_synced_in_percentage": "100.00%", 108 "pipeline_artifacts_verified_in_percentage": "100.00%", 109 "uploads_count": 5, 110 "uploads_synced_count": null, 111 "uploads_failed_count": 0, 112 "uploads_registry_count": null, 113 "uploads_synced_in_percentage": "0.00%", 114 "uploads_checksum_total_count": 5, 115 "uploads_checksummed_count": 5, 116 "uploads_checksum_failed_count": null, 117 "uploads_verification_total_count": null, 118 "uploads_verified_count": null, 119 "uploads_verification_failed_count": null, 120 "uploads_verified_in_percentage": "0.00%", 121 "job_artifacts_count": 5, 122 "job_artifacts_checksum_total_count": 5, 123 "job_artifacts_checksummed_count": 5, 124 "job_artifacts_checksum_failed_count": 0, 125 "job_artifacts_synced_count": 5, 126 "job_artifacts_failed_count": 0, 127 "job_artifacts_registry_count": 5, 128 "job_artifacts_verification_total_count": 5, 129 "job_artifacts_verified_count": 5, 130 "job_artifacts_verification_failed_count": 0, 131 "job_artifacts_synced_in_percentage": "100.00%", 132 "job_artifacts_verified_in_percentage": "100.00%", 133 "ci_secure_files_count": 5, 134 "ci_secure_files_checksum_total_count": 5, 135 "ci_secure_files_checksummed_count": 5, 136 "ci_secure_files_checksum_failed_count": 0, 137 "ci_secure_files_synced_count": 5, 138 "ci_secure_files_failed_count": 0, 139 "ci_secure_files_registry_count": 5, 140 "ci_secure_files_verification_total_count": 5, 141 "ci_secure_files_verified_count": 5, 142 "ci_secure_files_verification_failed_count": 0, 143 "ci_secure_files_synced_in_percentage": "100.00%", 144 "ci_secure_files_verified_in_percentage": "100.00%", 145 "dependency_proxy_blobs_count": 5, 146 "dependency_proxy_blobs_checksum_total_count": 5, 147 "dependency_proxy_blobs_checksummed_count": 5, 148 "dependency_proxy_blobs_checksum_failed_count": 0, 149 "dependency_proxy_blobs_synced_count": 5, 150 "dependency_proxy_blobs_failed_count": 0, 151 "dependency_proxy_blobs_registry_count": 5, 152 "dependency_proxy_blobs_verification_total_count": 5, 153 "dependency_proxy_blobs_verified_count": 5, 154 "dependency_proxy_blobs_verification_failed_count": 0, 155 "dependency_proxy_blobs_synced_in_percentage": "100.00%", 156 "dependency_proxy_blobs_verified_in_percentage": "100.00%", 157 "container_repositories_count": 5, 158 "container_repositories_synced_count": 5, 159 "container_repositories_failed_count": 0, 160 "container_repositories_registry_count": 5, 161 "container_repositories_synced_in_percentage": "100.00%", 162 "container_repositories_checksum_total_count": 0, 163 "container_repositories_checksummed_count": 0, 164 "container_repositories_checksum_failed_count": 0, 165 "container_repositories_verification_total_count": 0, 166 "container_repositories_verified_count": 0, 167 "container_repositories_verification_failed_count": 0, 168 "container_repositories_verified_in_percentage": "100.00%", 169 "dependency_proxy_manifests_count": 5, 170 "dependency_proxy_manifests_checksum_total_count": 5, 171 "dependency_proxy_manifests_checksummed_count": 5, 172 "dependency_proxy_manifests_checksum_failed_count": 5, 173 "dependency_proxy_manifests_synced_count": 5, 174 "dependency_proxy_manifests_failed_count": 0, 175 "dependency_proxy_manifests_registry_count": 5, 176 "dependency_proxy_manifests_verification_total_count": 5, 177 "dependency_proxy_manifests_verified_count": 5, 178 "dependency_proxy_manifests_verification_failed_count": 5, 179 "dependency_proxy_manifests_synced_in_percentage": "100.00%", 180 "dependency_proxy_manifests_verified_in_percentage": "100.00%", 181 "design_management_repositories_count": 5, 182 "design_management_repositories_checksum_total_count": 5, 183 "design_management_repositories_checksummed_count": 5, 184 "design_management_repositories_checksum_failed_count": 5, 185 "design_management_repositories_synced_count": 5, 186 "design_management_repositories_failed_count": 0, 187 "design_management_repositories_registry_count": 5, 188 "design_management_repositories_verification_total_count": 5, 189 "design_management_repositories_verified_count": 5, 190 "design_management_repositories_verification_failed_count": 5, 191 "design_management_repositories_synced_in_percentage": "100.00%", 192 "design_management_repositories_verified_in_percentage": "100.00%", 193 "project_repositories_count": 5, 194 "project_repositories_checksum_total_count": 5, 195 "project_repositories_checksummed_count": 5, 196 "project_repositories_checksum_failed_count": 0, 197 "project_repositories_synced_count": 5, 198 "project_repositories_failed_count": 0, 199 "project_repositories_registry_count": 5, 200 "project_repositories_verification_total_count": 5, 201 "project_repositories_verified_count": 5, 202 "project_repositories_verification_failed_count": 0, 203 "project_repositories_synced_in_percentage": "100.00%", 204 "project_repositories_verified_in_percentage": "100.00%" 205}
`health_status` 参数只能处于 `健康` 或 `非健康` 状态,而 `health` 参数可以为空,"Healthy" 或包含实际错误信息。