安全监控工具之WGCLOUD

379 阅读15分钟

WGCLOUD介绍

WGCLOUD设计思想为新一代极简运维监控系统,提倡快速部署,降低运维学习难度,全自动化运行,无模板和脚本。

WGCLOUD基于微服务springboot架构开发,是轻量高性能的分布式监控系统,核心采集指标包括:cpu使用率,cpu温度,内存使用率,磁盘容量,磁盘IO,硬盘SMART健康状态,系统负载,连接数量,网卡流量,硬件系统信息等。支持监测服务器上的进程应用、文件防篡改、端口、日志、DOCKER容器、数据库、数据表等资源。支持监测服务接口API、数通设备(如交换机、路由器、打印机)等。自动生成网络拓扑图,大屏可视化,web SSH(堡垒机),统计分析图表,指令下发批量执行,告警信息推送(如邮件、钉钉、微信、短信等)。

WGCLOUD的特点:

  1. V2.3.7放弃了之前版本的sigar方式获取主机指标,采用流行的OSHI组件来采集主机指标
  2. 采用服务端和代理端协同工作方式,更轻量,更高效,可支持数千台主机同时在线监控
  3. server端负责接受数据,处理数据,生成图表展示。agent端默认每隔2分钟(时间可调)上报主机指标数据
  4. 支持主流服务器平台安装部署,如Linux, Windows,macOS,Unix等
  5. WGCLOUD采用主流技术框架SpringBoot+Bootstrap,完美实现了分布式监控系统,为反哺开源社区,二次开源
  6. 当前仓库为开源版,v3.x版本为商业版(免费但不开源哈),生产环境建议部署商业版,商业版功能、性能更优秀

WGCLOUD的官网

www.wgstart.com

Github仓库

github.com/tianshiyebe…

视频

B站WGCLOUD相关视频地址,space.bilibili.com/549621501/v…

WGCLOUD下载和安装

WGCLOUD下载

请前往《下载中心》下载对应的安装版本。下载中心如图所示:

WGCLOUD安装

前置说明

WGCLOUD包括:server为服务端(或主控端),agent为客户端(探针端、被控端)。

WGCLOUD是绿色版本,非侵入式,解压即可运行,是完全自主私有化部署的监控平台,不依赖外网,局域网、内网也可以部署。

1、server

server的JDK环境

server所在主机需要JDK环境(JDK1.8、JDK11都可以),OpenJDK也可以,更高版本JDK也支持,一般推荐使用JDK1.8或JDK11,这里我们使用JDK1.8。

因server使用java开发,所以server所在主机需要JDK环境,如已安装则跳过。

如下命令,检测是否安装JDK,输出类似下面结果,说明已安装。

Server的数据库环境

server需要数据库来存贮数据,支持MySQL、MariaDB、PostgreSQL、Oracle这四种数据库,选择其中任一种作为数据源即可,如果已安装则跳过。

2、agent

agent所在主机不需要JDK、不需要JDK、不需要JDK

  • agent所在主机不需要JDK及其他依赖,解压后可直接启动运行
  • agent对linux要求为:内核版本2.6.23或更高,CentOS/RHEL 6.0以上
  • agent对windows要求为:Windows Server 2008 R2,2012,2016,2019,2022,Windows 7,Windows 8,Windows 10,Windows 11
  • macOS目前可以获取系统信息、内存、cpu,暂不能获取磁盘信息,其他验证中

不管是server还是agent,都不需要编译,都是解压后,就可以启动运行了,不会污染已有的系统任何功能和文件。

安装包解压和目录结构简述

1、解压

Linux解压命令如下,Windows就用解压软件打开压缩包wgcloud-v3.4.6.zip就可以了

tar -xvf wgcloud-v3.4.6.tar.gz

2、安装包目录结构说明

