【Komari 接手第三天】服务端架构整理比想象中更快

steve1996 2026-09-21 21:46 1

目前还是处于对原项目的重构阶段,同时理解项目结构,重构之后会增加更多探测指标。

agent昨天已经整理完了,毕竟代码量不多。

服务端代码量比较多。


服务端目录结构



  • cmd —— 命令行解析入口

  • internal —— 核心业务逻辑

  • pkg —— 可被外部复用的公共工具包




internal 内部按 features 组织,目前理过的模块有:



  • node —— 客户端连接/上报

  • notification —— 负载/流量/离线阈值通知

  • renewal —— 自动续费(这次从 notification 里单独拆出来的)

  • ping —— 延迟监测

  • plugin —— 插件运行时,JS 沙箱 + HTTP/WS 钩子

  • theme —— 主题市场

  • recovery —— 数据库连不上时的恢复界面

  • auth/backup/install/migration


另外 platform 下面放的是各模块共用的基础设施(数据库、指标存储、设置读写这些)。


整理过程中修复了不少 bug



  • 一批 RPC handler 忽略了参数解析的错误返回值,格式不对的请求体会被当成空参数处理,而不是报错

  • 一处密钥比较用的是非恒定时间字符串比较,有时序侧信道风险

  • 隐藏客户端列表查询失败时原来是静默放行(fail open),改成失败就拒绝

  • 一个内存泄漏:客户端被删除后,对应的事件队列没人清理


等等。


架构还是很重要啊!每个模块职责要清晰,不要混入不相关的职责(单一职责原则)。


感觉这周可以至少可以发个 Nightly 版本了。


关于主题:

- 打算换个默认主题,当前主题不好看

- 建个网站,可以预览主题,现在的主题只能安装后才能看效果,有些麻烦




GitHub:https://github.com/komari-probe/komari-probe

Telegram:https://t.me/komari_probe

