概述
APM:Application Performance Monitoring 的简称,即应用性能监控。NPM:Network Performance Monitoring 的简称,即网络性能监控。
技术实现
•APM: 应用服务器上安装代理
•NPM:交换机网络流量镜像
部署
•APM:每台应用服务器都需安装代理
•NPM:所关心的应用即 ip 加 port 所经过的交换机流量必须全部镜像
支持的技术
•APM:全部应用 java .net php nodejs 各种框架
•NPM:http,tcp等各种网络协议
监控颗度
•APM:应用服务器上应用内部的全部调用过程,内存对象和线程的全部解析。
•NPM:则只涉及到协议的 request 例如url,无法深入部调用。也无法对交易自动化完整串联跟踪;但是会有网络设备的网络性能。
缺点
NPM
•流量没有走交换机, 比如都是同一台宿主机上的虚拟机, 则无法监控
•监控只限于网络层面, 无法深入应用和代码
•如果网络协议加密, 则可能需要私钥进行解密, 或无法解密, 或解密过程性能消耗较大.
•无法监控数据中心以外的数据
APM
•主要支持 JAVA/.Net 等语言的监控, 特定语言(如:C)及特定应用服务器(如:Tuxedo)无法监控
•商业 APM 按节点计费, 较难做到全覆盖
•数据中心, 如果技术栈不支持, 则无法做到全监控•侵入式部署
优点
NPM
•数据中心全覆盖(当然,也是有条件的,但是相对 APM 容易实现)
•通过相关的网络协议监控,可以更广泛地实现客户关注的效果
•针对银行交易有完整的成熟的解决方案(如:天旦BPC)
•部署非侵入式
APM
•可以监控到数据中心以外的数据(其实需要 RUM 即 Real User Monitoring)
•应用性能问题深入追踪(具体到方法/线程快照/内存快照/异常/日志/同步异步调用等)
•用户体验管理(用户操作/手机 APP/浏览器)(也是通过 RUM 实现)
适用场景
APM
•更关注应用性能问题
•开发/中间件运维
•需要对应用/中间件关键指标进行监控和告警
•系统架构都是 JAVA/.NET/php/node.js.... (无 C 无 tuxedo) , 则可以进行自动的交易关联, 且监控细粒度会很细.
•需要对数据中心外的用户体验(如用户点击操作数据/手机APP/浏览器端数据)监控
NPM
•业务监控(典型如银行交易笔数)
•更关注网络性能问题
•系统架构中含有非 .net/JAVA 系统, 如 Tuxedo
•无法接受侵入式部署
•银行(有完整的解决方案, 如天旦 BPC)