进程诊断

进程诊断

功能描述

分析当前操作系统的进程信息,以发现进程占用系统资源过大或僵尸进程情况,在指定时间段内下发进程诊断命令,返回结果数据,包含的信息如下:

  • 时间段内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
        }
    ]
}

最后更新于