最新回复 (40)
  • huimm-五 09-21 21:48
    1

    点赞

  • morain 09-21 21:48
    2

    加油!

  • xxcake 09-21 21:50
    3

    加油

  • ego 09-21 21:58
    4

    等你星星起来了 我给你投1panel应用商店

  • collapsar 09-21 21:58
    5

    加油

  • CUP 09-21 21:59
    6

    https://github.com/towersip/komari-theme-Glassmorphism


    这个作为默认主题怎么样?修复好多bug,很稳也好看。

  • steve1996 楼主 09-21 22:01
    7

    @CUP #6



    就是这个吗?我自己在用,我打算把这个作为默认主题,仓库都建好了

  • luckystar888 09-21 22:01
    8

    komari No.1

  • 梦影 09-21 22:02
    9

    ^-^ 在线演示可以参考一下我的,部署到cloudflare上看看还行。

  • CUP 09-21 22:02
    10

    @steve1996 #7 这个是修改版的,比原版优化了三网延迟,ios27显示bug。

  • CUP 09-21 22:03
    11

    @steve1996 #7

  • steve1996 楼主 09-21 22:03
    12

    @CUP #10


    ok,那就使用这个作为默认主题

  • oogami 09-21 22:04
    13

    能不能用 Rust 重写一遍?Go 占用的资源还是有点多

  • steve1996 楼主 09-21 22:07
    14

    @oogami #13


    我之前也使用rust写过一个项目,go语言在服务器上也很吃香吧,使用rust重写探针+服务端——工作量有些大......

  • Mr-Kong 09-21 22:07
    15

    加油

  • 通宝 09-21 22:15
    16

    ^-^ 等一波硕士探针

  • GhostKyi 09-21 22:20
    17

    要是可以精准统计机器流量就好了,哪怕不关机,一个月的流量统计和官网的统计还是不一样。不知道啥原因

  • steve1996 楼主 09-21 22:30
    18

    @GhostKyi #17


    差距有多大,komari现在是读取网卡数据。

  • GhostKyi 09-21 22:37
    19

    @steve1996 #18 这个月的还不准,komari有几天是断联,更新版本后才连上。类似于一个160G,统计的上下行只有110左右。


    话说假设断联后几天,komari重新运行了,会更新网卡的数据吗?还是说在原有的数据上继续累加?以及komari的流量日期重置是按照每月1日重置还是按照我此前设置好的到期日重置?例如明年3月10号,Komari是每月10号重置还是1号重置流量统计呢


    下图是komai和dmit官网的流量统计。


  • Noomi 09-21 22:42
    20

    @GhostKyi #19 有没有一种可能,大妈面板上的流量统计就是有点问题,她确实就是会比实际少一点。

  • Jensfrank 09-21 22:44
    21

    @CUP #6 这个可以啊,喵喵维护的主题,之前komari的bug是有点多啊,可以平移升级?

  • yanleichang 09-21 22:47
    22

    期待第一版

  • CUP 09-21 22:51
    23

    @Jensfrank #21 是的,这个和原版共存,改了名字。

  • Jensfrank 09-21 22:52
    24

    @CUP #23 好的,后续看看咋搞

  • CUP 09-21 22:52
    25

    @Jensfrank #21 另外喵喵是哪个佬,也在论坛吗

  • Jensfrank 09-21 22:53
    26

    @CUP #25 这里不知道叫啥,那个主题就是他搞的吧

  • shine 09-21 22:59
    27

    加油

  • GhostKyi 09-21 23:01
    28

    @Noomi #20 是比实际多一点?打错字了吗。


    因为大妈是88G,komai是48G

  • Noomi 09-21 23:02
    29

    @GhostKyi #28 没打错,就是少,大妈就是这样的,他自己的面板要比实际产生的流量少百分之十五左右,我当初有看过网卡流量

  • steve1996 楼主 09-21 23:13
    30

    @GhostKyi #19


    先来回答第二个流量重置日的问题。


    首先来区分流量重置日和到期日的概念。


    到期日:比如你的VPS买了三个月,那么12月21日就是到期日,这是用来提醒用户关于VPS是否还需要继续续费。设置如图



    流量重置日:月付机器,每个月流量重置的日子,比如今天买,那么流量重置日就是9月21日

    设置如图:



    如果不勾选,那么就不会进行流量重置,会一直累加。


    这里有缺陷,流量重置日一般可以从到期日推算出来。这里之后可以进行优化。

  • Enix 09-21 23:24
    31

    加油

  • anarkh35 09-21 23:24
    32

    加油

  • steve1996 楼主 09-21 23:38
    33

    @GhostKyi #19


    再来看第一个问题,我想你问的问题应该是:断连几天,重新连接后,显示的流量数据还准不准?


    刚刚看了代码,感觉当前的实现有些复杂,我想到一个更简单的实现(和AI讨论了一大圈,本质都是基于网卡统计数据的算法),之后会进行优化。优化之后的流量统计从原理上基本不会出问题。如果官网自有一种统计方法,那可能还是有会有差距

  • GhostKyi 09-22 00:00
    34

    @Noomi #29 那应该是我这机器目前komari断联了几天没有统计机器本身已使用的流量。

  • GhostKyi 09-22 00:01
    35

    @steve1996 #33 原来如此,另外我也确实没在komari上设置重置日期,得更新一下。

  • h2sy60 09-22 00:27
    36

    加油

  • xpro 09-22 07:01
    37

    期待早日上架

  • asdasdwdq 09-22 10:29
    38

    许愿希望能增加一个可以监控 恶意后门软件自启动服务 的监控功能,可以监控linux常见启动保活项,比如systemd service,cron,Supervisor等,对于新增的自启动项可以上报探针然后进行TG等通知交由用户识别处理(自己部署的肯定一眼能看出来),尽可能的在黑客入侵早期发现隐患

  • steve1996 楼主 09-22 10:34
    39

    @asdasdwdq #38


    我先记着,之后增加功能的时候,考虑下

  • asdasdwdq 09-22 10:40
    40

    @steve1996 #39 感谢

* 帖子来源NodeSeek
返回