ServerStatus搭建指南

ServerStatus,云监控,即我们一般说的探针。用来监控远端服务器的状态。可以实现实时查看系统负载,同时如果服务器超载可以自动报警。如果你服务器很多,那么安装一个这个可以方便快捷的查看实用的流量负载,不必每次都登陆后台面板进行跟踪。

分为服务端和客户端,服务端即网页用来展示的,客户端即为一个python文件,查询信息之后发送给服务端。

服务端安装

我使用的是docker安装,简单快捷。根据官网的命令。

1
2
3
4
5
6
7
1. 创建文件夹下载默认的配置文件

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

2. docker允许,开放80和35601端口进行通信,需要注意35601必须开启,80端口还可以进行映射

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

直接执行即可,然后在 ~/serverstatus-config.json进行配置。这里如果你用root登陆,命令会创建文件夹/root//serverstatus-config.json,需要注意如果你修改了文件夹,需要将dockers命令的映射一同修改
配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
"servers":
[
{
"username": "s01",——用户名,登陆有用
"name": "vps-1",——显示名称
"type": "kvm",——显示虚拟化
"host": "chengdu",——不会显示,内部用来去别的
"location": "🇨🇳",——位置
"password": "USER_DEFAULT_PASSWORD",——密码,和上面用户名用来登陆
"monthstart": 1——月流量清零,一般vps的清零时间不是1号,所以需要变化
},
],
"watchdog":
[
{
"name": "服务器负载高监控,排除内存大于32G物理机,同时排除俄勒冈机器",
"rule": "cpu>90&load_1>4&memory_total<33554432&name!='俄勒冈'",
"interval": 600,
"callback": "https://yourSMSurl"
},
{
"name": "服务器内存使用率过高监控",
"rule": "(memory_used/memory_total)*100>90",
"interval": 600,
"callback": "https://yourSMSurl"
},
{
"name": "服务器宕机告警,排出俄勒冈,排除s02",
"rule": "online4=0&online6=0&name!='俄勒冈'&username!='s02'",
"interval": 600,
"callback": "https://yourSMSurl"
},
{
"name": "DDOS和CC攻击监控",
"rule": "tcp_count>600",
"interval": 300,
"callback": "https://yourSMSurl"
},
{
"name": "服务器月出口流量999GB告警",
"rule": "(network_out-last_network_out)/1024/1024/1024>999",
"interval": 3600,
"callback": "https://yourSMSurl"
},
{
"name": "你可以组合任何已知字段的表达式",
"rule": "(hdd_used/hdd_total)*100>95",
"interval": 1800,
"callback": "https://yourSMSurl"
}
]
}

客户端

客户端很简单,但是需要至此python3

1
2
3
4
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={$SERVER} USER={$USER} PASSWORD={$PASSWORD} >/dev/null 2>&1 &

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 &

>/dev/null 2>&1 这块命令建议改成具体文件夹下的路径,这是用来记载日志的,方便后续可以查看相关日志。

总结

安装之后确实美观,让人有种想把它填满的冲动,怪不得一些人买卖机器不停,确实让人难以抗拒。最后实现的效果如图:
143-ServerStatus搭建指南-2023-12-11-15-21-40

你想知道的信息都有,可以方便追踪目前的机器情况。

后续更新

在更换哪吒无果之后,我还是选择继续换回ServerStatus,现在着重解决几个问题:

  1. 主题
    主题的话,官方提供了三个主题搬运,之前用简洁模式图标会有问题,主要是我的location参数用的是中文,系统识别不到对应正确的svg图标,我将location改成cn之后,系统就能显示正确的图标

  2. 定制延迟测试
    程序自带的三网延迟测试只是测试到对应网站的,但是由于我们地区不同,所有很多时候需要一个vps到我们地区的延迟来做参考,修改起来也很简单:
    搜索下全国三网IP,找到自己省份的,然后复制下来。
    直接下载:https://raw.githubusercontent.com/cppla/ServerStatus/master/clients/client-linux.py 这个就是客户端文件。
    用文档打开,修改CU,CT,CM三个参数即可。
    143-ServerStatus搭建指南-2025-02-14-15-18-16

  3. 开机启动
    之前配置开机启动,不知道为啥,老是失败,这次使用deepseek辅助试试
    这边参照方法
    创建一个新的 .service 文件,例如 my_script.service,然后放到/etc/systemd/system/my_script.service,里面的内容是

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [Unit]
    Description=My Python Script
    After=network.target #如果需要网络,请加上这个

    [Service]
    ExecStart=python3 /root/client-linux.py #直接输入命令即可
    WorkingDirectory=/root/ #可选
    User=root #可选
    Restart=always #失败会重试试

    [Install]
    WantedBy=multi-user.target #别动

    确保你的脚本有执行权限,用chmod +x 你的脚本,然后重载,设置开机启动,直接手动开始服务

    重新加载 systemd 配置

    sudo systemctl daemon-reload

    启用开机启动

    sudo systemctl enable my_script.service

    立即启动服务试试,如果成功启动,那么一般就不会有问题

    sudo systemctl start my_script.service

    启动服务之后,输入命令查看输出,成功一般返回一个后台PID,

    sudo systemctl status my_script.service

    143-ServerStatus搭建指南-2025-02-14-16-31-14

    失败的话需要自己调整,查看对应的日志

    journalctl -u my_script.service -b

    143-ServerStatus搭建指南-2025-02-14-16-34-36

    这是类似一种进程守护的实现方法,算是解决了我一直困扰的问题。


参考文章:
ServerStatus