全球主机交流论坛

标题: 云探针程序开发预告【进度更新~】 [打印本页]

作者: 风静树不止    时间: 2020-11-23 23:46
标题: 云探针程序开发预告【进度更新~】
本帖最后由 风静树不止 于 2020-11-26 15:07 编辑

由于此前某些场景需要批量探针的需求(主要是能够实时批量查看各机器的CPU/网络/内存/硬盘等信息)


此前在github找到此项目,还算不错,但终有不足~

https://github.com/cppla/ServerStatus

先说说不足之处吧~
一,无分页/分类功能,假设我有200台机器,此程序就只能一次性显示200台机器(而且程序默认只能支持128台机器?这个值是预定义的,如果需要修改需要自行编译!)
二,添加服务器节点不方便,每次添加节点时都需要编辑文件,极为麻烦(特别是机器很多的情况下)
三,对接麻烦,如第二点所说,需要先在后端添加节点信息,然后前端还需要定义一些信息才能对接成功~
好吧大致如此

我说说我现在想做的东西:
一,支持服务器分类/分页功能!分类后页面内可显示分类内的服务器的监控数据(如果一次性显示太多可能会卡,也不够直观)
二,使用golang编写前后端(本人最近开始学golang,以此来学习这门语言吧),支持直接在linux系统内直接运行,无需安装任何依赖
三,超便捷对接方案,大致如下:
  1. curl baidu.com/bash/hashcode | bash
复制代码

然后直接可以使用:
  1. systemctl status serverstatus
  2. systemctl restart serverstatus
  3. systemctl start serverstatus
  4. systemctl stop serverstatus
复制代码

这些命令来管理这个软件就行了~~~
即仅需在服务器运行一条命令即可,当服务器跑起来后,后端就会收到请求,后端收到请求后会默认创建一个节点,节点默认名字为服务器的公网IP地址!用户可在后端对此节点进行属性的编辑,如分类,名称,等等啥的
四,将支持DDNS功能!客户端和服务端的通讯考虑使用TCP!服务器每次都能获取到客户端的公网IP地址!这就能实现DDNS了!
五,考虑支持在网页端直接一键连接客户端ssh(webssh)但是这个功能需要提前储存root密码/密钥,或者链接时输入,会有安全隐患,会考虑推出让用户可以自建后端的版本!
这个东西目前准备做成一个平台!貌似已经有类似的东西了!

当然不是为了赚钱啥的,我想这个东西也比较小众,应该也赚不了什么大钱。。。。

主要是以后可能会用到和学习golang这门语言需要练手的项目!


进度:
目前已完成度客户端的参数读取~已经实现将数据定时发送至服务器
采用分步发送模式~即每次仅发送一项的参数~

各项参数将支持自定义开启是否上传/间隔时间!
例如:
网速参数,实时性要求比较高您可以设为1s
你如果觉得PING参数没啥用你可以选择不开启使用,那就不会执行此操作
如果你觉得系统负载这一项实时性并不高,那么可以设置稍长一点的同步时间。例如30s/次
也将支持仅DDNS模式~即本程序所有的功能模块都可以在配置文件中编辑,是否启用~

DDNS无需每次都建立新连接来查询客户端当前的公网IP地址!

因为在上报消息时会有一个保持的TCP连接,每次建立TCP链接时判断一次IP即可!若IP变化TCP链接应该会断开!那么新的TCP链接会不断重连~链接成功后就会更新IP变化~

程序会一直在后台运行~若服务端无法建立链接也会不断重试~
作者: asdii    时间: 2020-11-23 23:48
强烈资瓷
作者: cmm    时间: 2020-11-23 23:49
可乐探针基础上加个分页功能吗
作者: 809509941    时间: 2020-11-23 23:50
其实我想问下。有没有win也支持的。同时可以查看linux和win系统的探针
作者: Snow922841    时间: 2020-11-23 23:53
支持楼主。
作者: Crying    时间: 2020-11-23 23:57
支持,开VIP时记得留个位
作者: yanaxiao    时间: 2020-11-24 00:00
支持楼主,希望楼主出更好的产品
作者: 风静树不止    时间: 2020-11-24 00:00
809509941 发表于 2020-11-23 23:50
其实我想问下。有没有win也支持的。同时可以查看linux和win系统的探针

可以实现的,golang写的程序也可以在window运行到时候考虑支持!
作者: 风静树不止    时间: 2020-11-24 00:08
Crying 发表于 2020-11-23 23:57
支持,开VIP时记得留个位

好的~~~~
作者: suwubee    时间: 2020-11-24 00:14
agent比较麻烦吧
作者: 可乐呀    时间: 2020-11-24 00:47
本帖最后由 可乐呀 于 2020-11-24 00:52 编辑

我来提点建议
先说说不足之处吧~
一,无分页/分类功能,假设我有200台机器,此程序就只能一次性显示200台机器(而且程序默认只能支持128台机器?这个值是预定义的,如果需要修改需要自行编译!)
二,添加服务器节点不方便,每次添加节点时都需要编辑文件,极为麻烦(特别是机器很多的情况下)
三,对接麻烦,如第二点所说,需要先在后端添加节点信息,然后前端还需要定义一些信息才能对接成功~
好吧大致如此




一、”无分页/分类功能“这个可以直接在网页的前端实现。 只要改ServerStatus的前端就行了,至于最大机器数限制只要改一下server/src/network.h里的
NET_MAX_CLIENTS = 128就可以了,本来Serverstatus的服务端“sergate”就没有提供已编译好的二进制文件,安装都是要自己编译的(除了用docker)

二,确实不方便!所以doubi大佬制作了一键管理用的脚本。

