mirror of https://github.com/cppla/ServerStatus
				
				
				
			update
							parent
							
								
									a10e39b6f2
								
							
						
					
					
						commit
						a4a3734c30
					
				
							
								
								
									
										122
									
								
								README.md
								
								
								
								
							
							
						
						
									
										122
									
								
								README.md
								
								
								
								
							|  | @ -1,8 +1,7 @@ | |||
| ## ServerStatus 中文版 | ||||
| # ServerStatus中文版:    | ||||
| 
 | ||||
| 一个轻量、可扩展的多服务器状态/探针面板,支持:系统资源统计、站点/端口监控、Watchdog 表达式告警、SSL 证书有效期与域名匹配监控(新增)。 | ||||
| 
 | ||||
| 在线演示:https://tz.cloudcpp.com | ||||
| * ServerStatus中文版是一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针~。。 | ||||
| * 在线演示:https://tz.cloudcpp.com     | ||||
| 
 | ||||
| [](https://github.com/cppla/ServerStatus) | ||||
| [](https://github.com/cppla/ServerStatus) | ||||
|  | @ -11,64 +10,17 @@ | |||
| 
 | ||||
|  | ||||
| 
 | ||||
| > Watchdog 采用“触发式”告警,interval 用于抑制频率,并非采样周期。Exprtk 库当前使用窄字符,含中文的表达式暂不支持(待改进)。 | ||||
| `Watchdog触发式告警,interval只是为了防止频繁收到报警信息造成的骚扰,并不是探测间隔。值得注意的是,Exprtk库默认使用窄字符类型,中文等Unicode字符无法解析计算,等待修复。 `     | ||||
| 
 | ||||
| ### 目录结构 | ||||
| # 目录: | ||||
| 
 | ||||
| - `clients/` 客户端脚本 | ||||
| - `server/`  服务端核心 (C/C++) | ||||
| - `web/`     前端展示与静态资源 | ||||
| - `server/config.json` 主配置文件 | ||||
| - `web/json/` 持久化月流量快照 | ||||
| * clients       	客户端文件 | ||||
| * server       	 	服务端文件   | ||||
| * web           	网站文件 | ||||
| * server/config.json	探针配置文件                                 | ||||
| * web/json      	探针月流量         | ||||
| 
 | ||||
| ### 新特性:SSL 证书监控 (sslcerts) | ||||
| 支持: | ||||
| 1. 自动解析证书到期时间 (notAfter) | ||||
| 2. 阈值到期提醒:7 / 3 / 1 天(分别独立冷却 20h) | ||||
| 3. 证书域名匹配校验(解析 SAN DNS 列表与 Subject CN,支持通配符 *.example.com);域名与证书不匹配发送独立告警(默认 24h 冷却) | ||||
| 4. 前端单独 “SSL” 面板,区分:正常 / 将到期 / 紧急 / 已过期 / 域名不匹配 | ||||
| 
 | ||||
| 配置段示例: | ||||
| ```jsonc | ||||
| "sslcerts": [ | ||||
| 	{ | ||||
| 		"name": "my.cloudcpp.com",     // 自定义显示名称 | ||||
| 		"domain": "https://my.cloudcpp.com", // 可含 http(s) 前缀/路径,会自动规范化 | ||||
| 		"port": 443,                    // TLS 端口 | ||||
| 		"interval": 600,                // 拉取间隔(秒),每条证书独立 | ||||
| 		"callback": "https://yourSMSurl" // 告警回调(URL + 文本拼接),POST body: signature=ServerStatusSSL | ||||
| 	} | ||||
| ] | ||||
| ``` | ||||
| JSON 输出(sslcerts) 字段: | ||||
| ```json | ||||
| { | ||||
| 	"name": "my.cloudcpp.com", | ||||
| 	"domain": "https://my.cloudcpp.com", | ||||
| 	"port": 443, | ||||
| 	"expire_ts": 1723507200, | ||||
| 	"expire_days": 14, | ||||
| 	"mismatch": false | ||||
| } | ||||
| ``` | ||||
| 告警触发逻辑: | ||||
| | 类型 | 条件 | 冷却 | 文本示例 | | ||||
| |------|------|------|----------| | ||||
| | 7 天提醒 | 0 < days ≤ 7 且 >3 | 20h | 【SSL证书提醒】name(domain) 将在 7 天后(...) 到期 | | ||||
| | 3 天提醒 | 0 < days ≤ 3 且 >1 | 20h | 同上 target=3 | | ||||
| | 1 天提醒 | 0 < days ≤ 1 | 20h | target=1 | | ||||
| | 已过期 | days ≤ 0 | 不发送额外(前端显示已过期,可自行扩展) | | ||||
| | 域名不匹配 | mismatch=true | 24h | 【SSL证书域名不匹配】name(domain) 证书域名与配置不一致 | | ||||
| 
 | ||||
| 注意事项: | ||||
| - `domain` 可带协议/路径/端口,程序会提取主机名并使用 `-servername` 及 `-connect host:port` 方式获取证书。 | ||||
| - 若站点使用 SNI,请确保 `port` 与 SNI 主机匹配;未解析到 SAN/CN 时不立即判定不匹配(避免误报)。 | ||||
| - 回调是 `POST`,内容直接拼接在 callback URL 后,必要时自行 URLDecode。 | ||||
| - mismatch 与到期提醒互不影响,可同时存在(前端优先显示“已过期” 其次“不匹配”)。 | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## 部署 | ||||
| # 部署: | ||||
| 
 | ||||
| 【服务端】: | ||||
| ```bash | ||||
|  | @ -89,7 +41,7 @@ eg: | |||
| wget --no-check-certificate -qO client-linux.py 'https://raw.githubusercontent.com/cppla/ServerStatus/master/clients/client-linux.py' && nohup python3 client-linux.py SERVER=45.79.67.132 USER=s04  >/dev/null 2>&1 & | ||||
| ``` | ||||
| 
 | ||||
| ## 主题 | ||||
| # 主题:             | ||||
| 
 | ||||
| * layui:https://github.com/zeyudada/StatusServerLayui ,预览:https://sslt.8zyw.cn             | ||||
| <img src=https://dl.cpp.la/Archive/serverstatus_layui.png width=200 height=100 /> | ||||
|  | @ -98,7 +50,7 @@ wget --no-check-certificate -qO client-linux.py 'https://raw.githubusercontent.c | |||
| <img src=https://dl.cpp.la/Archive/serverstatus_light.png width=200 height=100 />   | ||||
| 
 | ||||
| 
 | ||||
| ## 手动安装 | ||||
| # 手动安装教程:      | ||||
|     | ||||
| **【服务端配置】**            | ||||
|            | ||||
|  | @ -112,7 +64,7 @@ cd ServerStatus/server && make | |||
| ``` | ||||
| 如果没错误提示,OK,ctrl+c关闭;如果有错误提示,检查35601端口是否被占用     | ||||
| 
 | ||||
| #### 二、修改配置文件 (含 sslcerts 示例) | ||||
| #### 二、修改配置文件          | ||||
| ```diff | ||||
| ! watchdog rule 可以为任何已知字段的表达式。注意Exprtk库默认使用窄字符类型,中文等Unicode字符无法解析计算,等待修复        | ||||
| ! watchdog interval 最小通知间隔 | ||||
|  | @ -163,30 +115,30 @@ cd ServerStatus/server && make | |||
| 	], | ||||
| 	"watchdog": | ||||
| 	[ | ||||
| 	        { | ||||
| 	    { | ||||
| 			"name": "服务器负载高监控,排除内存大于32G物理机,同时排除node1机器", | ||||
| 			"rule": "cpu>90&load_1>4&memory_total<33554432&name!='node1'", | ||||
| 			"interval": 600, | ||||
| 			"callback": "https://yourSMSurl" | ||||
| 		}, | ||||
| 		{ | ||||
|                         "name": "服务器内存使用率过高监控,排除小于1G的机器", | ||||
|                         "rule": "(memory_used/memory_total)*100>90&memory_total>1048576", | ||||
|                         "interval": 600, | ||||
|                         "callback": "https://yourSMSurl" | ||||
|                 }, | ||||
|                 { | ||||
|                         "name": "服务器宕机告警", | ||||
|                         "rule": "online4=0&online6=0", | ||||
|                         "interval": 600, | ||||
|                         "callback": "https://yourSMSurl" | ||||
|                 }, | ||||
|             "name": "服务器内存使用率过高监控,排除小于1G的机器", | ||||
|             "rule": "(memory_used/memory_total)*100>90&memory_total>1048576", | ||||
|             "interval": 600, | ||||
|             "callback": "https://yourSMSurl" | ||||
|         }, | ||||
|         { | ||||
|             "name": "服务器宕机告警", | ||||
|             "rule": "online4=0&online6=0", | ||||
|             "interval": 600, | ||||
|             "callback": "https://yourSMSurl" | ||||
|         }, | ||||
| 		{ | ||||
|                         "name": "DDOS和CC攻击监控,限制甲骨文机器", | ||||
|                         "rule": "tcp_count>600&type='Oracle'", | ||||
|                         "interval": 300, | ||||
|                         "callback": "https://yourSMSurl" | ||||
|                 }, | ||||
|             "name": "DDOS和CC攻击监控,限制甲骨文机器", | ||||
|             "rule": "tcp_count>600&type='Oracle'", | ||||
|             "interval": 300, | ||||
|             "callback": "https://yourSMSurl" | ||||
|         }, | ||||
| 		{ | ||||
| 			"name": "服务器月出口流量999GB告警", | ||||
| 			"rule": "(network_out-last_network_out)/1024/1024/1024>999", | ||||
|  | @ -215,19 +167,19 @@ cd ServerStatus/server && make | |||
| }           | ||||
| ``` | ||||
| 
 | ||||
| #### 三、拷贝前端到 Web 根目录 | ||||
| #### 三、拷贝ServerStatus/status到你的网站目录         | ||||
| 例如: | ||||
| ``` | ||||
| sudo cp -r ServerStatus/web/* /home/wwwroot/default | ||||
| ``` | ||||
| 
 | ||||
| #### 四、运行服务端 | ||||
| #### 四、运行服务端:              | ||||
| web-dir参数为上一步设置的网站根目录,务必修改成自己网站的路径    | ||||
| ``` | ||||
| ./sergate --config=config.json --web-dir=/home/wwwroot/default    | ||||
| ``` | ||||
| 
 | ||||
| **客户端配置** | ||||
| **【客户端配置】**     | ||||
| 
 | ||||
| 客户端有两个版本,client-linux为普通linux,client-psutil为跨平台版,普通版不成功,换成跨平台版即可。         | ||||
| 
 | ||||
|  | @ -251,13 +203,9 @@ web-dir参数为上一步设置的网站根目录,务必修改成自己网站 | |||
|  | ||||
| 
 | ||||
| 
 | ||||
| ## Make Better | ||||
| # Make Better         | ||||
| 
 | ||||
| * BotoX:https://github.com/BotoX/ServerStatus | ||||
| * mojeda: https://github.com/mojeda  | ||||
| * mojeda's ServerStatus: https://github.com/mojeda/ServerStatus | ||||
| * BlueVM's project: http://www.lowendtalk.com/discussion/comment/169690#Comment_169690 | ||||
| 
 | ||||
| ## Jetbrains | ||||
| 
 | ||||
| <a href="https://www.jetbrains.com/?from=ServerStatus"><img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jb_square.png" width="100px"></a> | ||||
|  |  | |||
|  | @ -53,13 +53,6 @@ | |||
| 		} | ||||
| 	], | ||||
| 	"sslcerts": [ | ||||
| 		{ | ||||
| 			"name": "cpp.la", | ||||
| 			"domain": "https://cpp.la", | ||||
| 			"port": 443, | ||||
| 			"interval": 600, | ||||
| 			"callback": "https://yourSMSurl"  | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "my.cloudcpp.com", | ||||
| 			"domain": "https://my.cloudcpp.com", | ||||
|  | @ -79,14 +72,7 @@ | |||
| 			"domain": "https://3.0.2.1", | ||||
| 			"port": 443, | ||||
| 			"interval": 600, | ||||
| 			"callback": "https://sctapi.ftqq.com/SCT51005TMjvDPWwgSXjgYODht6BnQmed.send?title=ServerStatus&desp=" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "3.0.2.9", | ||||
| 			"domain": "https://3.0.2.9", | ||||
| 			"port": 443, | ||||
| 			"interval": 600, | ||||
| 			"callback": "https://sctapi.ftqq.com/SCT51005TMjvDPWwgSXjgYODht6BnQmed.send?title=ServerStatus&desp=" | ||||
| 			"callback": "https://yourSMSurl" | ||||
| 		} | ||||
| 	], | ||||
| 	"watchdog": [ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 cppla
						cppla