网络监控 - 监控接口文档
1. 文档变更列表
| 日期 | 版本号 | 作者 | 描述 |
|---|---|---|---|
| 2025-11-17 | v1.0 | gu | init |
| 2025-11-25 | v1.1 | gu | 1. S_MONITOR_EVENT支持表示发送的CAN报文(增加了dbcMessageType、txStatusCode、txStatusReason三个字段类型) |
| 2025-12-31 | v1.2 | gu | 1. 增加实时解析参数,返回参数增加payload字段 |
| 2026-02-02 | v1.3 | gu | 1. 增加实时解析配置参数。2. 自动缓存启动过的配置参数 |
| 2026-02-02 | v1.4 | gu | 1. 调整实时解析配置参数 |
2. 请求地址
ws://192.168.127.128:9528/monitor?ip=127.0.0.1&port=61001
3. 客户端 → 服务端消息
3.1 B_MONITOR_START_REQ(启动监控)
{
"msgType": "B_MONITOR_START_REQ",
"payload": {
"monitor": {
"canEnabled": true,
"canChannels": [
{
"devIndex": null,
"channel": null,
"dbcFileId": null
}
],
"arxmlEnabled": true,
"bridgeEnabled": false,
"ethList": [
{
"eth": null,
"arxmlFileId": "108_arxml"
}
],
"structLengthConfig": 0,
"byteOrder": 0,
"realtimeParse": true,
"realtimeParseCanFilter": [
1,
232,
29182
],
"realtimeParseEthFilter": [
21222,
8269,
12121
],
"format": "blf",
"record": false
}
}
}
B_MONITOR_START_REQ 字段说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| msgType | string | 消息类型,固定为 "B_MONITOR_START_REQ" |
| payload | object | 监控启动请求的业务数据对象 |
| payload.monitor | object | 监控/抓包配置参数对象(WsMonitorRecordParamsDTO) |
| payload.monitor.canEnabled | boolean | 是否启用 CAN 抓包(true=启用,false=不启用) |
| payload.monitor.canChannels | array<object> | CAN 通道配置数组,每个元素为一个 CanChannelDTO |
| payload.monitor.canChannels[].devIndex | integer / null | CAN 设备索引;在 all 模式下可为空 |
| payload.monitor.canChannels[].channel | integer / null | 写入日志文件的通道号;在 all 模式下可为空 |
| payload.monitor.canChannels[].dbcFileId | integer | DBC 文件 ID,用于解析 CAN 报文 |
| payload.monitor.arxmlEnabled | boolean | 是否启用 ARXML(以太网 SOME/IP)解析 |
| payload.monitor.bridgeEnabled | boolean | 是否启用桥接模式 |
| payload.monitor.structLengthConfig | integer | 解析使用的结构体长度 |
| payload.monitor.byteOrder | integer | 字节序:0标识大端,1标识小端 |
| payload.monitor.realtimeParse | boolean | 是否开启实时解析 |
| payload.monitor.ethList | array<object> | 以太网抓包/解析配置数组,每个元素为一个 EthItemDTO |
| payload.monitor.ethList[].eth | string / null | 网口名称,例如 eth1 / eth2,在 all 模式下可为空 |
| payload.monitor.ethList[].arxmlFileId | string | ARXML 文件标识(格式:<文件ID>_<文件类型>),用于 SOME/IP 解析 |
| payload.monitor.record | boolean | 是否开始录制:true=开始录制,false=仅建立监控配置但不录制 |
| payload.monitor.format | string | 录制文件的格式,可选值: "pcap"、 "blf" |
| payload.monitor.realtimeParseCanFilter | Set | 实时解析过滤规则:需要实时解析的CAN报文ID |
| payload.monitor.realtimeParseEthFilter | Set | 实时解析过滤规则:需要实时解析的服务serviceId |
all 模式约定说明:
- CAN all 模式: > -
payload.monitor.canEnabled = true>
payload.monitor.canChannels仅包含一个元素
- 该元素中
devIndex、channel为空- ETH all 模式: > -
payload.monitor.arxmlEnabled = true>
payload.monitor.ethList仅包含一个元素
- 该元素中
eth为空
4. 服务端 → 客户端消息
4.1 S_MONITOR_EVENT(监控事件)
说明:此消息为服务端实时推送的监控/抓包数据,包含 CAN、SOME/IP、FDBus、DDS 等协议的原始报文。
{
"msgType": "S_MONITOR_EVENT",
"success": true,
"payload": {
"logTs": "1757001993580179",
"logType": "SD",
"proto": "SOMEIP",
"serviceId": 4660,
"instanceId": 1,
"actionId": 4096,
"netIf": "eth1",
"statusCode": 0,
"sourceAddress": "192.168.1.10:30490",
"destAddress": "192.168.1.11:30500",
"canRawMessage": null,
"svcRawMessage": "0x10020A0BFFEE11...",
"sdPackages": [
{
"logType": "Offer",
"serviceId": 4660,
"instanceId": 1,
"majorVersion": 1,
"sdPacketTtl": 3,
"sdPacketSubscribeEventGroupId": null,
"sdPacketOptions": [],
"sdPacketEndpoints": []
}
]
}
}
S_MONITOR_EVENT 字段说明(按顺序排列)
| 字段名 | 类型 | 说明 |
|---|---|---|
| payload.logTs | string | 时间戳 |
| payload.logType | string | 日志类型:Normal=标准,X=扩展,XR=扩展远程,R=远程,SD=服务发现,Request=方法请求,Response=方法响应,OneShot=单次请求,Notification=事件通知,Status=错误状态 |
| payload.proto | string | 协议类型:CAN、CANFD、FDBus、SOMEIP、DDS |
| payload.serviceId | int | CAN/CANFD 为报文 ID;SOMEIP/FDBus 为服务 ID;DDS 无此字段 |
| payload.dbcMessageType | int | CAN/CANFD 消息类型,1代表TX,即发送报文;2代表RX,即接收报文; |
| payload.instanceId | int | SOMEIP/FDBus 的实例 ID;其他协议无此字段 |
| payload.actionId | int | SOMEIP/FDBus 的方法 ID 或事件 ID |
| payload.netIf | string | 网络接口:CAN/CANFD=设备号;SOMEIP/FDBus=eth1/eth2 |
| payload.statusCode | int | 状态码(0 表示成功) |
| payload.txStatusCode | int | CAN发送报文状态码,0 表示成功。 |
| payload.txStatusReason | string | CAN发送报文错误原因 |
| payload.sourceAddress | string | 源地址(ip:port,仅 SOMEIP/FDBus) |
| payload.destAddress | string | 目标地址(ip:port,仅 SOMEIP/FDBus) |
| payload.canRawMessage | string | CAN/CANFD 原始报文 |
| payload.svcRawMessage | string | SOMEIP/FDBus 原始以太网报文 |
| payload.payload | string | 反序列化结果 |
| payload.sdPackages | array | SD 服务发现报文数组,仅在 logType=SD 时出现 |
| payload.sdPackages[].logType | string | SD 子类型,枚举如下:Offer=提供服务,Find=查找服务,SubAck=订阅确认,SubNack=订阅拒绝,StopOffer=停止提供服务,Subscribe=订阅事件,Unsubscribe=取消订阅事件。 |
| payload.sdPackages[].serviceId | int | SD 服务 ID |
| payload.sdPackages[].instanceId | int | SD 实例 ID |
| payload.sdPackages[].majorVersion | int | 服务主版本号 |
| payload.sdPackages[].sdPacketTtl | int | 报文 TTL(Time To Live) |
| payload.sdPackages[].sdPacketSubscribeEventGroupId | int/null | 订阅事件组 ID(仅在订阅相关类型出现) |
| payload.sdPackages[].sdPacketOptions | array | SD 报文附带的选项列表 |
| payload.sdPackages[].sdPacketEndpoints | array | SD 报文端点列表 |
说明:本消息内容为网络监控原始数据,不包含反序列化结果;不同协议下部分字段可能为空或不存在。