1 Star 1 Fork 0

xiaojin2630 / nvr_ipc_monit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

nvr_ipc_monit

介绍

一个用于监控NVR和IPC上下线及信息意外变更的监控工具。

最近我入职安防行业了,日常主职工作是测试视频录像机(NVR)的功能和稳定性。

NVR总是要搭配不同型号,不同能力的摄像头(IPC)一起工作,如: 由NVR下发配置到所有的IPC 由NVR集中预览所有IPC的视频 由NVR集中回放所有IPC的录像等。

我在负责NVR的测试工作中,其中一个重要测试工作就是NVR的稳定性性(如其死机、重启或不稳定的其它现象)等。 这里面就牵涉到,需要对测试环境中的所有NVR和IPC进行监控,如其IP地址保证不会意外被修改,其启动时间保证不会发生变更,临时性网络不可达需有相应记录或提示等。

所以我花了几天时间,开发了一个 简易的监控界面,这个工具临时称为dev_monit。

软件架构

基于C、Ruby和JS实现的一个B/S架构工具。

工作原理

在安防行业,厂商一般都会有一个搜索工具,用于搜索出当前LAN中自家NVR和IPC设备,方便进行一步管理(各设备IP地址修改、版本号、统一升级、修改密码等)
海康威视的叫SDAP。 https://www.hikvision.com/cn/support/tools/hitools/clea8b3e4ea7da90a9/
大华的叫ConfigTool。
我们的叫DM。

本人正是利用此工具的工作原理,使用C语言重写了搜索部分,工具称为st。主要用于识别当前所有的NVR、IPC及各自的启动时间,运行时间,当前IP地址等信息。

dev_monit,是一系列脚本,html文件、配置文件,st等组成。
本人前几年写过机房监控系统monit2,要比这个复杂很多。
dev_monit使用ruby语言实现了后端的数据采集(collector)、分析(ds)、分发(ws)。 
数据采集部分,定时运行st工具,获取监控清单设备的基本信息(如设备类型、型号、当前时间、启动时间、运行时间、当前地址);递交给分析模块(ds)
由ds处理后,再次递交给ws模块。由ws向将数据通过websocket技术,分发给各个客户端(主要是浏览器)。

关于ws和浏览器的交互

dev_monit启动后,会监控一个TCP端口(可自定义)上的HTTP请求和websocket请求。

如果是HTTP请求,会返回一个HTML页面给浏览器。这个页面包含了所有的NVR和IPC的信息。
如果是WS请求,调用ws模块,创建ws会话,将各NVR和IPC的变动信息通过websocket流载体分发给各浏览器。

特性

  • 部署简单;无需架设HTTP server和websocket server,只需运行ruby go.rb就能跑起来。
  • 实时性好;以往HTTP协议无法由server实现推送的问题,由websocket实现。哪个设备信息发生变化,最长在5秒内可以体现出来。基于websocket技术,可以达到实时推送,这是很多监控系统不具备的功能。
  • 无数据库;要监控的NVR和IPC直接将其mac地址和ip地址写在文本文件中即可。
  • 重点监控的信息,会在HTML中打上底色;如设备发生重启,和其IP地址发生变更,会打上黄色背景色;设备下线为红色。
  • 可以同时监控多个测试环境。一个测试环境一个表格,简单直观。

应用场景

  1. 用于监控NVR和IPC
  2. 基于此架构,稍做修改,可以监控任何设备(包括上下线,CPU,mem,应用可达等

界面截图

  • 主界面 输入图片说明

演示视频

  • 启动和websocket流报文.mp4
  • 设备下线和IP变更.mp4
  • 监控对象配置.mp4

空文件

简介

一个用于监控NVR和IPC上下线及信息意外变更的监控工具。 展开 收起
Ruby
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Ruby
1
https://gitee.com/xiaojin2630/nvr_ipc_monit.git
git@gitee.com:xiaojin2630/nvr_ipc_monit.git
xiaojin2630
nvr_ipc_monit
nvr_ipc_monit
master

搜索帮助