qixiaoning
2025-09-04 87b55a899bc1b4bc7d5a0f8d6ad1a1ede233ebd1
系统监控模型进程统计实时监控摄像机名称为空问题修复
4个文件已修改
119 ■■■■ 已修改文件
camera-common/models/Record.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera-service/controllers/camera.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera-service/service/CamraUpdatesnashot.go 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sysinfo-service/service/proc.go 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera-common/models/Record.go
@@ -352,7 +352,7 @@
        []string{}, // 所有分区
        filterExpr,
        []string{"rule_id", "task_id", "is_waning", "zh_desc_class", "task_name", "event_level_name", "detect_num",
            "event_level_id", "video_point_id", "detect_id", "image_path",
            "event_level_id", "video_point_id", "video_point_name", "detect_id", "image_path",
            "video_path", "detect_time", "knowledge_id", "risk_description", "suggestion", "id", "is_desc"}, // 返回所有字段
        // client.WithLimit(pageSize),
        // client.WithOffset(offset),
camera-service/controllers/camera.go
@@ -1141,6 +1141,7 @@
            LikeDate:        v.LikeDate,
            VideoName:       v.CameraName,
            CameraAddr:      v.CameraName,
            CameraName:      v.CameraName,
        }
        //任务名称
camera-service/service/CamraUpdatesnashot.go
@@ -1,11 +1,12 @@
package service
import (
    "basic.com/fileServer/WeedFSClient.git"
    "basic.com/valib/logger.git"
    "encoding/base64"
    "strings"
    "time"
    "basic.com/fileServer/WeedFSClient.git"
    "basic.com/valib/logger.git"
)
/*以下属于旧版本地摄像机获取截图(国标摄像机底图无法刷新)
@@ -48,9 +49,9 @@
    // 暂时添加hik平台接口的rtsp转换功能.
    // 汇丰需求, 需要优化为通用功能. 暂时不影响正常rtsp地址
    if !strings.HasPrefix(rtsp, "rtsp://") && !strings.HasPrefix(rtsp, "/dev") {
        realRtsp = rtspTranslation(rtsp)
    }
    // if !strings.HasPrefix(rtsp, "rtsp://") && !strings.HasPrefix(rtsp, "/dev") {
    //     realRtsp = rtspTranslation(rtsp)
    // }
    var imgByte []byte
    var err error
sysinfo-service/service/proc.go
@@ -1,11 +1,11 @@
package service
import (
    "basic.com/pubsub/protomsg.git"
    "basic.com/valib/bhomedbapi.git"
    "regexp"
    "strings"
    "vamicro/sysinfo-service/models/gogpu"
    "basic.com/pubsub/protomsg.git"
    "basic.com/valib/bhomedbapi.git"
    "github.com/shirou/gopsutil/process"
)
@@ -13,21 +13,27 @@
const ProcName = "sysinfo-service"
var BasicProc = map[string]string{
    "analysis":      "算法处理单元",
    // "analysis":      "算法处理单元",
    "apiserver":     "basic接口服务",
    "decoder":       "视频解码服务",
    "elasticsearch": "分布式数据搜索引擎",
    "faceDetect":    "人脸识别服务",
    // "faceDetect":    "人脸识别服务",
    "file-service":  "文件服务",
    "pollcontrol":   "轮询管理",
    "ruleServer":    "规则处理单元",
    "dataProcess":   "规则处理单元",
    "pushServer":   "规则处理单元",
    // "dataProcess":   "规则处理单元",
    "schedule":      "调度进程",
    "sdkCompare":    "人脸比对服务",
    // "sdkCompare":    "人脸比对服务",
    "sshd":          "ssh服务端",
    "videopublish":  "实时视频推流服务",
    "videosvr.out":  "国标上级服务",
    "weed":          "分布式文件系统",
}
var ModleProc = map[string]string{
    "python smart_detect.py":         "目标检测模型",
    "/usr/bin/python qwen_detect.py": "图片解析模型",
    "python app.py":                  "对话检索模型",
}
type UsedMap map[int]int64
@@ -51,10 +57,9 @@
    Net  int32   `json:"net"`
}
func CollectAlgoProcess() []Proc {
    var procs []Proc
func CollectAlgoProcess() (rsp []Proc) {
    var gpuMemTotal int64
    var re = regexp.MustCompile(`-sdk=(\S+)`)
    // 统计gpu
    gpuPer := UsedMap{}
    gpuInfo, err := gogpu.Info()
@@ -74,35 +79,83 @@
    ps, _ := process.Processes()
    // 统计算法信息
    for _, p := range ps {
        if name, err := p.Name(); err == nil {
            if name == "analysis" {
                cmdLine, _ := p.Cmdline()
                if len(cmdLine) > 0 {
                    match := re.FindAllStringSubmatch(cmdLine, -1)
                    if len(match) > 0 && len(match[0]) > 1 {
    for k, v := range ModleProc {
                        proc := Proc{
                            Name: match[0][1],
                            Pid:  p.Pid,
                            Desc: match[0][1],
            Name: k,
            Desc: v,
                        }
        for _, p := range ps {
            if name, err := p.Cmdline(); err == nil {
                if name == k {
                    proc.Pid = p.Pid
                        proc.Cpu, _ = p.CPUPercent()
                        proc.Mem, _ = p.MemoryPercent()
                        proc.Gpu = gpuPer.Get(int(p.Pid))
                        procs = append(procs, proc)
                    }
                    break
                }
            }
        }
        rsp = append(rsp, proc)
    }
    return procs
    return
}
// func CollectAlgoProcess() []Proc {
//     var procs []Proc
//     var gpuMemTotal int64
//     var re = regexp.MustCompile(`-sdk=(\S+)`)
//     gpuPer := UsedMap{}
//     gpuInfo, err := gogpu.Info()
//     if err == nil {
//         for _, gpu := range gpuInfo.Info {
//             gpuMemTotal = gpuMemTotal + gpu.GpuMemoryTotal
//         }
//         for _, proc := range gpuInfo.Processes {
//             if _, ok := gpuPer[proc.Pid]; ok {
//                 gpuPer[proc.Pid] = gpuPer[proc.Pid] + int64(proc.UsedMem)
//             } else {
//                 gpuPer[proc.Pid] = int64(proc.UsedMem)
//             }
//         }
//     }
//     ps, _ := process.Processes()
//     // 统计算法信息
//     for _, p := range ps {
//         if name, err := p.Name(); err == nil {
//             if name == "analysis" {
//                 cmdLine, _ := p.Cmdline()
//                 if len(cmdLine) > 0 {
//                     match := re.FindAllStringSubmatch(cmdLine, -1)
//                     if len(match) > 0 && len(match[0]) > 1 {
//                         proc := Proc{
//                             Name: match[0][1],
//                             Pid:  p.Pid,
//                             Desc: match[0][1],
//                         }
//                         proc.Cpu, _ = p.CPUPercent()
//                         proc.Mem, _ = p.MemoryPercent()
//                         proc.Gpu = gpuPer.Get(int(p.Pid))
//                         procs = append(procs, proc)
//                     }
//                 }
//             }
//         }
//     }
//     return procs
// }
func CollectAppProcess() []Proc {
    var procs []Proc
    var gpuMemTotal int64