Transwarp Manager 集群健康状态检测 API 参考示例

  其他常见问题
内容纲要

本文档面向集群使用方,提供通过 Transwarp Manager(TOS) REST API 检测集群整体健康状态服务健康状态的接口说明与调用示例,可作为运维监控、巡检脚本集成的参考。

示例环境:Manager 地址 http://172.18.131.171:8180(请替换为您的实际 Manager 地址)


一、前置说明

1.1 认证方式

所有业务接口均需先登录获取会话 Cookie(JSESSIONID),后续请求通过 -b cookies.txt 携带。会话过期(返回 401/403)时重新登录即可。

1.2 通用约定

  • 所有接口基础路径:http://<Manager_IP>:8180
  • 请求头:accept: */*;涉及请求体的接口需 Content-Type: application/json
  • 返回格式:JSON(少数路径型接口返回纯文本)
  • 时间戳字段均为毫秒级 Unix 时间戳

1.3 登录获取 Cookie

curl -X POST 'http://172.18.131.171:8180/api/users/login' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
    "userName": "lj_111",
    "userPassword": "123456",
    "captcha": "string",
    "twoStepCode": "string"
  }' \
  -c cookies.txt

请将 userName / userPassword 替换为您的实际账号。

返回示例:

{
  "userName": "lj_111",
  "roles": [{"roleName": "admin", "source": "ROLE", "sourceName": null}],
  "permissions": [{"type": "ADMIN", "resId": -1}],
  "isAdmin": true
}

登录成功后,cookies.txt 将用于后续所有示例。


二、集群整体健康状态检测

2.1 获取集群列表

用途: 获取 Manager 管理的集群及其 ID(后续接口需用到 clusterId)。

curl -s 'http://172.18.131.171:8180/api/clusters' -b cookies.txt

返回示例:

[
  {"id": 1, "name": "KV(测试完记得恢复)"}
]

2.2 集群状态(健康检查与告警)★

用途: 获取集群级的健康检查项与告警项,是判断集群整体健康最直接的接口。每一项包含标题、类型、状态、描述及告警等级。

curl -s 'http://172.18.131.171:8180/api/clusters/1/states' -b cookies.txt

返回示例:

[
  {
    "title": "节点网络延迟/丢包比例过高",
    "type": "AQUILA_ALERT",
    "status": "WARNING",
    "description": "节点kv1访问其他节点的网络延迟检测包超时比例超过33.33%",
    "href": "https://kv1:8666/#/home/alertList?id=6c49526223fa72a1",
    "aquilaLevel": "L3",
    "aquilaUrgency": "一般",
    "aquilaPriority": "定期观察",
    "aquilaPri": 3
  }
]

字段说明:

字段 含义
title 检查项/告警标题
type 类型,如 AQUILA_ALERT(告警)、DAEMON_CHECK(守护进程检查)、VITAL_SIGN_CHECK(就绪检查)
status 状态HEALTHY(健康)/ WARNING(告警)/ DOWN(异常)
description 详细描述
aquilaLevel 告警等级(L1~L4),仅告警项有

判定逻辑:返回数组为空或所有项 status=HEALTHY,则集群整体健康;存在 WARNING/DOWN 项则需关注。

2.3 集群统计信息

用途: 获取集群服务总数与节点总数,用于概览规模。

curl -s 'http://172.18.131.171:8180/api/clusters/1/statistics' -b cookies.txt

返回示例:

{"servicesNum": 29, "nodesNum": 4}

2.4 集群告警汇总 ★

用途: 获取集群当前告警的汇总计数与最近告警列表,配合 2.2 用于集群健康评估。

curl -s 'http://172.18.131.171:8180/api/alerts/aquila/summary' -b cookies.txt

返回示例:

{
  "criticalCount": 3,
  "warningCount": 0,
  "unknownCount": 0,
  "recent": [
    {
      "severity": "CRITICAL",
      "timestamp": 1784193939959,
      "title": "POD starwarp/starwarp-console-server-... 在过去5分钟内重启了1次。",
      "contextStr": ""
    },
    {
      "severity": "CRITICAL",
      "timestamp": 1783983859680,
      "title": "节点kv1访问其他节点的网络延迟检测包超时比例超过33.33%",
      "contextStr": "KV(测试完记得恢复)/kv1"
    }
  ]
}

字段说明:

字段 含义
criticalCount 严重告警数
warningCount 一般告警数
unknownCount 未知告警数
recent[].severity 告警级别:CRITICAL / WARNING / UNKNOWN
recent[].timestamp 告警时间(毫秒时间戳)

相关接口:

# 告警总数
curl -s 'http://172.18.131.171:8180/api/alerts/aquila/count' -b cookies.txt
# 返回:{"count": 10000}

# 告警明细列表
curl -s 'http://172.18.131.171:8180/api/alerts/aquila' -b cookies.txt

2.5 节点在线状态

用途: 获取所有节点的在线状态与基础资源信息,节点离线会影响集群健康。

curl -s 'http://172.18.131.171:8180/api/nodes' -b cookies.txt

返回示例(单节点):

{
  "id": 4,
  "hostName": "kv1",
  "ipAddress": "172.18.131.171",
  "clusterName": "KV(测试完记得恢复)",
  "rackName": "/default-rack",
  "osName": "CentOS Linux",
  "arch": "x86_64",
  "logicalCoreCount": 16,
  "status": "ONLINE",
  "memTotal": 67386531840,
  "diskCount": 7
}

字段说明:

字段 含义
hostName / ipAddress 节点主机名 / IP
status 节点状态ONLINE(在线)/ OFFLINE(离线)
logicalCoreCount CPU 逻辑核数
memTotal 内存总量(字节)
diskCount 磁盘数

节点级健康检查项可通过 GET /api/nodes/{nodeId}/states 获取,结构与 2.2 一致。


三、服务健康状态检测

3.1 服务列表(全局健康一览)★

用途: 获取集群全部服务及其健康状态,用于一次性掌握所有服务的健康概况。

curl -s 'http://172.18.131.171:8180/api/services' -b cookies.txt

返回示例(单服务):

{
  "id": 20,
  "name": "HDFS1",
  "type": "HDFS",
  "version": "transwarp-9.3.3-final",
  "health": "HEALTHY",
  "installed": true,
  "monitored": true,
  "hasStaleConfig": true,
  "toRestart": false,
  "enableKerberos": true
}

关键字段说明:

字段 含义
id 服务 ID(后续接口需用到)
name / type 服务名称 / 类型(HDFS、YARN、KUNDB 等)
version 已安装版本
health 服务健康状态HEALTHY(健康)/ DOWN(异常)/ WARNING(告警)
monitored 是否纳入监控
hasStaleConfig 是否存在待重启生效的配置变更

判定逻辑:遍历返回数组,统计各 health 取值分布即可得到服务健康概览。

快速汇总示例(按健康状态分组):

curl -s 'http://172.18.131.171:8180/api/services' -b cookies.txt \
  | python -c "import sys,json; \
[print(f\"{s['health']:10s} {s['type']:18s} {s['name']}\") for s in json.load(sys.stdin)]"

3.2 服务详情与健康检查项 ★

用途: 获取单个服务的详情,其中 states 字段为该服务的健康检查项明细(运行检查、就绪检查等)。

curl -s 'http://172.18.131.171:8180/api/services/20' -b cookies.txt

返回示例:

{
  "states": [
    {
      "title": "运行检查",
      "type": "DAEMON_CHECK",
      "status": "HEALTHY",
      "description": "9个角色健康,0个角色不可用,0个角色不健康"
    },
    {
      "title": "就绪检查",
      "type": "VITAL_SIGN_CHECK",
      "status": "HEALTHY",
      "description": "8个角色健康,0个角色不可用,0个角色不健康,0个角色在退役中,0个角色已退役"
    }
  ],
  "id": 20,
  "type": "HDFS",
  "name": "HDFS1",
  "version": "transwarp-9.3.3-final",
  "health": "HEALTHY"
}

字段说明:

字段 含义
states[].title 检查项标题(运行检查 / 就绪检查)
states[].type 检查类型:DAEMON_CHECK(进程存活)、VITAL_SIGN_CHECK(就绪/可用性)
states[].status 检查状态HEALTHY / WARNING / DOWN
states[].description 检查结果描述(含健康/不可用/不健康角色计数)
health 服务整体健康状态(汇总值)

states 数组为空或全部 HEALTHY 即代表服务健康;description 中"不可用""不健康"角色计数 > 0 时需进一步用 3.3 定位。

3.3 服务角色健康明细 ★

用途: 当服务存在不健康角色时,定位到具体角色、所在节点、检查结果与详情,是服务健康排障的核心接口。

curl -s 'http://172.18.131.171:8180/api/services/20/rolesHealths' -b cookies.txt

返回示例(单条):

{
  "roleId": 141,
  "node": "kv2",
  "roleType": "HDFS_DATANODE",
  "roleName": "Data Node",
  "category": "DAEMON_CHECK",
  "categoryTitle": "运行检查",
  "result": "HEALTHY",
  "detail": "kv2节点default命名空间中角色Data Node(hadoop-hdfs-datanode-hdfs1)正在运行:hadoop-hdfs-datanode-hdfs1-56b4cc566c-hsdj4(Running)",
  "checkTime": 1784194139647
}

字段说明:

字段 含义
roleId 角色实例 ID
node 角色所在节点
roleType / roleName 角色类型 / 显示名(如 HDFS_DATANODE / Data Node
category 检查类别:DAEMON_CHECK(运行检查)、VITAL_SIGN_CHECK(就绪检查)
result 角色健康结果HEALTHY / UNHEALTHY / UNAVAILABLE / DECOMMISSIONED / DECOMMISSIONING
detail 检查结果详情
checkTime 最近检查时间(毫秒时间戳)

3.4 服务角色类型与分布(辅助)

用途: 了解服务的角色构成与在各节点的分布,辅助健康评估。

# 服务角色类型
curl -s 'http://172.18.131.171:8180/api/services/20/roleTypes' -b cookies.txt
# 返回:[{"typeName":"HDFS_NAMENODE","friendlyName":"Name Node"}, ...]

# 角色在各节点的分布
curl -s 'http://172.18.131.171:8180/api/services/20/roleDistribution' -b cookies.txt

roleDistribution 返回示例:

{
  "kv1": ["Name Node"],
  "kv2": ["Data Node", "Journal Node", "Name Node"],
  "kv3": ["Data Node", "Journal Node"],
  "kv4": ["Data Node", "Httpfs", "Journal Node"]
}

3.5 单角色健康明细

用途:roleId 查询单个角色的健康检查明细(roleId 可从 3.3 或 GET /api/serviceRoles?serviceId={id} 获取)。

curl -s 'http://172.18.131.171:8180/api/serviceRoles/141/healths' -b cookies.txt

返回结构与 3.3 一致。


四、健康状态取值速查

4.1 服务 / 集群健康状态(health / status

取值 含义 说明
HEALTHY 健康 所有检查通过
WARNING 告警 存在非致命问题,需关注
DOWN 异常 服务不可用或关键检查失败

4.2 角色健康结果(result

取值 含义
HEALTHY 健康
UNHEALTHY 不健康
UNAVAILABLE 不可用
DECOMMISSIONING 退役中
DECOMMISSIONED 已退役

4.3 告警级别(severity / aquilaLevel

取值 含义
CRITICAL / L1~L2 严重,需立即处理
WARNING / L3 一般,定期观察
UNKNOWN / L4 未知

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。