给云或VPS搭建云监控探针

一、前言

小鸡监控项目很多 功能都差不多,大家可以选择自己喜欢的搭建

个人比较喜欢cppla 大佬的云或VPS监控探针: ServerStatus ,功能齐全 界面美观 支持tcping看丢包等功能(python运行 对CPU消耗较多),本文写个教程记录一下搭建该探针的过程

image

二、服务端配置

服务端即为总控,用于监控小鸡、消息推送、可视化web页面等

1、安装docker

① 更新源

yum update -y && yum upgrade -y		#Centos执行这条命令
apt update -y && apt upgrade -y		#Ubuntu/Debian执行这条命令

② 安装docker及docker compose

curl -fsSL https://get.docker.com -o get-docker.sh && sh ./get-docker.sh

③ 检查docker是否安装成功

#以下即为安装成功
root@debian-4gb-fsn1-2:~# docker compose version
Docker Compose version v2.17.2
root@debian-4gb-fsn1-2:~# docker -v
Docker version 23.0.2, build 569dd73

image

2、修改配置文件

下载两个配置文件 serverstatus-config.json serverstatus-monthtraffic

wget --no-check-certificate -qO ~/serverstatus-config.json https://raw.githubusercontent.com/cppla/ServerStatus/master/server/config.json && mkdir ~/serverstatus-monthtraffic

下载完后选择性修改 serverstatus-config.json 文件

建议host不填或不要填真实IP,因为host中的内容会暴露在前端json文件,如下图所示 通过 domain.com/json/stats.json 访问

imageimage

3、docker run 启动服务端

docker安装无法修改默认界面,如需修改默认界面请选择手动安装

: 之前是代表vps外部文件地址/端口 : 之后是容器内的文件地址/端口

不用担心多个容器端口冲突问题,docker默认为每个容器分配不同的内网IP段

docker run -d --restart=always --name=serverstatus -v ~/serverstatus-config.json:/ServerStatus/server/config.json -v ~/serverstatus-monthtraffic:/usr/share/nginx/html/json -p 80:80 -p 35601:35601 cppla/serverstatus:latest

#例如我的80和35601端口被占用了,就用的8880和45601端口,文件地址不变,我的启动命令为
docker run -d --restart=always --name=serverstatus -v ~/serverstatus-config.json:/ServerStatus/server/config.json -v ~/serverstatus-monthtraffic:/usr/share/nginx/html/json -p 8880:80 -p 45601:35601 cppla/serverstatus:latest

通过 http://ip:port 访问

image

4、通过反代配置域名访问(非必须)

法一:可以用 宝塔/aapanel 自带的反向代理功能

image

image

法二:使用nginx反代设置

我用的宝塔,配置如下

只需要修改 proxy_pass http://127.0.0.1:8880/; 的IP和端口就行

因为这个nginx是在我本机,我直接用的 127.0.0.1 ,nginx不在本机的话需要更改为服务端的公网IP

location / {
  proxy_pass http://127.0.0.1:8880/;
  rewrite ^/(.*)$ /$1 break;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Upgrade-Insecure-Requests 1;
  proxy_set_header X-Forwarded-Proto https;
}

image

image

3、客户端配置

也就是为每个被监控的小鸡进行配置

1、下载客户端配置文件

此时我在 /root 文件夹下

wget --no-check-certificate -qO client-linux.py 'https://raw.githubusercontent.com/cppla/ServerStatus/master/clients/client-linux.py'

2、选择性编辑客户端配置文件

#以下是我修改的配置文件

SERVER = "143.198.119.164"	#客户端服务器IP
USER = "s01"			#填入服务端配置文件中的username


PASSWORD = "USER_DEFAULT_PASSWORD"		#填入服务端配置文件中的password
PORT = 45601							#填入客户端的外部端口,我的是45601
CU = "mall.10010.com"					#tcping的目标地址,建议跟我一样
CT = "www.189.cn"						#tcping的目标地址,建议跟我一样
CM = "www.bj.10086.cn"					#tcping的目标地址,建议跟我一样
PROBEPORT = 80							#
PROBE_PROTOCOL_PREFER = "ipv4"  # ipv4, ipv6	#优先通过 v4/v6 访问 cu ct cm
PING_PACKET_HISTORY_LEN = 100			#显示最近100次丢包率 自行设置
INTERVAL = 1							#不清楚这个,太大可能判定为小鸡离线

