APM vs NPM

概述

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)
本文转载于网络 如有侵权请联系删除

相关文章

  • 清除浮动与BFC

    当给子元素设置float属性时,会出现子元素高度无法撑开父元素高度的问题,如下图所示:test.png解决办法有两种:给父元素的前后伪类设置clear:both;.clearfix:before, .clearfix:after{ content:''; display:table; clear:both; }复制2.创建BFCposition不为static和relativeoverflow不为visibledisplay为inline-block,table-cell,table-caption,flex,inline-flex.main{ width:1200px; padding:20px; margin:100pxauto; overflow:auto;/*创建BFC*/ }复制

  • 我不知道的 Event Loop

    EventLoop是MS中的高频问题,理解繁琐,一步小心,步步入坑。1、本文要点1、EventLoop是什么? 2、任务队列是什么? 3、同步任务和异步任务? 4、微任务和宏任务? ...复制2、EventLoop是什么?我们都知道Js是单线程语言,即同一时间只能做一件事情,但是为了协调各种事件、用户交互、脚本加载、UI渲染和网络处理等行为,避免主线不阻塞,出现了EventLoop=>==事件循环==也就是我们常说的异步的方案。过程:在执行主线程的任务时,如果有异步任务,会进入到EventTable并注册回调函数,当指定的事情完成后,会将这个回调函数放到callbackqueue中 在主线程执行完毕之后,会去读取callbackqueue中的回调函数,进入主线程执行 不断的重复这个过程,也就是常说的EventLoop(事件循环)了复制3、任务队列是什么?事件循环是通过任务队列的机制来进行协调的。一个EventLoop中,可以有一个或者多个任务队列(taskqueue),一个任务队列便是一系列有序任务(task)的集合;每个任务都有一个任务源(tasksource),源自同一个

  • 实现一个基于 IConfiguration 的低配版 FeatureFlag

    实现一个基于IConfiguration的低配版FeatureFlagIntro在我们的应用中,可能有一些配置开关的需求,某些功能是否启用使用一个配置开关,用的时候就打开,不用的时候就关掉,于是基于.NETCore的里配置体系写了一个简单的FeatureFlag,类似于之前的AppSetting的扩展给IConfiguration写一个GetAppSetting扩展方法Sample首先来看一个实现效果:[HttpGet("[action]")] [FeatureFlagFilter("Flag1",DefaultValue=true)] publicIActionResultFeatureEnableTest() { returnOk(new { Time=DateTime.UtcNow }); } [HttpGet("[action]")] [FeatureFlagFilter("Flag2",DefaultValue=false)] publicIActionResultFeatureDisableT

  • python 舆情分析 nlp主题分析 (1) 待续

    参考资料:https://blog.csdn.net/Eastmount/article/details/50891162#该博主有很多篇幅,解释算法原理,算法应用。需求:一直想试试大数据+舆情分析,虽然数据量不是很大,大概应用一下,看看是否能从海量数据中,提取出主题思想,以看看当前的舆论导向。具体应用案例:微博热门话题:#中印双方达成五点共识#阅读量2.4亿,讨论7430条。1、数据采集,使用python+selenium,采集该话题下的博文及作者信息,以及每个博文下的评论及作者信息;2、数据预处理,采用Jieba库,构建用户词典,以达到更好的分词;情感分析,采用snownlp库,寻找政治类积极和负面词向量做一个训练,再进行评论分类;3、对博文及评论作者信息进行分析,查看调查主体的用户类别概况;4、lda主题分析,对博文做主题分析,依据top3主题关键字,对博文群主类看法进行分析;对正、负向评论做一次主题分析,并分别分析观点;本编主要先完成第一步,后续再继续更新。1、打开浏览器,手工登录微博,这里因为微博登录太严格(需要短信验证才能登录),所以直接人工登录。%%time #配置浏览器

  • MongoDb 初入

    mongodb适用于经常要进行操作的应用系统,适应于读写性能要求极高的场景,Hadoop则侧重于对数据的统计分析的应用。 同时mongo的处理时延一般在10ms,而Hadoop一般进行离线分析,通过mapreduce分析,一般时延较长。但是当业务中存在大量的复杂逻辑操作,不要用mongodb数据库。mongodb优势它将热数据存储于内存中,使得热数据的读写变得非常快,从而提高了整体的速度与效率。高可扩展性,Mongodb的高可用与集群架构,通过物理机的增加和分片的增加,使mongodb扩展到很快的速度。自身的failover机制,当主库遇到问题,副本将选举一个新主库替代主库。json的数据格式易于查询和学习mongodb特性mongo是非关系型数据库,存储方式是虚拟内存+持久化,通过副本集,以及分片来实现高可用。SQL术语/概念MongoDB术语/概念databasedatabasetablecollectionrowdocumentcolumnfieldindexindextablejoin无primarykeyprimarykeyconnectmongo127.0.0.1/admi

  • 【CPP】各种各样的树(8)——赫夫曼树

    看完了这么多树,来看个二叉树的小应用——赫夫曼编码(HuffmanCoding),是一种用于无损数据压缩的熵编码(权编码)算法。由大卫·霍夫曼在1952年发明(这居然只是他1951年的期末作业而已,1952年发表为论文《一种构建极小多余编码的方法》(AMethodfortheConstructionofMinimum-RedundancyCodes)https://web.archive.org/web/20050530145744/http://compression.graphicon.ru/download/articles/huff/huffman_1952_minimum-redundancy-codes.pdf)。它又称最优二叉树,是一种带权路径长度最短的二叉树。是二叉树的一个常见应用。我们知道英文字符在计算机中可以用标准的ASCII字符集来表示,而用ASCII来表示字符的话每个字符需要8bit的位置,例如大写字母A用十进制表示为65,写为二进制就是01000001,这样编写我们可以很方便地表示出ASCII中的128个字符(正好八位二进制bit,第一位为0),但是其实这么写

  • iOS开发--本地通知与远程通知

    这里是指推送通知跟NSNotification有区别:1、NSNotification是系统内部发出通知,一般用于内部事件的监听,或者状态的改变等等,是不可见的 2、本地通知与远程通知是可见的,主要用于告知用户或者发送一些App的内容更新,推送一些相关的消息,让用户知道App内部发生了什么事情。Paste_Image.pngiOS常用通知1、本地推送通知:(LocalNotification) 2、远程推送通知:(RemoteNotification)iOS通知呈现效果(5)1.设置音效,(提醒作用) 2.设置横幅, 3.设置弹窗, 4.锁屏下也可以呈现, 5.App图标的数字(即新内容的数量) 至于显示横幅或者弹窗,取决于用户的设置 iOS手机设置中:通知中心-选择应用-选择应用下的通知模式-OK!Paste_Image.png通知的注意点1、App在前台运行的时候,通知不会展示出来 2、点击通知,默认会自动打开推送通知的App 3、不管App是否打开,通知都可以如期发出1、本地推送通知:不需要联网就可以发出的通知 使用场景: 提醒用户完成一些任务,比如:定时提醒,生活备注,看电影等

  • 【技术综述】“看透”神经网络

    大家最诟病深度学习的一点就是理论基础不够系统,模型就像一个黑盒子,这就更加凸显了深度学习模型可视化的重要性了。本文以实战经验为主,除去数据的可视化部分,我们说以下几个主要的方向(1)模型结构的可视化(2)卷积参数的可视化(3)激活区域的可视化(4)训练过程的可视化。01模型结构的可视化所谓模型结构的可视化,就是为了方便更直观的看到模型的结构,从而方便进行调试,下面对2个主流的框架进行展示。1.1caffe网络结构可视化定义一个简单的3层的模型(模型可以查看我们git,代码太长此处不展示),我们可以采用几种方案进行可视化;第一种,利用caffe自带的可视化方法;第二种,利用开源项目netscope;由于netscope可视化效果更好,因此我们采用netscope进行可视化,工具网址如下相关链接:http://ethereon.github.io/netscope/#/editor可视化后的结果如上图,可以看到网络的结构是通过卷积+激活函数的堆叠,同时网络的数据输入层和最后的全连接层作为了loss层和acc层的输入。当我们想要看每一层的参数时,就可以将鼠标放上相应的结构块;当然,还可以使用

  • 开放VR直播付费模式,NCAA疯狂三月篮球赛火热进行中

    昨日,英特尔宣布其已经正式成为NCAA(美国全国大学体育协会)疯狂三月篮球赛的VR直播合作伙伴。目前,NCAA正与TurnerSports和CBSSports合作,为球迷们提供该项赛事的VR直播。去年12月,英特尔收购了VR直播公司Voke,该公司曾承办上届NCAA篮球赛的VR直播。英特尔将Voke重组整合后改名TrueVR,本届NCAA篮球赛的VR直播将由英特尔的TrueVR给予相关技术支持。当前,NCAA疯狂三月篮球赛已经开赛。英特尔将直播本届NCAA的六场比赛:两场16进8,一场8进4,以及最后的半决赛和冠军赛(其中16进8的两场分别是:Gonzaga对WestVirginia和Arizona对Xavier)。为了提供逼真的VR体验,两个球场都将会设置7个拍摄点,每个拍摄点会配备12个摄像机,共84台摄像机。拥有OculusRift或GearVR的球迷可以通过MarchMadnessVR应用观看赛事直播,这款应用已于近日上线OculusHome。进入应用后,用户有两个付费模式可以选择:“黄金”(2.99美元),可以获得场边的位置,可切换的摄像机视角及详细的评论解说;“白银”(1.

  • java — 值传递和引用传递

      在Java应用程序中永远不会传递对象,而只传递对象引用。因此是按引用传递对象。Java应用程序按引用传递对象这一事实并不意味着Java应用程序按引用传递参数。参数可以是对象引用,而Java应用程序是按值传递对象引用的。  Java应用程序中的变量可以为以下两种类型之一:引用类型或基本类型。当作为参数传递给一个方法时,处理这两种类型的方式是相同的。两种类型都是按值传递的;没有一种按引用传递。 java实际上只有值传递,没有真正意义上的引用传递。按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。   1、对象是按引用传递的;   2、Java应用程序有且仅有的一种参数传递机制,即按值传递;   3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本;   4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而

  • 两个死锁的实例 (r5笔记第90天)

    关于数据库中的死锁。如果在应用中碰到都会毫不犹豫转交给DBA,但是从目前我接到的deadlock的问题来看,和Oracle官方的描述基本都是一致的。ThefollowingdeadlockisnotanORACLEerror.Itisadeadlockduetousererrorinthedesignofanapplication orfromissuingincorrectad-hocSQL.Thefollowinginformationmayaidindeterminingthedeadlock:复制死锁在Oracle中处理时,会自动事务相关的DML语句撤销。换句话说,就是Oracle对于死锁问题的处理时一个主动的过程,会主动切断其中一个session的事务锁。先来看一个简单的死锁案例。我们创建两个表lock_test1,lock_test2,然后使用两个session来说明。session1:首先在session1中先创建两个表,lock_test1,lock_test2n1@TEST11G>createtablelock_test1asselect*fromcat; Ta

  • Java实现MD5加密的方式

    大家好,又见面了,我是你们的朋友全栈君。  MD5加密是一种常见的加密方式,我们经常用在保存用户密码和关键信息上。那么它到底有什么,又什么好处呢,会被这么广泛的运用在应用开发中。 1、什么是MD5   MD5加密全程是Message-DigestAlgoorithm5(信息-摘要算法),它对信息进行摘要采集,再通过一定的位运算,最终获取加密后的MD5字符串。   例如我们要加密一篇文章,那么我们会随机从每段话或者每行中获取一个字,把这些字统计出来后,再通过一定的运算获得一个固定长度的MD5加密后信息。因此,其很难被逆向激活成功教程。 2、MD5有哪些特点   MD5加密的特点主要有以下几点:   1、针对不同长度待加密的数据、字符串等等,其都可以返回一个固定长度的MD5加密字符串。(通常32位的16进制字符串);   2、其加密过程几乎不可逆,除非维护一个庞大的Key-Value数据库来进行碰撞激活成功教程,否则几乎无法解开。   3、运算简便,且可实现方式多样,通过一定的处理方式也可以避免碰撞算法的激活成功教程。   4、对于一个固定的字符串。数字等等,MD5加密后的字符串是固定的

  • kafka简介

      kafka是用于构建实时数据管道和流应用程序。具有横向扩展,容错,wickedfast(变态快)等优点,并已在成千上万家公司运行。 简单说明什么是kafka     Apachekafka是消息中间件的一种,我发现很多人不知道消息中间件是什么,在开始学习之前,我这边就先简单的解释一下什么是消息中间件,只是粗略的讲解,目前kafka已经可以做更多的事情。   举个例子,生产者消费者,生产者生产鸡蛋,消费者消费鸡蛋,生产者生产一个鸡蛋,消费者就消费一个鸡蛋,假设消费者消费鸡蛋的时候噎住了(系统宕机了),生产者还在生产鸡蛋,那新生产的鸡蛋就丢失了。再比如生产者很强劲(大交易量的情况),生产者1秒钟生产100个鸡蛋,消费者1秒钟只能吃50个鸡蛋,那要不了一会,消费者就吃不消了(消息堵塞,最终导致系统超时),消费者拒绝再吃了,”鸡蛋“又丢失了,这个时候我们放个篮子在它们中间,生产出来的鸡蛋都放到篮子里,消费者去篮子里拿鸡蛋,这样鸡蛋就不会丢失了,都在篮子里,而这个篮子就是”kafka“。鸡蛋其实就是“数据流”,系统之间的交互都是通过“数据流”来传输的(就是tcp、http什么的),也称为

  • kubernetes实战(三十一):Prometheus监控Windows主机

    1.基本说明   使用Prometheus监控Windows主机和Linux主机并无太大区别,都是使用社区的Exporter进行采集数据,之后暴露一个接口,可以让Prometheus采集到主机的数据。   其中监控Linux的Exporter是:https://github.com/prometheus/node_exporter   监控Windows主机的Exporter是:https://github.com/prometheus-community/windows_exporter    [**前沿技术,快人一步,点我了解~**](https://ke.qq.com/course/2738602) 2.安装WindowsExporter   无论是监控Linux还是Windows,对应的exporter都提供了二进制文件和msi文件,Windows可以直接下载最新的msi文件,然后安装到对应的Windows主机上即可。   MSI文件下载地址:https://github.com/prometheus-community/windows_exporter/releas

  • 数学建模美赛O奖论文总结

    AnilS.DamleColinG.WestEricJ.Benzel UniversityofColorado–Boulder Boulder,CO Advisor:AnneDougherty Abstract Researchshowsthatmostviolentserialcriminalstendtocommitcrimesinaradialbandaroundacentralpoint:home,workplace,Wewillgiveapredictingofacriminal’sspatialpatternsiscalledgeographicprofiling.weassumethattheoffenderisa―violentserialcriminal,sinceresearchsuggeststhatserialburglarsandarsonistsarelesslikelytofollowspatialpatterns.Wetreatthesingle-anchor-pointcasefirsttakingthespatialcoordinatesoft

  • B树索引分裂(转)

    一、索引分裂 1. 什么是分裂 在开始介绍之前,我们先来搞清楚什么是索引分裂吧。“索引分裂”就是索引块的分裂,当一次DML事务操作修改了索引块上的数据,但是旧有的索引块没有足够的空间来容纳新修改的数据,那么将分裂出一个新索引块,旧有块的部分数据放到新开辟的索引块上去,这个过程就称为索引块的分裂(INDEXBLOCKSPLIT)。 如图1所示,当有新值插入到L4叶节点块的时候,此时L4叶节点块是“充满”状态,已经没有足够的空间来存储新值了,此时会在B2分支节点下,分裂出一个新的叶节点L5来存储新值。如果分支节点B2也是“充满”了呢?那就要进行分支节点的分裂,即在ROOT根节点下,分裂出一个新的分支节点出来。依此类推,如果根节点也“充满”了,则需要进行根节点的分裂。如果发生了根节点的分裂,也意味着B树的高度(BTREELEVEL)增加了一个层次。对真正意义上的树来说,这种生长是好事,但对B树索引来说,这就不是什么好事情了,B树索引的高度需要严格控制的。 图1 新值产生索引分裂   2. 分裂的类型 从上面的介绍来说,我们大致可以将索引分裂归为三种类

  • BZOJ 1062

    programcandybzoj1062; constmaxc=1000100; maxm=4010; maxn=2010; varn,len,m,i,p,t,l,r,c,d,q:longint; s:array[0..1,0..maxn,0..maxm]oflongint; x,y:array[0..maxc]oflongint; procedureadd(p,x,y,v:longint); vari:longint; begin inc(x);inc(y); whilex<maxndo begin i:=y; whilei<maxmdo begin inc(s[p,x,i],v); inc(i,iand-i); end; inc(x,xand-x); end; end; functionsum(p,x,y:longint):longint; vari:longint; begin if(x<0)or(y<0)thenexit(0); inc(x);inc(y);sum:=0; ifx>nthenx:=n+1; ify>mtheny:=m+1;

  • [kuangbin带你飞]专题一 简单搜索

    [kuangbin带你飞]专题一简单搜索 算法:sf//  错误点:w //注意细节:xj 第一题 POJ1321 sf:dfs xj:在于状态函数的标记和取消   这里输入使用了 ch=getchar()抓取字符。   因为要找出所有方法数,所以暴力dfs就可以了。 #include<iostream> #include<cstring> #include<cstdio> usingnamespacestd; intn,k,ck; charch; boolh[10],l[10],fk[10][10]; longlongans; voidinit(){ memset(h,false,sizeofh); memset(l,false,sizeofl); memset(fk,false,sizeoffk); ans=0;ck=0; for(inti=0;i<n;i++) for(intj=0;j<n;j++){ ch=getchar(); if(ch=='\n')ch=g

  • 数据结构与算法——基础篇(一)

    前置问题 经典问题与算法 8皇后问题(92种摆法)——回溯算法 字符串匹配问题——KMP算法(取代暴力匹配) 汉诺塔游戏问题——分治算法 马踏棋盘算法也称骑士周游问题——图的深度优化遍历算法(DFS)+贪心算法优化 Josephu——约瑟夫问题(丢手帕问题) 修路问题——最小生成树(普里姆算法) 最短路径问题——图+弗洛伊德算法 程序员常用十大算法——必会 二分查找算法(非递归) 分治算法 动态规划算法 KMP算法 贪心算法 普里姆算法 克鲁斯卡尔算法 迪杰斯特拉算法 弗洛伊德算法 马踏棋盘算法 学习步骤 应用场景或者说提出问题 引出数据结构或算法 剖析原理 分析问题实现步骤 代码实现 概述 程序=数据结构+算法 算法是程序的灵魂,数据结构是算法的基础。 数据结构——datastructure 稀疏数组 单链表 单向环形链表 数据结构包括:线性结构和非线性结构。 线性结构——一维 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。 一对一的线性关系

  • [转载]在 Windows 10 中, 如何卸载和重新安装 OneNote App

    在Windows10中,如何卸载和重新安装OneNoteApp 15/8/2015 使用PowerShell命令卸载OneNoteApp开始菜单->输入"Powershell"->右键点击菜单->用管理员运行->输入以下命令行Get-AppxPackage*microsoft.office.onenote*|Remove-AppxPackage使用Windows商店重新安装OneNoteApp打开Windows商店,搜索"OneNote",点击重新安装.

  • 直接插入排序

    一、实现思想 1、假设已经有一个有序区(没有的话通常选择第一个元素作为有序区),然后从无序区中选一个元素和有序区进行比较,找到合适位置,最后插入   二、实现例子(以一个数组为例)         三、实现代码 1#include<stdio.h> 2voidinsert_sort(intp[],intlength) 3{ 4inti,j; 5inttemp;//作为一个中间值,这个很重要,也是巧妙的地方,为有序区往后移,提供一个空格 6for(i=1;i<length;i++) 7{ 8temp=p[i]; 9for(j=i-1;j>=0&&temp<p[j];j--) 10p[j+1]=p[j]; 11p[j+1]=temp; 12} 13} 14intmain(void) 15{ 16intarray[5]={12,30,25,9,18}; 17for(inti=0;i<5;i++) 18printf("%d",array[i]); 19insert_sort(array,5

相关推荐

推荐阅读