基于nuxt.js 搭建的监控系统

876 阅读1分钟

背景

纯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

部分截图

github 地址

client: github.com/bosscheng/n…

server: github.com/bosscheng/n…