最近因为项目的缘故,常常会和同窗们聊到一个话题,那就是企业如何在应用性能管理(Application Performance Monitoring, 简称APM) 领域的开源和商业化产品中选择合适本身的产品,下面就以该领域为例和你们作一个分享。数据库
先说结论:没有统一答案,企业用户应当从自身需求,技术掌握深度,建设成本这三个方面来衡量。架构
企业性质和最终方案并发 |
技术掌握程度框架 |
自身需求运维 |
建设成本分布式 |
---|---|---|---|
世界500强的IT部门, 最终选择商业产品,部署方式为专用云 | 已经被各大APM厂商进行过POC,接口人对APM领域有必定理解;已经在内部进行过多轮DevOps概念推广和相关环境建设。 | 1.配合压测调优性能;2.能快速推广和应用到全集团;3.集团大屏幕输出;4.平常运维中的问题报警,排查,诊断。 | 1.产品费用+咨询费用;2.每一年的产品升级和维护费用;3.2名甲方接口人员;4.内部机器成本。最大并发监控规模:万台。平均每台活跃实例/年监控成本在4000元左右。 |
数千人的中型互联网公司,最终选择基于 pinpoint 自建 | 负责人为多年从事APM领域的资深专家,并有从原来APM厂商转来的Pinpoint Commiter,正在进行DevOps建设。 | 平常运维中的问题报警,排查,诊断为主。 | 1.4名开发人员至少一年的开发维护时间。2.2名运维人员的平常维护和推广。3.内部机器成本。最大并发监控规模:千台。平均每台活跃实例/年监控成本在2000元左右。 |
数十人的创业团队,最终选择公有云商业产品 | 对APM领域,仅仅是听过几场meet up,以业务开发为重心。 | 平常运维中的问题报警,排查,诊断为主。 | 公有云产品费用,根据业务量,灵活扩缩容。最大并发监控规模:数十台。平均每台活跃实例/年监控成本在1000元左右。 |
上面是三个不一样企业规模中APM使用的一个大体状况以及他们的选型和成本状况。当把需求落到具体使用场景上时,商业化产品和开源产品在完成度上,其实也有不少区别:工具
使用场景性能 |
商业化产品-以阿里云ARMS为例学习 |
开源产品--以Pinpoint和Skywalking为例测试 |
---|---|---|
报警和报表:做为平常运维工具,报警功能必不可少。在平常巡检中,须要把关键信息放在一个页面中造成报表,而且对报表定时进行推送。 | 支持丰富维度的数据报警设置,以及丰富的推送渠道,包括钉钉,短信,邮件等。支持用户自定义设置各类业务报表。 | 支持简单的报警功能,大部分状况下须要用户额外进行开发和集成。 |
用户反馈问题跟踪:能根据某一个业务关键ID 查询出对应的分布式调用链路和相关的log。 | 支持全系排查和100%链路采集。 | 不支持。 |
代码瓶颈诊断:发现问题之后,须要快速定位到代码性能瓶颈。 | 无需额外的埋点,自动适配大部分主流框架,支持自定义埋点。单线程快照技术,能监控到没有埋点的业务代码的运行状况。 | 无需额外埋点,支持自定义埋点。 |
稳定性&可拓展性。 | 通过多年那双十一挑战,产品性能稳定。SaaS产品动态扩缩绒,无需用户关心。 | 开源项目未通过大规模生产环境检验,须要用户本身进行稳定性的测试,以及根据数据量进行扩缩容量。 |
使用咨询。 | 5*8阿里云专家咨询服务:可针对性输出阿里云多年性能调优经验和使用场景,帮助用户快速落地APM产品。 | Github issue为主无商业化公司支持,出现问题大部分本身解决。 |
定制化能力。 | 支持经过API定制本身的展现页面。 | 开源产品,能够进行任意改动。 |
以阿里云 ARMS 为例,假设监控50个实例,估算下成本:
在当今互联网云时代,企业在选择建设本身监控系统的时候,必定要结合自身状况进行产品和架构选型,具体建议以下:
公司形态 | 用户画像 | 建议选型 |
---|---|---|
小型初创公司 | 以公司生存,业务发展为主,须要快速见效而且性价比高的产品。 | 以公有云Saas为主,不建议投入过多精力在监控领域的开源自建,而须要专一于核心业务发展。 |
中型成长企业 | 有较稳健业务收入和增加,但愿对于技术有所发展和挑战。 | 商业产品+开源产品,能够经过商业产品快速学习某一领域知识,再结合自身状况经过开源产品定制部分监控,如采用grafana定制监控大盘。 |
大型上市公司 | 有自建机房,业务求稳,并且在国内外有较强监管和合规需求。 | 考虑采用专有云和混合云的商业化服务为主,能够配合厂商尝试开源产品,部分科技型公司可选型开源产品。 |