概述

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)

APM vs NPM的更多相关文章

  1. atom插件安装引发的nodejs和npm安装血案

    最近在写前端网页,学习就要从高大上的地方开始,于是我打算装一个atom编辑器. 本来就是由github客户端的,再装个atom也算是配套了吧,其实本白也是蛮费心思的,技术不怎么地,什么神器都再努力地使 ...

  2. 解决mac下atom安装插件失败问题

    activate-power-mode的超炫编辑效果打动了我,花时间安装了atom,之后在package,install里面找到了这个插件,但是安装失败,如下图所示: gyp info it work ...

  3. install atom markdown preview plus error

    Installing "markdown-preview-enhanced@0.15.2" failed.Hide output- npm ERR! Darwin 17.2.0 n ...

  4. ubuntu 下安装 activate-power-mode

    转自网络 被朋友圈中的atom的activate-power-mode 震撼到了,于是想试试. 步骤如下 首先安装atom: sudo add-apt-repository ppa:webupd8te ...

  5. 工作总结 用, 隔开数据 后台不可以用 List<string> 接收 get请求直接通过浏览器发请求传数组或者list到后台

    旁边的 css js 为项目的 加载 css js 地址 只加载引用的样式 js http://localhost:8736/LinInFoKPI/ExcelPrint?line=&start ...

  6. get请求直接通过浏览器发请求传数组或者list到后台

    原文链接: http://blog.csdn.net/qq_27093465/article/details/76160419 感谢原作者 例如: http://localhost:27001/tes ...

  7. Node.js项目APM监控之New Relic

    现在上一个项目,如果没有APM监控服务或应用的运行性能参数,等于是一架没有盲降系统的飞机正在盲降,结果会很悲催.出现了访问失效等问题时,都很难判定是性能瓶颈还是一个藏的深的bug,汇报的时候一顿眼晕, ...

  8. 国内APM企业的现状

    19世纪美国西部掘金热大起,大家听闻有人挖到了金子一夜暴富,于是蜂拥而上,但是很多人失望而归,最后居然是卖铲子的人赚到了钱. APM在互联网+时代表示应用性能管理,就是掘金万亿互联网市场的“铲子”,主 ...

  9. 【npm】如何在Atom中安装emmet和atom-beautify插件?

    为了提高编写HTML和CSS的速度,最近尝试着在Atom中安装emmet插件,下面谈谈安装成功的过程 1首先我尝试了网上教程中介绍最多的方法:打开Atom的引导界面(Welcome Guide)中的i ...

  10. NPM实用指北

    npm作为下载node附送的大礼包,大家一定不会陌生. 然而关于npm,估计大量的只是用到npm install XXX以及npm run XXX. 其实这里边还有很多有意思的命令&参数.关于 ...

随机推荐

  1. 【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢? 

    问题描述 使用Azure Application Insights收集AKS中ASP.NET Core应用的监控数据,自动收集请求的Trace情况,用于分析单个请求在应用内部的耗时及处理事件情况,参考 ...

  2. 【Azure Redis 缓存】Azure Cache for Redis 服务的导出RDB文件无法在自建的Redis服务中导入

    问题描述 使用微软云的Redis服务,导出它的RDB文件后,想把数据恢复到本地自建的Redis服务中,发现出现如下错误: 15000:S 21 Jun 08:14:11.199 * Retrying ...

  3. ffmpeg 使用记录

    这周周末尝试把我硬盘上面的视频文件压缩了一下,但是效果并不理想.其中主要有两个原因, 视频本来就是h264的编码,再重新编码也没啥用,因为限制大小的主要是码率 ffmpeg GPU加速版的h265编码 ...

  4. RocketMQ(6) offset管理

    这里的offset指的是Consumer的消费进度offset. 消费进度offset是用来记录每个Queue的不同消费组的消费进度的.根据消费进度记录器的不同,可以分为两种模式:本地模式和远程模式. ...

  5. 为什么现在连Date类都不建议使用了?

    一.有什么问题吗java.util.Date? java.util.Date(Date从现在开始)是一个糟糕的类型,这解释了为什么它的大部分内容在 Java 1.1 中被弃用(但不幸的是仍在使用). ...

  6. docker 系列

    docker 系列 目录 docker 系列 一. docker 定义 1 nameSpnce 命名空间 2 cgroup 控制组 3 为什么使用容器 二. docker 安装 三 .docker 初 ...

  7. iview 表单验证 爆红后,有某些组件现隐,爆红和必填会错位,解决方案 组件上加key

    iview 表单验证 爆红后,有某些组件现隐,爆红和必填会错位,解决方案 组件上加key

  8. 记录--用three.js渲染真实的下雨效果

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 建模 首先我们需要一些贴图素材 贴图素材一般可以在3dtextures网站上找到,这里我找了2份,包含了墙的法线贴图和潮湿地面的法线.透明 ...

  9. replace小数点后保留2位

    小数点后保留2位 网上一堆小数点保留2位正则,但大部分都是直接copy,未解决0101和以.开头的这种情况 网上写法 obj.value = obj.value.replace(/[^\d.]/g,& ...

  10. C# OpenCv Haar、LBP 人脸检测

    using OpenCvSharp; namespace OPenCVDemo { class Program { static void Main(string[] args) { // Load ...