V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
GoRuby
V2EX  ›  程序员

夜莺监控突破一万 star,这是汗水,也是鞭策

  •  
  •   GoRuby ·
    UlricQin · 3 天前 · 4694 次点击

    夜莺监控项目在上周突破了一万 star ,算是一个小小的里程碑。在开源领域,通常把 star 数量看作项目的繁荣指标,star 数量越多,说明愿意关注你的人越多。这个数字的背后,是一群人对你的鼓励、认可和支持,当然,还有鞭策。夜莺项目最早发起于 2020 年初,发展到现在接近四年时间,本文想借此机会聊聊我们做开源的初心,这四年的感悟,以及多方共赢的商业模式设计。

    项目简介

    夜莺项目最初是我们在滴滴的时候开源的,后来捐赠给中国计算机学会开源发展委员会进行托管,以基金会的方式运作。其 github 地址是 https://github.com/ccfos/nightingale,其中 ccfos 就是 CCF OpenSource ,即中国计算机学会开源项目的统一地址。

    项目至今,有 130 位 contributor 参与,共提交了 2600 多次 commit ,发版了 170 多次,fork 数 1400 ,docker pull 228k ,虽说我们还有很多不足,但这些数字让我们看到了持续进步的汗水。如果一个开源项目可以坚持投入 4 年,甚至 10 年,20 年,我们坚信它的社会价值会越来越大。

    项目发起初心

    如果聊到项目开源的初心,那得追溯到 10 年前我们开源 open-falcon 那会了,当时确实啥都不懂,就是凭一腔热血为爱发电,当时觉得吧,我们搞了一个自认为还不错的项目,独乐乐不如众乐乐,放出来大家一起完善,项目会越发牛逼。当时的我们,也没有想过什么商业模式,只是想把这个项目做好,让更多人用,让更多人参与。

    实际遇到了如下一些问题,如果你也做过开源项目,估计会很有同感:

    • 维护者的心理压力大
      • 经常碰到不看文档的小白用户,问各种基础问题。就像一个二年级的小学生经常被问 1+1 等于多少,时间久了,会很厌倦
      • 偶尔会碰到颐指气使的人,用了你的项目,觉得你欠他的的一样,但凡遇到问题,不管是不是自己的问题就恶语相向

    开源项目维护者秒懂的痛苦

    • 维护者时间精力有限
      • 大部分开源项目都是维护者兼职在搞,时间精力有限,毕竟养家糊口才是第一位的,搞开源是上层精神层面的追求了
      • 这会导致有些问题处理不够及时,显然,这会导致用户不满。周末照顾家人时收到陌生人提问那也是家常便饭,我不开心,用户也不开心
      • 当维护者调岗跳槽之后,基本就不会继续参与了,这对项目而言是致命的
    • 项目功能发展设计其实还是靠你自己
      • 会有水平很高且愿意和你探讨项目设计发展的人,但确实数量不多,毕竟大部分开源项目影响力有限
      • 也会有参与者,通常是小修小改,偶尔还会碰到巨型 PR ,是要改你的命名规范,因为他觉得现有的命名规范不符合他的审美

    后来发起夜莺项目,我们就在思考如下这个关键问题:

    如何才能让一些人才持续全情投入?只要有人持续投入,项目一定会越来越好,不管是功能层面、性能层面,还是文档、社区支持,只要有人持续参与,一切都会越来越好。但是人家得养家糊口啊,除非给人发工资。工资从哪里来?靠项目自身去赚不就行了。于是,,,我们创业了,做了一家公司叫快猫星云。

    但是,事情远没有这么简单。

    开源和商业的天然悖论

    我们想到的第一个模式是靠技术 Support ,因为 RedHat 就是这么干的。普通用户提供社区支持,商业用户提供商业支持,如果客户在生产环境部署了你的软件,为了防止紧急生产故障,买个 Support 以防万一,这理所当然,看起来是个好模式。但也仅仅是看起来,实操中会发现如下问题:

    • 监控、可观测性系统,我们觉得是 P0 级服务,但是很多客户觉得不影响核心系统所以没关系,重视程度不高,如果是核心 DB 或 OS ,那就不一样了
    • 开源做的越好,比如功能越稳定、丰富,文档越完备,用户遇到的问题越少,越不需要 Support ,如果开源做的不好,用户量起不来,也不会有商业用户
    • 边界不好界定。如果只是夜莺软件本身出问题我们来提供支持理所当然,那客户问这个 promql 怎么写?达梦数据库怎么监控?这些问题就很难界定了

    所以,技术 Support 根本没有大规模商业化的底层逻辑支撑。如果你只是个人项目,养活自己就行,或者只是想赚点外快,这个模式或许还行,如果只是想养活几个人,这个模式我都觉得很难。

    另外,开源监控、可观测性项目,可选择的项目还比较多,你如果收费,别家免费,即便你做的更好,也很难有人买单。你有养家糊口的压力,但是其他有些项目的研发人员人家已经财务自由了,人家就是可以全职不拿钱做开源,你怎么办?

    多方共赢的商业模式设计

    其他领域不敢讲,监控、可观测性这个领域,如何设计一个多方共赢的商业模式?我的个人观点(注意,只是个人观点)如下:

    • 开源的部分,需要是功能闭环的,即,不依赖商业功能也能用的起来。而且这部分功能要足够好,让用户觉得用的很爽,这样才能吸引用户。这部分承接了我们的精神层面的诉求以及商业营销层面的诉求。这部分功能,我们可以把它叫做社区版。我们要在社区版这块投入全职人力,给他们发工资做开源。
    • 没有预算的开源用户,可以免费使用社区版,有社区提供的技术支持,虽然响应速度没有商业版快,总还会有人响应,比那些动不动就撂挑子的开源项目会强很多。
    • 有预算的用户,可以购买商业版,商业版的功能要比社区版更强大,技术支持也更及时。比如开源版会重点做告警引擎功能,而商业版会做大一统的可观测性平台。其定位不能相同,定位相同了就没法取舍,比如一个功能是放社区版还是商业版,就很难界定了。

    其他一些 ToB 商业公司同行可能会觉得我们这种做法就是毒瘤。因为我们开源的部分抢了他们的生意,但实际上,我们开源的是基础监控告警能力,即便没有我们,还是会有 Prometheus ,会有 Zabbix 这些前辈在,如果 ToB 公司的生意能够被开源项目抢走,说明你的产品能力可能还需要加强。而社区版也承载了我们的精神层面的诉求,我们希望为社会提供一个好用的监控系统,让更多人受益,这是初心,我们不可能放弃。

    活下去是责任,留下点什么才是关键价值

    有些创业导师说,如果你只是为了钱,那不应该创业。实际上,创业的原因哪能是单一的。肯定是既要又要还要啊。

    • 既要赚到钱,养家糊口,发得起工资,这是责任
    • 又要部分员工可以全职做开源,满足一下精神层面的需求
    • 还要让飞轮转起来,越做越好越做越大,让各方受益

    如果,我是说如果,我们站在生命的尽头,回首往事,什么会相对更有价值?我想,可能是过程中一起经历的风雨,以及我们生命留下的痕迹,我们在开源项目上的付出,可能会是我这碌碌无为的一生中最深的那个痕迹了吧。

    46 条回复    2025-01-03 17:10:40 +08:00
    akin520
        1
    akin520  
       3 天前
    项目是好项目,主要是根不上你更新的速度
    wonderfulcxm
        2
    wonderfulcxm  
       3 天前 via iPhone
    我是第一次看到这个项目,请问支持监控多台服务器吗?我想替换掉哪咤面板。
    XDiLa
        3
    XDiLa  
       3 天前
    @wonderfulcxm 肯定支持的啊
    southwolf
        4
    southwolf  
       3 天前 via Android
    open-falcon 时代就关注了。。。加油!
    arfa
        5
    arfa  
       3 天前
    项目是好项目, 建议你们别把大版本更新这么快
    comlewin
        6
    comlewin  
       3 天前
    很厉害,点赞👍。另外你们公司营收可以吗
    tuimaochang
        7
    tuimaochang  
       3 天前
    大佬牛逼!
    GoRuby
        8
    GoRuby  
    OP
       3 天前
    @comlewin 哈哈,这个说起来比较尴尬,只能说财务状况相对健康能活下去而已
    GoRuby
        9
    GoRuby  
    OP
       3 天前
    @arfa 收到。正式大版本一般是每年 7 月底夜莺大会上发版。小版本其实可以不用更新,不过很多人希望尽快拿到小版本的 feature 所以我们只要开发完了一点功能就会放出去
    GoRuby
        10
    GoRuby  
    OP
       3 天前
    @southwolf 🤝 这是 10 年相识的缘分了
    GoRuby
        11
    GoRuby  
    OP
       3 天前
    @wonderfulcxm 支持。在服务器上部署一个 agent ,就可以监控了。我们一般建议安装 categraf 作为 agent ,也可以使用 telegraf 、datadog-agent 、grafana-agent 等其他 agent
    GoRuby
        12
    GoRuby  
    OP
       3 天前
    @akin520 收到。正式版一般是每年 7 月底夜莺大会上发版。小版本其实可以不用更新,不过很多人希望尽快拿到小版本的 feature 所以我们只要开发完了一点功能就会放出去
    swulling
        13
    swulling  
       3 天前 via iPhone
    目前业界的模式是社区版提供的都是适合小规模个人、小团队、开发者使用的。其他的走商业版。

    有几个收费的点:

    1.UI ,社区版不提供或者只提供最简单的 UI
    2. 多租户。
    3. 分布式。社区版提供一个单点应用。
    4. 高级功能。社区版只提供最核心的功能。
    GoRuby
        14
    GoRuby  
    OP
       3 天前
    @swulling 补充一个点。国外赚钱感觉主要靠的是 Cloud 版本。而国内对 SaaS 模式不感冒,导致国内的模式和国外相比,有些差异。
    wonderfulcxm
        15
    wonderfulcxm  
       3 天前 via iPhone
    @GoRuby 感谢分享,我去了解一下。
    arfa
        16
    arfa  
       3 天前
    我觉得可以学一下禅道,虽然有点反感,但是人家这个赚钱的模式真心不错
    arfa
        17
    arfa  
       3 天前
    open-falcon 时,我也试玩过,但是当时觉得还不如 zabbix 方便,但是 nightingale 不一样了,使用起来就方便多了!
    accfcx
        18
    accfcx  
       3 天前
    支持。20 年时有同学在弹性云组下面,当时给我说夜莺是云那边的几个老板一起开源的,在这里又一次看见,感慨
    GoRuby
        19
    GoRuby  
    OP
       3 天前
    @arfa 能否稍微点拨两句禅道的商业模式?我们也好有针对性的学习下:)
    GoRuby
        20
    GoRuby  
    OP
       3 天前
    @accfcx 哈哈,转瞬 4 年喽~~
    PROJECT
        21
    PROJECT  
       3 天前
    如果有一键安装的脚本就好啦
    bazbaozhilv
        22
    bazbaozhilv  
       3 天前
    厉害了,这边一直在用
    hackroad
        23
    hackroad  
       3 天前
    商用 2 年了,加油。
    GoRuby
        24
    GoRuby  
    OP
       3 天前
    @PROJECT 夜莺自身实际就是一个二进制,直接启动就行了,只是有其他依赖,依赖 mysql 、redis ,如果要一键启动,可以使用默认提供的 docker compose 方式启动。如果只是临时测试,可以使用 v8.beta2 之后的版本,这个版本之后的版本,可以选择不依赖 mysql 、redis ,直接只使用二进制启动~
    GoRuby
        25
    GoRuby  
    OP
       3 天前
    GoRuby
        26
    GoRuby  
    OP
       3 天前
    @hackroad 感谢支持啊,任重道远
    hackroad
        27
    hackroad  
       3 天前
    @GoRuby 等下次 lai 总来上海,给他喝倒。
    matrix1010
        28
    matrix1010  
       3 天前   ❤️ 2
    其实我只要项目 star 过 100 就基本不怎么看这个了,而是看 CI ,看文档,看 issue 活跃度和质量这些。比如对比你的 CI 和 Grafana 的 CI 差别就十分巨大,你的项目 CI 里连测试这一步都没有。问基础问题的小白用户一般也不会是公司技术专家之类的,不太可能带来生意,最多也就能提供 star+1 的价值。不卑不亢回复就行
    wkong
        29
    wkong  
       3 天前
    厉害👍
    Steaven
        30
    Steaven  
       3 天前
    open-falcon 时,就在使用了,这么些年还一直是,我被离职了,还一直是,没有升级过😓
    GoRuby
        31
    GoRuby  
    OP
       3 天前
    @matrix1010 项目后期其实我已经很少写代码了,项目前期我写的比较多。测试与否这块倒是可以聊聊。可能跟我的经历有关,我刚毕业那会,在一个大厂,我们组有个大牛从来不写单测,也不要 QA 同事协助,但是他的代码质量很高,极少听到用户反馈他负责的部分哪哪有 bug ,而组里那些配备了 QA 同时还声称 TDD 开发模式的同事,从质量结果来看,却不尽人意。

    不写单测不代表不测,我现在的习惯是,一般很重视功能测试,一个功能跑通了,N 多个方法的正常路径就都跑通了,我个人觉得效率很高。监控系统,不像底层的 OS 、DB ,如果是 OS 、DB ,我觉得得有非常非常完备的 CI ,但是监控系统,作为一个上层系统,功能迭代较快,我感觉把功能测好就挺好了。

    以上,纯探讨,纯个人观点。
    GoRuby
        32
    GoRuby  
    OP
       3 天前
    @hackroad 这是硬茬子,哈哈
    GoRuby
        33
    GoRuby  
    OP
       3 天前
    @wkong 🤝🤝🤝
    GoRuby
        34
    GoRuby  
    OP
       3 天前
    @Steaven 10 年了...
    matrix1010
        35
    matrix1010  
       3 天前   ❤️ 1
    @GoRuby 你这个无法考证的个例我不评论。但做开源并且想赚钱,一定要想清楚谁会为你付钱,仅靠国内这样的风气/环境能不能赚钱。如果面向世界,那些可能付费的程序员/公司看重的是什么。star 其实是各种指标里最没用的一个,给你点 star 的人和深度使用的人很有可能重叠很小
    GoRuby
        36
    GoRuby  
    OP
       3 天前
    @matrix1010 你的观点是否正确我无权评论,不过确实是一个有独立思考的人,在这个浮躁的圈子里,值得点赞 👍
    Dxxxxs
        37
    Dxxxxs  
       3 天前
    看来当年在滴滴云实习的时候的时候和大佬同组过,支持一下
    GoRuby
        38
    GoRuby  
    OP
       3 天前 via iPhone
    @Dxxxxs 🤝🏻🤝🏻🤝🏻😃
    IndexOutOfBounds
        39
    IndexOutOfBounds  
       2 天前
    做过托管 Prometheus ,也调研过 FlashDuty 。路过给大佬点个赞
    GoRuby
        40
    GoRuby  
    OP
       2 天前
    @IndexOutOfBounds 🤝🤝🤝
    huangliu
        41
    huangliu  
       1 天前
    好项目,年初的时候有个同学还给我说他们公司也是基于夜莺进行二开的。开源项目要盈利或者说养活一个公司实在太难了,楼主已经做得很好了😂
    dfdd1811
        42
    dfdd1811  
       1 天前
    看着不错,但我的 1h1g 轻量实在是承受不了 mysql 和 redis…
    his0ka
        43
    his0ka  
       1 天前
    @dfdd1811 最新的版本,已经可以不依赖 mysql 和 redis 了,可以试用下:)
    GoRuby
        44
    GoRuby  
    OP
       1 天前
    @huangliu 嗯,基于夜莺二开的公司不少。现在人力有限很多工作推进的慢,只能持续加油了
    codingmiao
        45
    codingmiao  
       7 小时 18 分钟前
    不错,正好最近在找把 Prometheus 这个笨重的家伙换掉的方案。
    话说顺便看了下 ccfos 这个组织,唯一一个项目就是夜莺,就有点唏嘘,开源要走的路还很长很艰难呀。。
    GoRuby
        46
    GoRuby  
    OP
       7 小时 5 分钟前
    @codingmiao ccf odc 是刚成立没多久,有几个项目捐赠在流程中,这种单位的行动有点慢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1930 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:16 · PVG 00:16 · LAX 08:16 · JFK 11:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.