概述
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)
三人行, 必有我师; 常识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.