背景
纯nodejs 搭建的监控系统。
依赖
client
- shelljs
- node-schedule
- socket.io-client
server
- nuxt
- koa
- element-ui
- mongoose
- echarts
- socket.io
client
通过配置定时任务的方式,执行 shell 执行,然后往服务器端发送监控信息(websocket)。
收集的数据
cpu
收集 cpu 使用情况。
使用的是 top
指令。
具体指令:top -b -n 1 | grep Cpu | awk '{print $2}'|cut -f 1
内存
其中包括: 总内存, 已用内存, 空闲内存, 缓冲(buffer), 缓存(cache)
使用的是 free
指令。
具体指令:free -wm | grep "Mem" | awk '{print $2,$3,$4,$6,$7}' OFS=","
日志信息
主要通过监听文件变化,发送日志到服务器。
主要基于 fs
指令。
网络
主要监听网络的下载带宽和上传带宽。
使用的是 iftop
指令。
具体指令:iftop -Pp -Nn -t -L 100 -s 1 -B|grep "Total send rate:"|awk '{print $4}'
系统基本情况
主要监听 currentTime, runningTime,users等信息。
使用的是 uptime
指令。
具体指令 : uptime
监听运行程序情况
主要监听的是监听程序的 cpu 占用率 和 内存占用情况。
具体指令:top -b -n 1 |grep ${programName}|awk '{print $6,$9}' OFS=","
server
主要功能
dashboard
显示client 客户端实时信息(websocket 实时上传的数据)。
节点配置
主要配置client 客户端信息,需要监听的客户端的IP 信息。
历史记录
主要记录dashboard的历史记录
日志
主要记录程序的 log 日志
DOC
监控指标
- 访问特定域名的PV和UV量
- 机器的硬件情况(CPU,内存,磁盘等)
- 特定域名下,各个URL的请求次数,响应时间信息
核心功能
- 收集信息,有专门用于采集信息的程序用来采集信息
- 存储信息,把采集到的信息存储到mongo数据库中
- 展示信息,使用echarts将信息图表化
- 清理信息,无需进行长期存储的信息定时清除
信息获取
Nginx信息获取使用了开源项目OpenResty