当前位置: 首页 > news >正文

应用监控的选型思考

最近由于项目的缘故,经常会和同学们聊到一个话题,那就是企业如何在应用性能管理(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个实例,估算下成本:

  • 机器成本:至少7台机器 (3台存储,2台应用,2台Console)+数据库,成本一个月四千以上;用ARMS,费用小于4000左右,成本略低于自建,几乎持平。
  • 运维人力成本:ARMS无需担心扩扩容,用多少付多少,ARMS无需运维工程师,节省人力开支。用以上开源软件至少需要一个专业的运维工程师,中位数工资,约10000左右。
  • 额外开发人力成本:ARMS作为商业产品,每月发布一个新的版本,不断迭代,而且功能丰富。使用开源产品需要自己开发报警和相关运维功能,至少需要2个专业的开发工程师,中位数工资,约40000左右。

总结

在当今互联网云时代,企业在选择建设自己监控系统的时候,一定要结合自身情况进行产品和架构选型,具体建议如下:

公司形态用户画像建议选型
小型初创公司以公司生存,业务发展为主,需要快速见效并且性价比高的产品。以公有云Saas为主,不建议投入过多精力在监控领域的开源自建,而需要专注于核心业务发展。
中型成长企业有较稳健业务收入和增长,希望对于技术有所发展和挑战。商业产品+开源产品,可以通过商业产品快速学习某一领域知识,再结合自身情况通过开源产品定制部分监控,如采用grafana定制监控大盘。
大型上市公司有自建机房,业务求稳,而且在国内外有较强监管和合规需求。考虑采用专有云和混合云的商业化服务为主,可以配合厂商尝试开源产品,部分科技型公司可选型开源产品。


相关文章:

  • MyEclipse恢复被删除的文件
  • 贺建奎:愿意用自己孩子第一个尝试,研究不小心泄露,英美也有类似实验
  • 线性回归感觉会有用 临时保存,
  • 什么是UE、UI、UCD、UED?UE、UI、UCD、UED四者的区别(转)
  • 20181126上课截图
  • POJ 1364 King --差分约束第一题
  • Gradle 5.0 正式版发布
  • STM32 外扩 SRAM
  • 当前佛教界的乱相之一就是以凡滥圣、惑乱人心
  • Redis 集群管理常见操作
  • 关于cxf生成客户端代码中的JAXBElementString
  • (转)Linux下编译安装log4cxx
  • Spring上传多文件并供下载
  • 解决Android LogCat 输出乱码的问题(转)
  • 原有vue项目接入typescript
  • 【Linux系统编程】快速查找errno错误码信息
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Android单元测试 - 几个重要问题
  • Angularjs之国际化
  • Angular数据绑定机制
  • Apache Zeppelin在Apache Trafodion上的可视化
  • iOS 系统授权开发
  • java中的hashCode
  • Joomla 2.x, 3.x useful code cheatsheet
  • MySQL数据库运维之数据恢复
  • Next.js之基础概念(二)
  • React中的“虫洞”——Context
  • SQLServer之创建数据库快照
  • ubuntu 下nginx安装 并支持https协议
  • Vue小说阅读器(仿追书神器)
  • Windows Containers 大冒险: 容器网络
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 订阅Forge Viewer所有的事件
  • 推荐一个React的管理后台框架
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 智能合约开发环境搭建及Hello World合约
  • 阿里云服务器购买完整流程
  • ​低代码平台的核心价值与优势
  • !$boo在php中什么意思,php前戏
  • "无招胜有招"nbsp;史上最全的互…
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • $GOPATH/go.mod exists but should not goland
  • $NOIp2018$劝退记
  • (007)XHTML文档之标题——h1~h6
  • (4)logging(日志模块)
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (转) ns2/nam与nam实现相关的文件
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?