3、安装python3

程序支持python2.7-python3.10

首先通过 python3 --version 确认是否有 python3

或者 python --version 看python版本是否高于2.7

image

如果没有输出,则需要安装python

ubuntu/debian可以用apt安装

apt install python3 -y

不了解centos的安装方法,你可以google看看 🙂

4、为客户端程序配置守护进程systemd

我习惯使用守护进程,你也可以根据官网直接nohup后台运行

建议先执行命令看看是否可以正常运行,自行修改python版本和文件路径

python3 /root/client-linux.py

#新增守护进程 /etc/systemd/system/tzstatus.service,并填入配置
#执行命令处'ExecStart' 换为你自己可以正常运行的命令

#vi /etc/systemd/system/tzstatus.service

[Unit]
Description=serverstatus
After=network.target
     
[Service]
ExecStart=python3 /root/client-linux.py
Restart=always
    
[Install]
WantedBy=multi-user.target

image

image

image

#systemd基础命令
systemctl start tzstatus		#启动tzstatus服务
systemctl status tzstatus		#查看tzstatus服务状态
systemctl enable tzstatus		#使tzstatus服务开机自启
systemctl stop tzstatus			#停止tzstatus服务
systemctl disable tzstatus		#关闭tzstatus开机自启

四、报警推送

1、推送

以telegram_bot为例

获取 bot_token  chat_id ,如何获取可以参考这里:获取bot_token和chat_id

在主控修改 serverstatus-config.json  callback 填入 https://api.telegram.org/bot你自己的密钥/sendMessage?parse_mode=HTML&disable_web_page_preview=true&chat_id=你自己的标识&text=

例如我的是 https://api.telegram.org/bot575****292:AAGsqP2m_g2UzSmOZSTaup8mN****svsaYM/sendMessage?parse_mode=HTML&disable_web_page_preview=true&chat_id=191****008&text=

Server酱和PushDeer可以参考官方

image

2、规则设置

截至2023-4-19暂不支持 持续一段时间才发送警告,作者在 issue#198 说以后会支持,如已经支持 请留言告诉我及时更正

规则的已知字段和字段的值可以通过 ip:port/json/stats.json 查看,如:demo1 demo2

watchdog interval 表示最小通知间隔,如果超过这个时间 问题还在则会再次报警,如问题已修复 则不会报警

	"watchdog": [
		{
			"name": "cpu使用超过80%",
			"rule": "cpu>80",
			"interval": 300,
			"callback": "https://yourSMSurl"
		},
		{
			"name": "内存超过80%",
			"rule": "(memory_used/memory_total)*100>80",
			"interval": 300,
			"callback": "https://yourSMSurl"
		},
		{
			"name": "机器离线",
			"rule": "online4=0&online6=0",
			"interval": 600,
			"callback": "https://yourSMSurl"
		},
		{
			"name": "1分钟内负载大于3",
			"rule": "load_1>3",
			"interval": 600,
			"callback": "https://yourSMSurl"
		},
		{
			"name": "瞬时出栈速度大于200MB/S",
			"rule": "network_tx/1024/1024>200",
			"interval": 600,
			"callback": "https://yourSMSurl"
		},
		{
			"name": "瞬时入栈速度大于500MB/S",
			"rule": "network_rx/1024/1024>500",
			"interval": 600,
			"callback": "https://yourSMSurl"
		},
		{
			"name": "tcp连接数超过500,疑似被CC攻击",
			"rule": "tcp_count>500",
			"interval": 300,
			"callback": "https://yourSMSurl"
        },
		{
			"name": "该月出栈流量超过1TB",
			"rule": "(network_out-last_network_out)/1024/1024/1024>1024",
			"interval": 864000,
			"callback": "https://yourSMSurl"
		},
		{
			"name": "硬盘使用空间超过80%",
			"rule": "(hdd_used/hdd_total)*100>80",
			"interval": 1800,
			"callback": "https://yourSMSurl"
		}
	]
}       

 

本文链接:https://blog.tanglu.me/server-status

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录