Contents
前言
在我的群站的实时健康监测及报警这一块,我一直使用的是uptime-kuma + bark server的组合(具体搭建及配置参见:docker系列 搭建基于bark server的消息推送服务器和docker系列 搭建基于uptime和bark的应用实时健康监测及报警系统)。
不过,讲道理,这个组合我最主要用到的还是实时报警功能,很少去看uptime-kuma的实时监测页面,原因有如下几点:
1、的确没有必要一直盯着uptime-kuma的实时监测页面看(除非像真甲方一样有专门的运维人员)
2、uptime-kuma的监控方式都是采用的外部探测的方式,角度较为单一,盯着看也看不出啥名堂,比如:某台设备流量多大?某个docker或者某台主机的资源消耗是否异常?哪些主机上有工作异常的进程?某台主机上某个进程占用的cpu、内存是多少?某台主机上的日志中是否有指定关键字的报错?某台主机上某个关键的文件是否被篡改过?某个数据库的某个表的内容是否达到某个阈值等等。
3、uptime-server本身的监控展现页面也比较单调,逼格颇低:
基于以上原因,uptime-kuma + bark server这一套组合我一直就只是当实时报警系统来用,就没觉得有实时监测方面的功能。
前几天忽然心血来潮,专门研究了下(免费的)运维监控系统,没想到还真让我找到一款符合我心意的:wgcloud,虽然略有瑕疵(免费版各功能的对象都有10个的上限),但是总体而言算是达到了我的要求:前面提到uptime-kuma不能做的都能实现,并且展现界面也有品味多了,最终效果如下:
本文(上篇)就详细记录一下wgcloud的部署过程,具体配置在下篇中介绍。
部署wgcloud
环境准备
安装java环境
WGCLOUD的server可以运行在JDK1.8、JDK11或更高版本JDK,OpenJDK也支持
我用的debian 12,所以采用如下步骤:
1、更新软件源
apt update
2、安装默认OpenJDK 11
apt-get install default-jdk
3、验证java是否安装成功
java -version
其他系统的安装方式参见官方说明:https://www.wgstart.com/help/docs7.html。
注:只有server端需要部署JDK,只是agent的主机不需要部署。
创建数据库(可选)
wgcloud需要使用数据库,支持的数据库(数据源):MySQL(MySQL 5.X和MySQL 8.X都可以)、MariaDB、Oracle、PostgreSQL(推荐10版本或以上)。以上数据库任选一种即可,也支持国产数据库openGauss和OceanBase。大家可以根据自己的使用习惯来进行选择,我其他的应用mariadb用得的比较多,所以有现成的,就直接选择mariadb了(mysql也可以,但是有选择的情况下永远优先mariadb)。
wgcloud需要利用现成的数据库(我这里是mariadb)中的对应库并进行初始化配置,如果还没有数据库,则需要新建。
创建新mariadb数据库的流程建议如下:
创建宿主机上需要挂载到mariadb容器中的目录
mkdir -p /docker/mariadb/db
创建mariadb容器
docker run --name=mariadb01 -d --restart=always \
-p 3306:3306 \ #映射宿主机的3306端口到容器的3306端口
-v /docker/mariadb/db:/var/lib/mysql \ # 挂载前面创建的宿主机目录到容器内部指定目录
-e MARIADB_ROOT_PASSWORD=123 \ #指定数据库root用户对应的密码,这个大家自行修改
mariadb:10.11
在mariadb中新建wgcloud库
具体请参考我另一篇文章:奇技淫巧系列 新建空数据库以及给对应用户赋予权限,下文中假定初始化后库名称、对应的用户名和密码均为"wgcloud"。
部署wgcloud server端和agent端
下载server端并解压缩
wgcloud在github的下载链接如下:https://github.com/tianshiyeben/wgcloud/releases,我安装时候最新版的releases是wgcloud-v3.5.1.tar.gz(记得是下server端)。另外,v3.x版本是免费不开源商业版,免费开源版我这个时候是v2.3.7。
下载完成后,将server端解压缩到特定目录,我这里就直接放在/root目录下,然后解压缩:
cd ~
tar -zxvf wgcloud-v3.5.1.tar.gz
解压缩后的目录wgcloud-v3.5.1.tar.gz的文件结构如下:
有以下注意事项:
1、server端目录里自带agent客户端,如果只是单agent的主机,也建议放在相同路径下,这样方便升级。
2、server和agent部署都是解压后,对配置文件稍作必要修改,就可以启动运行了,不用编译
3、server端只部署一个就行,所有agent向这个server单向上报指标数据
4、有多少台主机需要监控,就部署多少个agent(即使是server主机需要监控也要启动agent)
5、server和agent需要保持相同的版本
6、监控主机信息由agent自动采集上报,因此server端主机列表页面不能添加主机。agent部署好启动后,就可以在【主机管理】页面看到监控主机了
7、wgcloud-daemon-release为守护进程,执行server/start.sh会同时启动wgcloud-server-release.jar和wgcloud-daemon-release,守护进程不要关闭,server要和守护进程进行通信
8、server和agent所在主机系统时间需要保持一致,即使有差异,时间差应不超过15个小时(此时间差内agent打印防篡改校验失败信息,请忽略即可,不影响监测采集)
9、注意不要编辑/修改server/wgcloud-server-release.jar,否则agent日志将出现防篡改校验失败的信息,达到一定周期后将不再上报数据
10、如果agent不能直连访问server,可以通过代理wgcloud-proxy,实现将数据中转上报给server
11、如果是在Windows部署运行server,尽量不要让server所在目录路径中有空格(如C:\Program Files (x86)\wgcloud),有时候低版本windows会因路径中有空格而导致启动不了的问题
12、server和agent可以混用,只要保持同一版本即可。即server运行在linux上,agent可以运行在linux也可运行在windows上,反之也可以
初始化wgcloud库
/root/wgcloud-v3.5.1
目录中有3个sql文件:
因为我用的mariadb,所以初始化文件选择:
wgcloud-MySQL.sql
应用wgcloud-MySQL.sql文件的方式很多,以phpmyadmin为例:
初始化完成:
当然,也可以用命令行格式导入,如下:
mysql -u root -p -h 127.0.0.1 #数据库IP根据实际情况修改,如果非默认的3306,就用-P参数后加端口
use wgcloud;
source /root/wgcloud-v3.5.1/wgcloud-MySQL.sql
配置application.yml文件
wgcloud server的数据库指向由/root/wgcloud-v3.5.1/server/config/application.yml
文件里的如下内容决定:
我的实际配置如下:
"application.yml"文件中其他重要参数如下,包括管理员的用户名密码、web ssh、集群功能等,大家可以根据自己的需要进行修改,一般除了管理员的用户名、密码,其他保持默认即可:
#核心配置参数
base:
#管理员登陆账号
account: admin
#管理员登陆账号的密码
accountPwd: 111111
#是否开启免密登录,yes开启,no关闭,此功能开启需升级到专业版
openSSO: no
#server和agent的通信密钥,server和agent配置文件中的wgToken值要保持一致
wgToken: wgcloud
#每页显示多少条数据,建议不小于10
pageSize: 20
#是否开启web ssh客户端,yes开启,no关闭
webSsh: yes
#web ssh客户端的服务端口,如果要使用web ssh,那么server主机的9998端口要在防火墙放行,不用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
#指令下发不能包含的敏感字符,小写即可,多个用逗号隔开
shellToRunBlock: 'rm ,mkfs, /dev/,:(){:|:&};:,mv ,wget , install ,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
#监控数据趋势折线图,每个图表每次查询时最多展现的数据量,若数据量超过此值,系统则会自动均衡化处理数据,最终保留的数据量等于此值,主要为防止图表一次展示过多数据导致浏览器卡顿,配置为0表示不压缩均衡化处理数据
chartDataMaxShowValue: 4000
#节点类型,master或slave,一个集群只能有一个master和N(最多31)个slave,如:slave1,slave2
nodeType: master
#是否开启使用标签,yes开启,no关闭
hostGroup: no
启动服务端
cd /root/wgcloud-v3.5.1/server
ls -l
如果没有执行权限,使用如下命令添加:
chmod +x start.sh
chmod +x stop.sh
启动wgcloud的server端:
sh start.sh #重启也是用该命令,如需停止进程,则使用sh stop.sh
结果如下:
注1:启动server,会同时启动守护进程wgcloud-daemon-relese,不要关闭守护进程。
注2:如果部署wgcloud server端的主机有防火墙或者安全组,需要放开9999端口和9998端口(9998是web ssh端口,如果不需要可以不放开)。
启动agent端
agent也有对应的配置文件,其路径是:
/root/wgcloud-v3.5.1/agent/config/application.properties
在agent的配置文件里需要修改的只有serverUrl这一条,需要修改为server的地址,不过唯一例外的是server端本身的agent,可以不用修改:
注1:wgToken为agent和server通信的密钥,相当于密码,可以自定义为自己的配置密码(需要和server/config/application.yml中的wgToken值一致),暂时默认即可
注2:agent主动单向给server上报采集数据,agent主机不需要开启任何端口,因为server不会访问agent。
启动agent和上一节启动server是一样的,就是所在目录不一样:
cd /root/wgcloud-v3.5.1/agent
ls -l
启动wgcloud的agent端:
sh start.sh #重启也是用该命令,如需停止进程,则使用sh stop.sh
结果如下:
其他版本的agent请自行下载,就在server端下载的同一个release链接中。
如果需要设置agent开机启动,linux可以参看我另一篇文章:debian系列 设置命令或脚本开机启动的3种常见方式,macos可以通过将脚本加入登录项,win版的agent通过运行regAgentService.bat的批处理文件将agent注册为服务,然后直接将服务设置为开机启动即可,我这里就不多说了,都很简单。
下篇(功能篇)参见:家庭数据中心系列 通过wgcloud部署自己的运维监控系统(下):功能篇。