建立可观测性,是应该自己搭建,还是直接购买商业产品呢?有成本,我们必然希望它伴随着收益。建立可观测性的回报,主要是在系统可靠性的提升上。可观测性可以为最终用户带来更好的体验和服务,满足业务的需求,甚至是驱动业务的发展。
自己搭建可观测性一般基于开源的产品进行构建和二次开发,这应该也是更多企业能够接受和采取的方式。通过开源软件自建可观测性,可能需要下面这些组件。
- 监控:Prometheus+Grafana。
- 日志:Logstash+Kibana。
- 链路追踪:SkyWalking。
- 数据存储:Elasticsearch 集群。
- 消息队列:Kafka 集群。
- 数据库:MySQL 集群。
- 内存数据库:Redis 集群。
就需要考虑像资源、人力还有一些隐性成本了。
1、资源成本
- 要满足数据量较大的情况,简单的几台 1C2G 虚拟机是很难解决问题的。尤其是在生产环境中,如果数据量大,Elasticsearch 的计算节点需要较高配置,一般来说需要 16C 64GB 的两个主机节点再加一个控制节点。
- 日志的原始数据到后端的存储,虽然存在一定的压缩,但实际容量还需要考虑索引、2 份数据副本等因素所占据的存储空间。
- 如果使用公有云,还需要考虑各个计算节点的存储成本。另外,自建数据中心还涉及服务器成本、机房费用、后续扩容成本等等。
2、人力的成本
- 维护这些自建的工具,1 个人肯定不够,往往需要 2~3 人的团队来进行安装部署、功能的开发、问题的排查和处理、性能的调优等方方面面的工作。
- 二次开发也需要人力成本。绝大多数的企业并不具备二次开发的能力,但即使进行二次开发,也可能因为主导这个的技术负责人或相关人员离职,导致项目难以为继。由于可观测性面对的是全量的不断迭代的技术栈,如果人手不足,无法跟上技术发展情况,整个团队的技术应用反而会被限制,所以这方面不可忽视。
- 同时,我们也要考虑技术人员的真实水平,需要考虑他们是否有足够的能力来提供一个具有用户界面,且工作流程兼具灵活性和性能的系统,这样才可能在企业范围内推广可观测平台。如果产品力不够,无法达到可观测性的效果,将带来更多的成本损失。
3、隐性的成本
- 由于这种将开源软件组合起来的方案,从某种意义上来说只能称之为一些工具的组合,不能称之为完整的可观测平台(它并没有完全解决数据孤岛的问题)。当你遇到一些业务问题时,仍然需要访问不同的工具来分析问题,而且还需要和不同的团队沟通,会花费很多时间。
- 持续维护也需要成本。你的技术栈中的底层第三方组件必须及时更新和补丁,同时你还需要考虑自建组件的安全问题。
通常来说,基于开源软件自建可观测平台,不需要等待比较长的采购周期。完成选型之后,可以快速开始构建。在互联网快速发展的今天,这是不小的优势。有技术能力的企业可以快速上手、构建原型,并通过不断打磨逐渐完善平台。
而且,比较成熟的开源软件往往有强大的技术社区做支撑。有来自世界各地成百上千的程序员共同维护一套软件,可以保持活力,让软件不断得到更新,既有问题较快得到修复。
另一方面,自己构建软件可以建立企业内部的专业知识。每个企业都会有自己的需求,继而会需要将这些需求转化成软件的功能。自建这种方式让企业内部的利益相关者的沟通、协调更加顺畅,能更好地为业务需求服务。