README.md 3.2 KB

vproc

概述

类似linux proc系统,以文件为媒介。应用程序可以定义多个状态值(key/value),在程序运行过程中持续更新到文件中。外部可随时读取文件查询状态值。程序开发者或运维者可以更好的掌控程序的运行状态。

所有key值均采用 app.[group1.gourp2...groupn].item方式组织。末端item为文件,记录监测项的值,前面是多级目录。比如key值vaserver.va0.cameraname,记录状态值的文件为VPORC_ROOT/vaserver/va0/cameraname。 一个监测项对应一个文件

vproc是实现上述功能的命令行工具,python编写

vproc提供的功能

  1. 应用程序调用vproc脚本写状态值。

  2. 查询指定key的value值,输出到屏幕。利用此功能,实现了zabbix查询监测项的值。汇总起来统一在zabbix web上展示

  3. 提供类似top命令的状态查看功能,不联动zabbix,也能实时掌控自己应用程序的运行状态。

使用方法

vproc工具有4个命令。

  • 写:
  # 此命令将创建文件 ROOT_VPROC/app/group1/group2/item,文件内容为value1
  ./vproc write --key=app.group1.gourp2.item --value=value1
  • 读:
  # 将ROOT_VPROC/app/group1/group2/item文件内容打印出来
  ./vproc read --key=app.group1.gourp2.item
  • 重置:
  # 删除ROOT_VPROC/app/group1/目录。相当于重置状态值
  ./vproc clean --path=app.group1
  • 查看:
  # 类似top,每隔1秒刷新输出一次状态值。参数path可以是任意级别,输出的监测项是path下的所有监测项。
  ./vproc watch --path=app.group1

注意事项

  • 应用程序中单个监测项更新状态频率不宜过快。建议间隔时间1分钟以上

注意: 建议在程序(以及能代表一组的流程)启动时、关闭时重置状态,避免旧的状态值干扰

vproc 典型使用流程,拿vaserver举例:

定义监测项:

  • vaserver.license

  • vaserver.event_count(发出了多少事件)

  • vaserver.va0.taskname(分析通道0的任务名称)

  • vaserver.va0.playok (分析通道0视频是否点播成功)

应用程序写值

vaserver启动和退出时应调用


  # 清理旧状态

  ./vproc clean --path=vaserver

vaserver启动、关闭一个va时(假设是编号0)应调用

  # 清理旧状态

  ./vproc clean --path=vaserver.va0

license校验状态时

    # 成功写1 失败写0
  ./vproc write --key=vaserver.license --value=1

执行一个任务,打开了一个通道

  # 然后将任务信息状态更新
  ./vproc write --key=vaserver.va0.taskname --value=taskname1

视频第一帧图像回调到va0

  ./vproc write --key=vaserver.va0.playok --value=1

xx秒没有图像回调到va0

  ./vproc write --key=vaserver.va0.playok --value=0

调试阶段在命令行查看状态

开启一个命令行,运行

./vproc watch --key=vaserver

类似top命令,每隔1秒更新一次各状态值

衔接zabbix

zabbix_agentd会调用


./vproc read --key=vaserver.license

# 其他值
...

所有状态值汇总到zabbix server中,在web上统一显示所有被检测主机的状态值。vproc是集群监测的一个基石