XUGOU - 轻量级系统监控平台,基于 CloudFlare 零成本部署! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zaunist
V2EX    分享创造

XUGOU - 轻量级系统监控平台,基于 CloudFlare 零成本部署!

  •  1
     
  •   zaunist
    zaunist 196 天前 3780 次点击
    这是一个创建于 196 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,最近搞了个小玩意儿,特来分享一下。

    啥玩意儿?

    简单来说,这是一个轻量级的系统监控平台,使用 CloudFlare 免费搭建,能够让你实时监控自己的服务器、网站、API 接口状态,同时也带有一个公开分享的状态页面。

    为啥做这个?

    说实话,市面上的监控方案要么太重太复杂(比如 Prometheus + Grafana 全家桶),要么就是收费不便宜(比如 UptimeRobot Pro 、Pingdom 之类)。而我只是想有个简单干净的方案,能够:

    • 监控几台自己的小破服务器状态( CPU 、内存、磁盘这些)
    • 检测几个网站和 API 接口是否正常
    • 有个好看的状态页面放出来让用户知道服务健康状况

    于是,就整了这么个玩意儿。最最最重要的其实就是想有个支持自定义,且可以白嫖的方案。

    有啥特点?

    • 完全基于 CloudFlare:数据存储用的 D1 ,后端用的 Workers ,意味着你几乎不用花一分钱
    • 颜值在线:基于 React + Radix UI 开发的前端,简洁但不简单
    • 好上手:一行命令部署 agent ,后端直接 wrangler 一键部署
    • HTTP/HTTPS 监控:支持定制请求方法、请求头和请求体,满足各种 API 监控需求
    • 实时数据可视化:直观的图表展示,支持历史趋势分析

    已经做了啥?

    目前已经完成的功能:

    • 系统监控:实时收集 CPU 、内存、磁盘、网络等指标
    • HTTP 监控:检测你的网站、API 接口是否正常响应
    • 数据可视化:啥指标都有漂亮的图表展示
    • 自定义状态页:一个能放出去的状态页面,让用户知道你的服务状态

    计划整啥?

    • 异常通知:增加告警以及告警通知
    • 移动端:移动端 APP ,想来用 expo 糊一个 APP 应该也挺简单的,方便在手机上看

    咋用?

    基本上就三步走:

    1. 克隆仓库:git clone https://github.com/zaunist/xugou.git
    2. 部署后端:在 CloudFlare 账号配置好 D1 数据库,并部署后端到 worker
    3. 部署前端: 在 CloudFlare 部署前端到 pages

    详细教程放在了 WIKI 里。

    在线体验

    仓库地址: https://github.com/zaunist/xugou

    在线体验地址: https://xugou.mdzz.uk ,默认用户名密码:admin admin123

    在线状态页地址: https://xugou.mdzz.uk/status


    好了,就说这么多,对项目有啥问题或者需求,欢迎去提 issue 讨论

    第 1 条附言    194 天前
    3 月 30 日更新:
    新增了 telegram 通知,当满足通知条件时,可以通过自定义的 tg bot 发送信息。
    https://xugou.mdzz.uk/ 默认提供了一个测试通道,效果可以在 https://t.me/xugou_group 查看
    14 条回复    2025-03-31 14:24:31 +08:00
    internelp
        1
    internelp  
       196 天前
    很不错,期待告警。
    chauncychan
        2
    chauncychan  
       196 天前
    很不错,期待告警功能上线
    qweruiop
        3
    qweruiop  
       196 天前
    很不错,期待可以配置 telegram 的报警。然后页面设计,比着 kuma 做就好啦!
    ggvoking
        4
    ggvoking  
       196 天前
    期待一下,感觉很符合我的需求,目前用的 koyeb 搭建的哪吒,但是不需要这么多功能。
    woodchen
        5
    woodchen  
       196 天前
    挺棒的
    feaul
        6
    feaul  
       196 天前
    不错,怎么能检测端口呢
    Jiki
        7
    Jiki  
       196 天前
    基于 CloudFlare 好评

    另外看到一个 Beszel 也挺不错,可以参考
    zaunist
        9
    zaunist  
    OP
       196 天前
    @taklele 我这里有 agent ,是一个使用 go 开发的客户端程序,这个就是由客户端来主动上报信息的。我计划的监控就是两种模式,一种是服务端去请求指定端点,获取服务状态,第二种是客户端主动注册到服务端,并上报客户端信息。目前这两种模式都有,只不过功能还比较简陋。

    这个监控,实际上我就是学着 uptime-kuma 和 beszel 来写的,实际上用户管理也是有的,只不过现在我没开放开注册功能,因为目前的实现还是太简陋,一般就使用一个管理员用户就行了。并且我考虑到使用这个监控,大多数都是为了白嫖 cloudflare ,那么单个网站的监控数量也不会多,所以想着功能简单一些就好。

    现在在我计划中,还需要补充的功能,一个是告警通知,另一个是做一个移动端 APP ,目前来看难度都不大,最大的问题是我能不能从炉石传说里抽出时间来搞
    taklele
        10
    taklele  
       196 天前
    我看到客户端功能了,理念是一致的。
    客户端还需要下载安装等等。我说那个网站就轻很多了,一条请求搞定。
    炉石传说刚开新版本,是比较难抽时间,还好我是玩酒馆的
    taklele
        11
    taklele  
       196 天前
    @zaunist #9
    我看到客户端功能了,理念是一致的。
    客户端还需要下载安装等等。我说那个网站就轻很多了,一条请求搞定。
    炉石传说刚开新版本,是比较难抽时间,还好我是玩酒馆的
    zaunist
        12
    zaunist  
    OP
       196 天前
    @taklele 一条请求的话,应该是自动去下载脚本,然后脚本去执行安装客户端这些操作吧,这个我也考虑过,但是有一些细节的问题我当时没想好怎么设计,后面好好想想怎么去实现吧
    laox0
        13
    laox0  
       192 天前
    太好了,正需要,传统监控,在自己服务器监控可用性,但是服务器都挂了,那永远没法发送异常通知
    为此额外单独弄一台服务器又没必要,有 CF 大善人做后端,那就无敌了
    期待异常通知,希望可以支持企微通知
    zaunist
        14
    zaunist  
    OP
       192 天前
    @laox0 有需求欢迎去 github 提交 issue 讨论,论坛里的评论我担心过段时间不看就忘记了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3830 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 00:54 PVG 08:54 LAX 17:54 JFK 20:54
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86