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

# 背景

纯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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容