部署说明

  1. 如果server无法访问到被监控的数据源、服务接口、数通PING和SNMP设备、FTP/SFTP,怎么办
  2. server和agent部署都是解压后,对配置文件稍作必要修改,就可以启动运行了,不用编译
  3. 建议将agent部署到所有被控主机的相同目录下,这样以后方便管理和升级
  4. server端只部署一个就行,所有agent向这个server单向上报指标数据
  5. 有多少台主机需要监控,就部署多少个agent(即使是server主机需要监控也要启动agent),如何在监控主机上单独部署agent
  6. server和agent需要保持相同的版本
  7. 监控主机信息由agent自动采集上报,因此server端主机列表页面不能添加主机。agent部署好启动后,就可以在【主机管理】页面看到监控主机了
  8. wgcloud-daemon-release为守护进程,执行server/start.sh会同时启动wgcloud-server-release.jar和wgcloud-daemon-release,守护进程不要关闭,server要和守护进程进行通信
  9. server和agent所在主机系统时间需要保持一致,即使有差异,时间差应不超过15个小时(此时间差内agent打印防篡改校验失败信息,请忽略即可,不影响监测采集)
  10. 请注意不要编辑/修改server/wgcloud-server-release.jar,否则agent日志将出现防篡改校验失败的信息,达到一定周期后将不再上报数据
  11. 如果agent不能直连访问server,可以通过代理wgcloud-proxy,实现将数据中转上报给server,查看说明
  12. 如果是在Windows部署运行server,尽量不要让server所在目录路径中有空格(如C:\Program Files (x86)\wgcloud),有时候低版本windows会因路径中有空格而导致启动不了的问题
  13. 提示:server和agent可以混用,只要保持同一版本即可。即server运行在linux上,agent可以运行在linux也可运行在windows上,反之也可以

初始化数据库,导入或运行sql文件(server需要用数据库来存贮监控数据)

操作步骤:

1. 本产品支持的数据库(数据源):MySQL(MySQL 5.X和MySQL 8.X都可以)、MariaDB、Oracle、PostgreSQL(推荐10版本或以上)。以上数据库任选一种即可

2. 创建数据库,名称为wgcloud,字符集设置为utf8即可

3. 在wgcloud数据库,导入或运行安装包里的对应sql文件,推荐使用Navicat客户端工具导入 mysql和MariaDB数据库导入wgcloud-v3.4.6/wgcloud-MySQL.sql文件

PostgreSQL数据库导入wgcloud-v3.4.6/wgcloud-PostgreSQL.sql文件

Oracle数据库导入wgcloud-v3.4.6/wgcloud-Oracle.sql文件

4. 初始化数据库完成

server配置文件说明(修改后需重启server生效,不用重启agent)

1、配置文件server/config/application.yml

        配置文件server/config/application.yml,除MySQL数据库连接信息(配置文件18-20行)需要修改外,其他暂时默认即可,后续可根据实际场景再进行调整

(1)将MySQL数据库连接信息,改为自己的实际信息。PostgreSQL连接配置说明Oracle连接配置说明

注意:如果MySQL和server不在同一个主机,需要配置允许MySQL的root用户远程访问:MySQL 5.7或5.6说明MySQL8说明

(2)管理员账号/密码,默认:admin/111111,可以修改为自己喜欢的账号/密码,暂时默认即可

(3)wgToken为server和agent通信密钥,server和agent配置文件中的wgToken值要保持一致,暂时默认即可

(4)9999为server的web访问端口,可以修改为其他端口(不能和守护进程wgcloud-daemon-release的端口相同,守护进程端口默认9997,可在server/config/daemon.properties修改),同时访问时也用修改后的端口,暂时默认即可

(5)如果要使用web ssh,默认端口9998,那么server主机的9998端口要放行。web ssh开关、端口都在下面配置文件修改,暂时默认即可

注意:yml文件格式规则,每个配置项冒号后需要保留一个英文空格。另外除数据库连接信息需要关注,其他都可以暂时默认

提示:若server主机的防火墙或安全组在运行,需放行这2个端口:9999(sever web页面访问)、9998(web ssh端口,不用web ssh可不开启),查看Linux防火墙开启端口说明

server:
  port: 9999
  servlet:
    session:
      timeout: 120m
#日志文件输出路径
logging:
  file:
    path: ./log
