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官方文档,有兴趣可以深入研究。

 

 

打完收工!!

阅读剩余
THE END