进程诊断
进程诊断
功能描述
分析当前操作系统的进程信息,以发现进程占用系统资源过大或僵尸进程情况,在指定时间段内下发进程诊断命令,返回结果数据,包含的信息如下:
时间段内CPU使用率最多的三个进程(进程ID、进程名、进程状态、CPU使用率最大值、最小值、平均值)
时间段内内存使用率最多的三个进程(进程ID、进程名、进程状态、内存使用率最大值、最小值、平均值)
时间段内出现过的所有僵尸进程(进程ID、进程名和进程状态)
上报频率:每次在完成诊断任务后立即上报
1. 请求消息
1.1 topic
topic示例:/v1/devices/DGRI20239999/diagnostics/command
Topic
/v1/devices/{DeviceSn}/diagnostics/command
消息发送方
物联网平台
消息接收方
网关设备
1.2 请求消息payload
数据域
数据类型
是否必选
描述
mid
stirng
是
消息ID,推荐使用uuid, 请求和应答匹配,用来匹配请求和应答消息和去重
msgTime
string
是
消息发送时间戳,RFC3339标准,例如:1985-04-12T23:20:50.52Z
zone
string
否
设备部署的区域,例如ZONE3
node
string
否
设备部署的节点,例如440000
requestId
string
否
微服务链路追踪用的标识
deviceSn
string
是
设备ESN码,用于唯一标识设备
deviceId
string
否
统一物联网平台分配的设备id,据说可能会重复,不能唯一标识设备
service
string
是
服务名称。这里固定为:diagnostics
cmd
string
是
具体操作方法,这里固定为:processDiagnostics
params
jsonObject
是
对象内容
params结构体说明
字段名
必选/可选
类型
参数描述
duration
必选
string
诊断运行的时间,秒级以s表示,分钟以min表示
请求示例
{"mid": "70001fee-4d6e-11ee-be56-0242ac120002","msgTime": "2023-07-06T15:06:38Z","zone":"设备部署的区域","node":"设备部署的节点","requestId":"requestId1","deviceSn": "DGRI20239999","deviceId": "A1234456","service": "diagnostics","cmd": "processDiagnostics","params": {"duration": "10s"}}
2. 应答消息
2.1 Topic
Topic
/v1/devices/diagnostics/response
消息发送方
网关设备
消息接收方
物联网平台
2.2 应答消息payload
数据域
数据类型
是否必选
描述
mid
string
是
消息ID,用于消息去重。
replyId
string
是
表示响应的是哪条请求指令,为该指令的mid,用来匹配请求和应答
msgTime
string
是
消息发送时间戳,采用RFC3339标准,例如:1985-04-12T23:20:50.52Z。
zone
string
否
设备部署的区域,例如ZONE3
node
string
否
设备部署的节点,例如440000
requestId
string
否
微服务链路追踪用的标识
deviceSn
string
是
设备ESN码,用于唯一标识设备
deviceId
string
否
统一物联网平台分配的设备id,据说可能会重复,不能唯一标识设备
code
uint16
是
标识应答的返回码批处理请求时,如果所有处理都成功,返回200如果有部分失败,返回400。取值如下:•200:请求成功。•400:请求消息错误,例如消息格式错误等。•404:不支持该操作。•429:请求太多。•500:服务端内部错误,由应用定义。
body
List<jsonObject>
否
详情
body结构体说明
字段名
必选/可选
类型
参数描述
pid
必选
uint16
进程pid
pname
必选
string
进程名称
status
必选
string
进程状态
cpuUsage/max
可选
number
诊断期间进程cpu占用率平均值
cpuUsage/min
可选
number
诊断期间进程cpu占用率最小值
cpuUsage/avg
可选
number
诊断期间进程cpu占用率平均值
memUsage/max
可选
number
诊断期间进程内存占用率平均值
memUsage/min
可选
number
诊断期间进程内存占用率最小值
memUsage/avg
可选
number
诊断期间进程内存占用率平均值
anomaly
必选
uint16
异常点情况,取值如下:•1:cpu占用率平均值超过异常点(80%)•2:mem占用率平均值超过异常点(80%)•3:僵尸进程 •0:表示正常
应答示例
在下发指令正确的情况,一般响应两次。
// 第一次响应
{
"mid": "54132",
"replyId": "54132",
"code": 100, // 指令接收成功,等待执行完成
"zone":"设备部署的区域",
"node":"设备部署的节点",
"deviceSn": "D23pigXo",
"deviceId": "A1234456",
"requestId":"xxxxxxxxxx",
"msgTime": "2023-07-06T15:06:38Z"
}
// 第二次响应
{
"mid": "54132",
"replyId": "54132",
"code": 200, // 请求成功
"zone": "设备部署的区域",
"node": "设备部署的节点",
"deviceSn": "D23pigXo",
"deviceId": "A1234456",
"requestId": "xxxxxxxxxx",
"msgTime": "2023-07-06T15:06:38Z",
"body": [
{
"pid": 12345,
"pname": "dockerd",
"status": "Running",
"cpuUsage": {
"max": 100.0,
"min": 50.0,
"avg": 80.0
},
"anomaly": 1
},
// ...
{
"pid": 12346,
"pname": "dockerd1",
"status": "Running",
"memUsage": {
"max": 100.0,
"min": 50.0,
"avg": 80.0
},
"anomaly": 2
},
{
"pid": 54321,
"pname": "test",
"status": "Zombie",
"anomaly": 3
}
]
}
最后更新于