# 数据库 相关设置
spring:
  application:
    name: wgcloud-server
  datasource:
    #如果数据库连接mysql 8.x,driver-class-name建议改为:com.mysql.cj.jdbc.Driver,若是mysql 5.x则保持默认即可
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/wgcloud?characterEncoding=utf-8&characterSetResults=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true
    username: root
    #如果密码含有特殊符号,比如.!这种符号,可能会有问题,两边用单引号包裹起来,没有错误就不用关注了
    password: mysql
    hikari:
      validationTimeout: 3000
      connectionTimeout: 60000
      idleTimeout: 60000
      minimumIdle: 10
      maximumPoolSize: 10
      maxLifeTime: 60000
      connectionTestQuery: select 1
  mvc:
    static-path-pattern: /static/**
  thymeleaf:
    cache: false
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml


#自定义配置参数
base:
  #管理员登陆账号
  account: admin
  #管理员登陆账号的密码
  accountPwd: 111111
  #通信token,agent端和此保持一致
  wgToken: wgcloud
  #每页显示多少条数据,建议不小于10
  pageSize: 20
  #是否开启web ssh客户端,yes开启,no关闭
  webSsh: yes
  #web ssh客户端的服务端口
  webSshPort: 9998
  #守护进程访问url,server服务使用,agent不使用,若守护端口修改,那此处的端口也要同步修改下(一般保持默认即可)
  daemonUrl: http://localhost:9997
  #是否开启公众看板,yes开启,no关闭,开启后看板页面无需登陆
  dashView: yes
  #是否开启数据开放接口,yes开启,no关闭
  openDataAPI: yes
  #公众看板页面主机IP是否开启脱敏显示,yes开启,no关闭
  dashViewIpHide: yes
  #是否开启大屏展示看板,yes开启,no关闭,开启后看板页面无需登陆
  dapingView: yes
  #是否自动闭合左侧菜单,yes是,no否
  sidebarCollapse: yes
  #是否在列表页面显示告警次数,yes是,no否,一般不建议开启(至少不建议长期开启),因为可能会影响性能
  showWarnCount: no
  #是否开启指令下发(若关闭,将不能再新增和下发指令),yes是,no否
  shellToRun: yes
  #linux指令下发不能包含的敏感字符,小写即可,多个用逗号隔开
  shellToRunLinuxBlock: 'rm ,mkfs, /dev/,:(){:|:&};:,mv ,wget , install '
  #windows指令下发不能包含的敏感字符,小写即可,多个用逗号隔开
  shellToRunWinBlock: 'del ,delete ,format ,ren ,rd ,rd/s/q ,rmdir '
  #数据监控的sql语句,不能编写出现的敏感字符(即sql可能注入的关键字),小写即可,多个用逗号隔开
  sqlInKeys: 'execute ,update ,delete ,insert ,create ,drop ,alter ,rename ,modify '
  #数据表监控间隔,单位秒,默认60分钟
  dbTableTimes: 3600
  #服务接口监控间隔,单位秒,默认10分钟
  heathTimes: 600
  #ftp/sftp服务监控间隔,单位秒,默认10分钟
  ftpTimes: 600
  #数通设备PING监控间隔,单位秒,默认15分钟
  dceTimes: 900
  #数通设备snmp监测间隔,单位秒,默认20分钟
  snmpTimes: 1200
  #告警缓存时间(即静默时间)间隔(此时间段内同一告警通知不再重复发),单位秒,默认120分钟。此期间只是不推送告警到第三方(邮件钉钉微信等)了,系统监控扫描工作仍正常进行
  warnCacheTimes: 7200
  #监控数据保留天数,默认30天
  historyDataOut: 30
  #节点类型,master或slave,一个集群只能有一个master和N(最多31)个slave,如:slave1,slave2
  nodeType: master
  #是否开启使用标签,yes开启,no关闭
  hostGroup: no
  #是否开启成员账号管理(即每个成员可管理自己的资源),yes开启,no关闭,关闭后新增的成员不能再登录(管理员和只读账号可以登录)此功能需升级到专业版
  userInfoManage: no
  #server/logo/目录下的ico图标名称,32*32,如favicon.png,ico图片格式暂不支持(请转为png),此功能需升级到专业版
  icoUrl: favicon.png
  #server/logo/目录下的logo图标名称,120*120,如logo.png,此功能需升级到专业版
  logoUrl: logo.png
  #系统名称,如wgcloud运维监控系统,此功能需升级到专业版
  wgName: wgcloud运维监控系统
  #系统简称,如wgcloud,此功能需升级到专业版
  wgShortName: wgcloud
  #告警邮件标题前缀,此功能需升级到专业版
  mailTitlePrefix: '[WGCLOUD]'
  #告警邮件内容后缀,此功能需升级到专业版
  mailContentSuffix: 'WGCLOUD敬上'
  #是否显示页面底部版权、网址信息,yes显示,no不显示,此功能需升级到专业版
  copyRight: yes

agent配置文件说明(修改后需重启agent生效)

1、配置文件agent/config/application.properties

配置文件agent/config/application.properties,除serverUrl参数需要修改外,其他暂时默认即可,后续再根据实际场景调整

#wgcloud-server端访问地址,将下方替换为server主机IP和web端口即可,端口一定要写,即使是80也要写哈
serverUrl=http://localhost:9999

#本机ip或标识,可以为空,为空时候默认取本机IP,配置不要超过50个字符
bindIp=192.168.1.2

#通信token,请和server端配置的wgToken保持一致
wgToken=wgcloud

#给server端上报数据(主机指标)的频率,单位秒,个人版值不能小于120,专业版值最小可支持10但建议不小于30。此值建议不要大于600。除特殊业务场景外,建议上报频率不要少于1分钟
submitSeconds=120

#进程、端口、docker监控间隔时间,单位秒,个人版值不能小于300,专业版值不能小于10,但建议不小于30
hostAttachSeconds=300

#硬盘smart检测是否开启,yes开启,no关闭,开启时需要安装smartmontools工具才可用
smartOn=no

#是否允许agent执行server下发的指令,yes是,no否
shellToRun=yes

#是否监测异常进程,指cpu使用率或内存使用率大于90%的进程,yes是,no否
exceptionProcess=yes

#是否监测用户登录信息,yes是,no否
lastLoginInfo=yes

#agent日志文件保留天数,默认保留最近30天日志文件
logDays=30

#监控日志文件扫描间隔时间,单位秒,默认10分钟,个人版值不能小于600,专业版可以小于600
logCheckSeconds=600

#自定义监控项监控间隔时间,单位秒,默认10分钟,此功能需要升级到专业版
customDataSeconds=600

#带宽上下行速率指标监控的网卡名称(如eth0),多个网卡用逗号隔开,为空标识监控所有网卡(含虚拟网卡)
netInterface=

wgToken为agent和server通信的密钥,相当于密码,可以自定义为自己的配置密码(需要和server/config/application.yml中的wgToken值一致),暂时默认即可

提示:agent主动单向给server上报采集数据,agent主机不需要开启任何端口,因为server不会访问agent

agent自动获取主机IP不准确,agent主机IP会变化怎么办

2、注意

agent配置文件为properties类型,因此等号后面不需要保留空格

同一个版本的agent配置文件都是一样

3、其他说明

其他主机监控,查看如何在监控主机上部署agent

一键部署agent脚本说明(Linux版)

如果agent不能直连server,可以通过代理wgcloud-proxy,实现将数据转发上报给server

windows版agent的目录下的NSSM.exe文件,是一个用于注册系统服务的辅助工具,查看说明,暂时不用关注

windows版agent的目录下的regAgentService.bat批处理脚本,可以将agent注册为系统服务,直接双击运行(会自动调用上面NSSM工具)即可

启动服务和访问

1、server启动(进入server/目录启动)

(1)若是Linux平台,检查下面红框内的文件是否有可执行权限,若无,则赋给可执行权限

(2)Linux部署的server,使用指令 sh start.sh 启动服务(重启也用该指令),使用指令 sh stop.sh 停止服务

(3)windows部署的server,使用start.bat启动,启动后不可关闭黑窗口(尤其不要左键点击黑窗口,就会进入选择模式,就会阻塞运行,右击释放),停止服务关掉即可。也可以将server注册为windows系统服务,实现开机启动和隐藏黑窗口

(4) server启动完成大概需要10秒,注意:启动server,会同时守护进程wgcloud-daemon-relese,不要关闭守护进程

server运行的日志文件在server/log/,看到日志文件中有如下打印信息说明server启动完成

Started WgcloudServiceApplication in 13.655 seconds (JVM running for 14.998)

启动完成后,浏览器输入 http://127.0.0.1:9999 登录,将URL中的信息改为自己的server主机IP和web端口,默认登录账号/密码:admin/111111

2、agent启动(进入agent/目录启动)

(1)若是Linux平台,检查下面红框内的文件是否有可执行权限,若无,则赋给可执行权限

         

(2) Linux部署的agent,使用指令 sh start.sh 启动服务(重启也用该指令),使用指令 sh stop.sh 停止服务

(3)windows部署的agent,用管理员身份运行wgcloud-agent-release.exe,启动后不可关闭黑窗口,停止服务关掉即可。也可以将agent注册为windows系统服务,实现开机启动和隐藏黑窗口

(4)agent运行的日志文件在agent/log/

其他主机若需要监控,查看如何在监控主机上单独部署agent

3、部署完成

参考文档

《wgcloud安装说明》

《记一次windows部署wgcloud的过程》