From a4a3734c306acb3c98f1d9c6e6e13797bbff8233 Mon Sep 17 00:00:00 2001 From: cppla Date: Tue, 12 Aug 2025 14:01:50 +0800 Subject: [PATCH] update --- README.md | 126 +++++++++++++-------------------------------- server/config.json | 16 +----- 2 files changed, 38 insertions(+), 104 deletions(-) diff --git a/README.md b/README.md index 0be4b15..73334fb 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ -## ServerStatus 中文版 +# ServerStatus中文版: -一个轻量、可扩展的多服务器状态/探针面板,支持:系统资源统计、站点/端口监控、Watchdog 表达式告警、SSL 证书有效期与域名匹配监控(新增)。 - -在线演示:https://tz.cloudcpp.com +* ServerStatus中文版是一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针~。。 +* 在线演示:https://tz.cloudcpp.com [![Python Support](https://img.shields.io/badge/python-3.6%2B%20-blue.svg)](https://github.com/cppla/ServerStatus) [![C++ Compiler](http://img.shields.io/badge/C++-GNU-blue.svg?style=flat&logo=cplusplus)](https://github.com/cppla/ServerStatus) @@ -11,64 +10,17 @@ ![Latest Host Version](https://dl.cpp.la/Archive/serverstatus_1.1.5.png) -> 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 @@ -98,7 +50,7 @@ wget --no-check-certificate -qO client-linux.py 'https://raw.githubusercontent.c -## 手动安装 +# 手动安装教程: **【服务端配置】** @@ -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", @@ -212,22 +164,22 @@ cd ServerStatus/server && make "callback": "https://yourSMSurl" } ] -} +} ``` -#### 三、拷贝前端到 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参数为上一步设置的网站根目录,务必修改成自己网站 ![Shell View](https://dl.cpp.la/Archive/serverstatus-shell.png?version=2023) -## 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 - - +* BlueVM's project: http://www.lowendtalk.com/discussion/comment/169690#Comment_169690 \ No newline at end of file diff --git a/server/config.json b/server/config.json index 882daa7..2fe114c 100644 --- a/server/config.json +++ b/server/config.json @@ -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": [