NekoStatus:一款Material Design风格的监控探针
对于拥有多台服务器的MJJ而言,一个简洁、明朗、轻量的监控探针显得十分必要。
很早以前,nodequery满足所述条件,甚至是有大神利用API开发Nodeinfo自定义聚合页也十分好用。但不知为何nodequery的作者停止了更新,甚至连超过10台的付费包也不提供,遂放弃了使用。
去年,EHEH出现,今年,NodePanels出现,不得不说,已经有越来越多的开发者基于nodequery进行更与时俱进的开发。
另一边,自部署赛道,去年11月哪吒面板一经推出就掀起了一众MJJ的关注。
上述几个监控探针,我都在使用,近期闲逛Github,发现了一款Material Design风格的监控探针,煞是喜欢,又恰好我在使用探针作者Neko的端口转发服务,遂记录之。
一、演示
官网
https://github.com/nkeonkeo/nekonekostatus
地址
https://status.nekoneko.cloud/
截图
二、安装
2021年10月1日UPDATE
建议使用Docker安装,安全省事
docker run --restart=on-failure --name nekonekostatus -p 5555:5555 -d nkeonkeo/nekonekostatus:v1.0
安装完毕后,访问:http://ip:5555即可访问面板。
5555:5555可在安装时修改为任意端口,如:5678:5555
建议使用一键脚本
wget https://github.com/nkeonkeo/nekonekostatus/raw/main/install.sh && bash install.sh
脚本运行时,会要你填写:监听端口、面板名称、面板网址、面板密码信息:
监听端口:
此处填写面板管理端口
面板名称:
此处自便
面板网址:
此处自便
面板密码:
此处 自便
三、配置-Docker安装不需要此步
一键脚本完成后,探针面板的配置已经基本完成了,按README所述的config.js
文件也创建好了。
此时,请安装forever
npm install forever -g
接着启动面板
forever start nekonekostatus.js
访问:网址+端口,就可以访问面板了。
如果你希望HTTPS访问,用Caddy反代即可。
四、新增/管理服务器
NekoStatus是直接用SSH登录到被控服务器后,安装探针的方式进行监控的。
在添加服务器时,建议关闭被动/主动开关,并自定义填入通讯端口。
变量名 | 含义 | 示例 |
---|---|---|
sid | 服务器id | b82cbe8b-1769-4dc2-b909-5d746df392fb |
name | 服务器名称 | StarLink |
TOP | 置顶优先级 | 1 |
域名/IP | 域名/IP | 127.0.0.1 |
端口(可选) | ssh端口 | 22 |
密码(可选) | ssh密码 | 自便 |
私钥(可选) | ssh私钥 | '' |
被动/主动 同步 | 同步数据模式 | 被动(关闭)即可 |
被动通讯端口 | 被动通讯端口 | 10086 |
理论上,如果是VPS或内外网端口一致的NAT,直接在后台填写相关信息,会自动安装好。但如果是国内无法访问Github的机器或内外网端口不一致的NAT,需要如下特殊处理。
1、无法访问Github
前往后台【设置】修改Neko-Agent的下载地址即可。
2、内外网端口不一致
先在面板后台添加该机器,并设置【被动通讯端口】为外网端口,并点击【安装】。
此时的确安装了,但该机器配置文件里的端口号并不正确。
而后SSH登录该机器,修改配置文件
nano /etc/neko-status/config.yaml
修改【port】为内网端口
接着重启服务
systemctl daemon-reload
systemctl start nekonekostatus
systemctl enable nekonekostatus
当然,你也可以只是添加机器,并不点击【安装】,完全用代码安装。
wget --version||yum install wget -y||apt-get install wget -y
/usr/bin/neko-status -v||(wget 【被控下载地址】 -O /usr/bin/neko-status && chmod +x /usr/bin/neko-status)
systemctl stop nekonekostatus
mkdir /etc/neko-status/
echo "key: 【通讯秘钥】
port: 【通讯端口】
debug: false" > /etc/neko-status/config.yaml
systemctl stop nekonekostatus
echo "[Unit]
Description=nekonekostatus
[Service]
Restart=always
RestartSec=5
ExecStart=/usr/bin/neko-status -c /etc/neko-status/config.yaml
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/nekonekostatus.service
systemctl daemon-reload
systemctl start nekonekostatus
systemctl enable nekonekostatus
3、列表排序
机器配置页有个【TOP】值是可以用来调节列表排序的。数字越大排列越靠前。
但,每次调整后,需要重启Docker才生效。
五、备份与恢复
这个部分在官方文档里并未提及,实验并与作者确认后,如下:
1、备份
如果是Docker方式部署,则直接从容器里拷贝出数据库文件即完成备份。
mkdir /root/nekodb/
docker cp nekonekostatus:/database/db.db /root/nekodb/
我还配置了个定时任务,定时去拷贝出来并上传到GD盘进行备份,任务代码为:
#!/bin/bash
docker cp nekonekostatus:/database/db.db /root/nekodb/
cp -rf /root/nekodb/db.db 【挂载盘地址】/db.db_"$(date +"%Y-%m-%d_%H-%M")"
2、恢复
安装完成后,将db.db文件拷贝回Docker对应目录即可。
如:
docker cp /root/nekodb/db.db nekonekostatus:/database/
docker restart nekonekostatus
六、卸载
这个部分在官方文档里并未提及,实验并与作者确认后,如下:
1、客户端卸载
即便在管理端删除了服务器,作者并未将同步删除相关文件适配,如下操作即可:
SSH登录客户端,并停用nekostatus
systemctl stop nekonekostatus
删除相关文件
rm -rf /sys/fs/cgroup/memory/system.slice/nekonekostatus.service /sys/fs/cgroup/blkio/system.slice/nekonekostatus.service /sys/fs/cgroup/devices/system.slice/nekonekostatus.service /sys/fs/cgroup/pids/system.slice/nekonekostatus.service /sys/fs/cgroup/cpu,cpuacct/system.slice/nekonekostatus.service /sys/fs/cgroup/systemd/system.slice/nekonekostatus.service /sys/fs/cgroup/unified/system.slice/nekonekostatus.service /etc/systemd/system/multi-user.target.wants/nekonekostatus.service /etc/systemd/system/nekonekostatus.service /run/systemd/units/invocation:nekonekostatus.service /usr/bin/neko-status /etc/neko-status
2、管理端卸载
停用管理端
bash ~/nekonekostatus/stop.sh
删除相关目录
rm -rf ~/nekonekostatus
七、其他信息
1、客户端命令
systemctl start nekonekostatus
systemctl stop nekonekostatus
systemctl restart nekonekostatus
systemctl run nekonekostatus
2、客户端文件列表
/sys/fs/cgroup/memory/system.slice/nekonekostatus.service
/sys/fs/cgroup/blkio/system.slice/nekonekostatus.service
/sys/fs/cgroup/devices/system.slice/nekonekostatus.service
/sys/fs/cgroup/pids/system.slice/nekonekostatus.service
/sys/fs/cgroup/cpu,cpuacct/system.slice/nekonekostatus.service
/sys/fs/cgroup/systemd/system.slice/nekonekostatus.service
/sys/fs/cgroup/unified/system.slice/nekonekostatus.service
/etc/systemd/system/multi-user.target.wants/nekonekostatus.service
/etc/systemd/system/nekonekostatus.service
/run/systemd/units/invocation:nekonekostatus.service
/usr/bin/neko-status
/etc/neko-status
最后附上Github官方文档,有兴趣可以深入研究。