# 背景
纯nodejs 搭建的监控系统。
# 依赖
## client
- shelljs
- node-schedule
- socket.io-client
## server
- 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
## 部分截图
# github 地址
client: https://github.com/bosscheng/node-monitor-client
server: https://github.com/bosscheng/node-monitor-server