三,这个没有吧。。


但是最初的用C++做服务端,Python做客户端实现的用socket做通信ServerStatus确实弊端很大,虽然前人C++写的服务端已经很成熟了,还有各种验证啥的防止爆破。
包括服务端写入接收到的客户端数据对硬盘的写入
之前有个大佬用websocket写了一个https://github.com/xytoki/xyStatus,用的是nodejs写的,其实写的很好
楼主可以借鉴下。
期待楼主的新轮子
作者: 安妮炖熊    时间: 2020-11-24 00:49
战略性Mark,支持大佬
作者: hanweizhe    时间: 2020-11-24 00:54
优秀 希望增加国别显示
作者: bed    时间: 2020-11-24 01:03
路过支持
作者: bondjames    时间: 2020-11-24 01:07
这些东西还是要支持的,虽然已经重复了
作者: 809509941    时间: 2020-11-24 01:29
另外想问问楼主类似的模板可以搞不
https://github.com/CokeMine/ServerStatus-Hotaru
可以显示国家图标,不过功能还是那一套,感觉还算欠缺点什么
作者: 1594959462    时间: 2020-11-24 01:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: IDC_Global    时间: 2020-11-24 04:52
这就是传说中mjjj互相交流摩擦的神器?
作者: fatal    时间: 2020-11-24 09:02
代码呢。。。lz不给么
作者: 纳米科技    时间: 2020-11-24 09:17
后排ssssvip预定
作者: yanyuo    时间: 2020-11-24 09:29
支持,开VIP时记得留个位
作者: 在座的各位    时间: 2020-11-24 09:30
EHEH.ORG?  这个用起来还可以啊
作者: arron    时间: 2020-11-24 09:49
支持大佬,现在就在用serverstatus,期待大佬的项目发布
作者: 风静树不止    时间: 2020-11-24 10:29
fatal 发表于 2020-11-24 09:02
代码呢。。。lz不给么

暂时木有开源的打算~
作者: Nami    时间: 2020-11-24 10:32
你准备用什么语言写?
作者: 某猫猫    时间: 2020-11-24 11:20
滋瓷滋瓷,紫薯布丁
作者: krazy176    时间: 2020-11-24 11:29
本帖最后由 krazy176 于 2020-11-24 11:31 编辑

其实,我觉得能够ssh连接各客户端最方便
作者: 风静树不止    时间: 2020-11-24 12:14
krazy176 发表于 2020-11-24 11:29
其实,我觉得能够ssh连接各客户端最方便

这个确实是的,但是会有问题,如果要最方便的话要把机器的root密码/密钥上传,这不太安全,对于用户而言,到时候可以考虑推出授权版本吧,用户可以自建后端,自建webssh服务器,把密钥什么的都保存在自己服务器上面,就不会有多余的问题了
作者: 风静树不止    时间: 2020-11-24 12:18
Nami 发表于 2020-11-24 10:32
你准备用什么语言写?

golang~
作者: 生蚝QAQ    时间: 2020-11-24 12:33
本帖最后由 生蚝QAQ 于 2020-11-24 12:35 编辑

额 我建议 你client就直接用prometheus-node-exporter  然后面版自己写个 因为prometheus+grafana对于一些人可能太复杂了 也太重了 但是prometheus-node-exporter是非常轻量了 就对外提供http接口查看本机信息
作者: Jounouchi    时间: 2020-11-24 13:01
支持,开VIP时记得留个位
作者: muyile    时间: 2020-11-24 13:09
支持下
作者: color123    时间: 2020-11-24 13:38
支持楼主。
作者: Nami    时间: 2020-11-24 14:14
风静树不止 发表于 2020-11-24 12:18
golang~

加油,支持!!
作者: 风静树不止    时间: 2020-11-25 12:09
生蚝QAQ 发表于 2020-11-24 12:33
额 我建议 你client就直接用prometheus-node-exporter  然后面版自己写个 因为prometheus+grafana对于一些 ...

自己读取不香吗,直接直读取需要的东西,其他一个多余的代码都没有!!占用会极低
作者: 生蚝QAQ    时间: 2020-11-25 13:38
风静树不止 发表于 2020-11-25 12:09
自己读取不香吗,直接直读取需要的东西,其他一个多余的代码都没有!!占用会极低 ...

prometheus-node-exporter go语言开发 且都已经被加进了各大包管理器了 包管理器可以直接安装,你开发的不一定有别人项目组的优秀啊
作者: 8a38a522    时间: 2020-11-25 13:55
风静树不止 发表于 2020-11-25 12:09
自己读取不香吗,直接直读取需要的东西,其他一个多余的代码都没有!!占用会极低 ...

可以自己选择collector,或者自己写collector的,想读啥就读啥,占用也很低
作者: Leeplog    时间: 2020-11-25 14:30
支持支持
作者: 风静树不止    时间: 2020-11-26 13:35
8a38a522 发表于 2020-11-25 13:55
可以自己选择collector,或者自己写collector的,想读啥就读啥,占用也很低

我已经实现了没必要~
作者: bbc8    时间: 2020-11-27 07:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: 34995549    时间: 2020-11-30 10:34
支持
作者: Legendyao    时间: 2020-11-30 13:10
支持楼主,成品出的时候记得发帖
作者: krazy176    时间: 2020-11-30 13:13
其实,只要能实现一个rtop多服务器版就可以,一个ssh命令连接并且查看多服务器的CPU、内存和io状态,界面可以参考vtop:
https://github.com/MrRio/vtop





欢迎光临 全球主机交流论坛 (https://loc.528866.xyz/) Powered by Discuz! X3.4