一、简介
WGCLOUD是一个高性能高并发的分布式监控系统,server基于springboot架构开发,agent采用go开发,核心模块包括:主机监控,ES集群监控,CPU监控,CPU温度监控,大屏看板,docker监控,网络流量监控,内存监控,业务数据监控(mysql,oracle,pg等),服务心跳检测,应用进程管理,磁盘IO监控,端口监控,日志文件监控,系统负载监控,监控告警信息推送。
1.采用服务端和客户端协同工作方式,更轻量高效,默认可支持500+主机监控。
2.server端负责处理数据,生成图表展示,告警信息推送。agent端负责定时(1分钟)上报主机数据。
3.支持主流平台安装部署,如Linux, Windows, Solaris, AIX, HP-UX等。
4.支持邮件告警,也支持自定义告警脚本执行,在脚本中可集成微信,钉钉,短信等告警方式。
5.server支持水平扩容,在集群状态下,可支持5000+主机在线监控。
6.支持多数据源监控,自定义sql脚本执行,实时监控业务数据变化。
7.公众看板服务,支持游客浏览主机监控概要信息,无需登陆,可随时开启关闭看板服务。
官网
官方文档
oschina
WGCLOUD首页、文档和下载 - 运维监控平台 - OSCHINA - 中文开源技术交流社区
git 源码下载
————————————————
二、MariaDb(Mysql)数据库安装、数据库初始化
登陆mysql
mysql -uroot -p【密码】
创建数据库
create database wgcloud;
选择新建的数据wgcloud
use wgcloud;
执行初始化脚本
source /root/wgcloud-v3.4.0/wgcloud-MySQL.sql;
三、server 配置
进入 wgcloud 的 server 目录并查看文件列表
进入 server 配置文件目录
[root@10-18-93-156 server]# cd config/
[root@10-18-93-156 config]# ll
总用量 12
-rw-r--r-- 1 root root 7854 2月 24 14:10 application.yml
-rw-r--r-- 1 root root 91 2月 24 14:10 daemon.properties
server配置文件说明
1.配置文件server/config/application.yml,除标红需要修改外,其他暂时默认即可,后续可根据实际场景再修改
将标红数据库连接信息,改为自己的mysql数据库连接信息
自定义登陆账号密码,如标红部分admin/111111,暂时默认即可
wgToken为server和agent通信密钥,server和agent配置要保持一致,暂时默认即可
如果想修改server访问端口,将9999改为自己的端口(不能和守护进程端口相同),同时访问时也用修改后的端口,暂时默认即可
server所在主机的9997端口(暂时默认即可)要开放给agent访问,否则agent日志里会出现防篡改校验失败的信息,agent会通过"http://server主机IP:9997"来获取防篡改校验信息,如何修改守护进程端口
server配置文件为yml格式,所有配置的地方冒号后必须紧跟一个空格,注意是空格。wgToken: wgcloud
如何实现微信告警和钉钉告警
编辑配置文件
[root@10-18-93-156 config]# vi application.yml
配置信息详情
server:
port: 9999
servlet:
session:
timeout: 120m
context-path: /wgcloud
#日志文件输出路径
logging:
path: ./log
# 数据库 相关设置
spring:
application:
name: wgcloud-server
datasource:
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 数据库密码,默认 111111】
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
#是否开启公众看板,yes开启,no关闭,公众看板页面无需登陆
dashView: yes
#数据表监控间隔,单位秒,默认60分钟
dbTableTimes: 3600
#服务接口监控间隔,单位秒,默认10分钟
heathTimes: 600
#告警缓存时间间隔(此时间段内不再重复告警),单位秒,默认60分钟
warnCacheTimes: 7200
#监控数据保留天数,默认10天
historyDataOut: 10
#节点类型,master或slave,一个集群只能有一个master和N个slave
nodeType: master
#server/logo/下的ico图标名称,32*32,如favicon.png,此功能需升级到专业版
icoUrl:
#server/logo/下的logo图标名称,120*120,如logo.png,此功能需升级到专业版
logoUrl:
#软件名称,如wgcloud运维监控系统,此功能需升级到专业版
wgName:
#简称,如wgcloud,此功能需升级到专业版
wgShortName:
#告警配置
mail:
#告警总开关,yes开启,no关闭
allWarnMail: yes
#监控主机内存使用率%报警值,超过此值即发送邮件报警
memWarnVal: 99
#监控主机cpu使用率%报警值,超过此值即发送邮件报警
cpuWarnVal: 99
#cpu温度报警值℃,超过此值即发送邮件报警
cpuTemperatureWarnVal: 92
#磁盘使用率%报警值,超过此值即发送邮件报警
diskWarnVal: 99
#不需要告警磁盘在此屏蔽,多个盘符用,隔开,如/boot,/dev
diskBlock: /dev
#内存告警,yes开启,no关闭。总开关开启后,此处设置才会生效。以下开关均遵循此规则。
memWarnMail: yes
#CPU告警,yes开启,no关闭
cpuWarnMail: yes
#CPU温度告警邮件,yes开启,no关闭
cpuTemperatureWarnMail: yes
#磁盘使用率告警,yes开启,no关闭
diskWarnMail: yes
#主机下线告警,yes开启,no关闭
hostDownWarnMail: yes
#进程下线告警,yes开启,no关闭
appDownWarnMail: yes
#服务接口告警,yes开启,no关闭
heathWarnMail: yes
#数据源连接失败,告警,yes开启,no关闭
dbDownWarnMail: yes
#日志文件监控,告警,yes开启,no关闭
fileLogWarnMail: yes
#端口telnet不通,告警,yes开启,no关闭
portWarnMail: yes
#告警脚本绝对路径(若配置脚本,无论是否配置过邮件,都会执行该脚本),可以为空,参考模板:server/template/sendMsg.sh
warnScript:
进入 wgcloud 的 server 并启动 server 服务
cd /root/wgcloud-v3.4.0/server
启动服务
[root@10-18-93-156 server]# ./start.sh
启动效果
./wgcloud-server-release.jar
wgcloud-server程序开始启动
./wgcloud-daemon-release
wgcloud-daemon程序开始启动
四、编辑 客户端(被监控服务器)的配置文件
进入客户的文件目录
[root@localhost ~]# cd /root/wgcloud-v3.4.0/agent
编辑客户剬配置文件
cd config/
[root@10-18-93-156 config]# vi application.properties
agent配置文件说明
1.配置文件agent/config/application.properties,除标红需要修改外,其他暂时默认即可
#wgcloud-server端访问地址,端口一定要写,即使是80也要写哈
serverUrl=http://192.168.11.200:9999
#本机ip,可以为空,为空时候默认取计算机名称,计算机名称不要超过50个字符
bindIp=192.168.11.200
#通信token,请和server端配置的wgToken保持一致
wgToken=wgcloud
#给server端上报数据频率,单位秒,个人版值不能小于60,专业版值不能小于30
submitSeconds=120
#server主机的守护进程端口
daemonPort=9997
wgToken为agent和server通信的密钥,相当于密码,可以自定义为自己的配置密码,暂时保持默认即可
[root@10-18-93-156 config]# cat application.properties
#v3.4.0
#wgcloud-server端web访问地址,将下方替换为server主机IP和端口即可,端口一定要写,即使是80也要写哈
serverUrl=http://localhost:9999
#本机ip,可以为空,为空时候默认取本机IP,可以配置为字符或数字,不要超过50个字符
bindIp=
#通信token,请和server端配置的wgToken保持一致
wgToken=wgcloud
#给server端上报数据频率,单位秒,个人版值不能小于120,专业版值不小于30。此值建议不要大于600
submitSeconds=30
#硬盘smart检测是否开启,yes开启,no关闭,开启时需要安装smartmontools工具
smartOn=no
#是否允许agent执行server下发的指令,yes是,no否
shellToRun=yes
#agent运行日志文件保留天数,默认保留最近30天日志文件
logDays=30
#监控日志文件扫描间隔时间,单位秒,默认10分钟,个人版值不能小于600,专业版可以小于600
logCheckSeconds=600
#关联成员登录账号,默认为空
account=
#带宽上下行速率指标监控的网卡名称(如eth0),多个网卡用逗号隔开,为空标识监控所有网卡(含虚拟网卡)
netInterface=
注意
agent配置文件为properties类型,因此等号后面不需要保留空格
若无批量上传工具,可以使用常用工具里的批量上传工具
进入客户端,启动客户端服务
[root@10-18-93-156 agent]# cd /root/wgcloud-v3.4.0/agent
启动服务
[root@10-18-93-156 agent]# ./start.sh
五、启动服务注意事项
1.server启动
注意:linux检查文件是否有可执行权限,若无,则赋给可执行权限
start.sh启动服务,stop.sh停止服务
win下用start.bat启动,启动后不可关闭黑窗口,停止服务关掉黑窗口即可
启动后通过http://192.168.1.1:9999/wgcloud访问登陆页面,把192.168.1.1改为自己的实际IP和端口,默认登陆账号密码:admin/111111
2.agent启动
注意:linux检查文件是否有可执行权限,若无,则赋给可执行权限
start.sh启动服务,stop.sh停止服务
win下用管理员身份启动wgcloud-agent-release.exe,启动后不可关闭黑窗口,停止服务关掉黑窗口即可,若需要注册windows服务,请点击常用基础工具集合下载 - WGCLOUD
六、浏览器配置、展示
地址栏录入登录地址
http://10.18.93.156:9999/wgcloud
账号、密码是上文配置的
默认
#登陆账号
account: admin
#登陆账号的密码
accountPwd: 111111
监控概况
主机管理
端口管理列表
日志监控
日志监控列表
数据源管理
数据源监控列表
数据表管理
数据表监控列表
服务接口管理
主机
七、配置邮件告警
邮件告警配置比较简单,不过还是写一下,因为有时候大家可能会忽略一些细节
本文以qq邮箱发送为例说明,邮件告警配置成功后,所有告警通知都会自动发送邮件,如果不想接收邮件了,删除邮件告警设置即可。
qq邮件发送需要注意的地方,邮件发送密码不是qq登陆密码,而是授权码,需要去邮箱手动获取,下图是标识怎么获取qq邮箱的授权码,点击邮箱设置->账户->生成授权码
记得在账户下设置开启SMTP服务,然后点击【生成授权码】,得到授权码后先保存下来,后面要用
ivoxyoemrlbzfbgb
下面开始设置邮件告警
设置完成后,点击【测试发送】,就可以接收到邮件了,到这就设置完成了。
八、内网、局域网,无法访问外网,想使用一键部署agent脚本也可以的
1、将需要部署的agent安装包,下载并复制到/server/logo/文件夹下
提示:/server/logo/目录也可以作为资源下载仓库,访问路径http://[server主机IP:9999]/wgcloud/resources/
2、将installAgent.sh脚本,下载并复制到/server/logo/文件夹下
3、编辑installAgent.sh,
将如下脚本里面的https://www.wgstart.com/download/${versionStr}/改为http://[server主机IP:9999]/wgcloud/resources/
测试如下,下载成功
注意,这里9999是server的默认端口,如果已经修改过端口了,改为自己的实际server端口
#!/bin/sh
paramServerUrl=$1
tarFileName=$2
paramBindIp=$3
echo "paramServerUrl------${paramServerUrl}"
echo "tarFileName------${tarFileName}"
echo "paramBindIp------${paramBindIp}"
dirName=${tarFileName//.tar.gz/}
echo "开始下载${tarFileName}------"
wget --no-check-certificate "http://10.18.93.156:9999/wgcloud/resources/${tarFileName}"
echo "下载完成------"
tar -xvf ${tarFileName}
cd ./${dirName}/
echo "修改config/application.properties的配置项serverUrl------"
sed -i "s#^serverUrl=.*#serverUrl=${paramServerUrl}#g" ./config/application.properties
if [ -n "$paramBindIp" ]; then
sed -i "s#^bindIp=.*#bindIp=${paramBindIp}#g" ./config/application.properties
fi
echo "修改完成------"
chmod +x start.sh
echo "部署下载已完成,开始启动agent------"
sh start.sh
然后就可以在被监控主机执行内网版的一键部署脚本了,下面示例脚本是在被控主机部署agent-linux-amd64-v3.4.0.tar.gz,如下
如果想要部署其它agent包,将脚本中的agent-linux-amd64-v3.4.0.tar.gz替换成其它agent安装包的名称即可,比如替换为agent-linux-arm64-v3.4.0.tar.gz,agent安装包名称列表
wget --no-check-certificate http://10.18.93.156:9999/wgcloud/resources/installAgent.sh; bash installAgent.sh http://10.18.93.156:9999 agent-linux-arm64-v3.4.0.tar.gz
如果想要设置被控主机的bindIp(agent本身可以自动获取被控主机IP,但是有时候agent自动获取IP不一定准确),那么用下面这个脚本,把下面[bindIp]替换为自己的agent被控主机实际IP
[root@VM-0-14-centos /]# mkdir wgcloud
[root@VM-0-14-centos /]# cd wgcloud
[root@VM-0-14-centos wgcloud]# wget --no-check-certificate http://[server主机IP:9999]/wgcloud/resources/installAgent.sh; bash installAgent.sh http://localhost:9999 agent-linux-amd64-v3.4.0.tar.gz [bindIp]
九、配置飞书告警
此文是Linux部署server用shell实现飞书告警,windows部署server用bat实现飞书告警点击此处
在群聊中添加机器人
进入群聊,打开群设置,找到群机器人,并点击添加机器人。选择自定义机器人加入群聊。
添加该机器人进群,设置机器人头像、名称和描述(随便写就可以了),然后点击下一步。
配置webhook,可根据需求选择一种及以上安全设置的方式(先不选,成功后再根据自己实际场景调整),复制并保存此页面的参数,最后点击完成。
使用机器人发送消息
请保管好 webhook 地址。 不要公布在 Github、博客等可公开查阅的网站上。地址泄露后可能被恶意调用发送垃圾信息
新建/home/testmsg.sh文件,此处目录和文件名称是为测试方便,自己可以根据实际场景自定义,内容如下
#!/bin/bash
content=${@:1}
content=${content//\<font color=\'red\'\>/}
content=${content//\<\/font\>\<\/br\>/}
content=${content//\ /}
content=${content//\"/}
time3=$(date "+%H:%M:%S")
content="$time3,$content"
echo "warn content is : $content"
#飞书机器人webhook 地址
api=https://open.feishu.cn/open-apis/bot/v2/hook/58298exxxxxxxxxxxxxxxxxxxxxx
curl -X POST \
$api \
-H 'Content-Type: application/json' \
-d '{
"msg_type": "post",
"content": {
"post": {
"zh_cn": {
"title": "WGCLOUD告警",
"content": [
[
{
"tag": "text",
"text": "'$content'"
}
],
[
]
]
}
}
}
}'
记得给testmsg.sh文件添加可执行权限
chmod +x testmsg.sh
测试过程中,将xxxxxxxx那行内容,替换为自己的实际webhook地址
sh /home/testmsg.sh 测试告警