应用性能监控

标签: IT咨询 | 发表时间:2015-09-02 20:44 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi
先看下百度里面对应用性能监控的基本定义:

APM = Application Performance Management,应用性能管理,对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化的解决方案。

应用性能管理是一个比较新的网络管理方向,主要指对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本(TCO)。一个企业的关键业务应用的性能强大,可以提高竞争力,并取得商业成功,因此,加强应用性能管理(APM)可以产生巨大商业利益。

资源池-》应用层-》业务层

这个可以理解为APM的一个关键点,原有的网管类监控软件更多的是资源和操作系统层面,包括计算和存储资源的使用和利用率情况,网络本身的性能情况等。但是当要分析所有的资源层问题如何对应到具体的应用,对应到具体的业务功能的时候很难。

传统模式下,当出现CPU或内存满负荷的时候,如果要查找到具体是那个应用,那个进程或者具体哪个业务功能,哪个sql语句导致的往往并不是容易的事情。在实际的性能问题优化中往往也需要做大量的日志分析和问题定位,最终才可能找到问题点。

资源上承载的是应用,应用本身又包括了数据库和应用中间件容器,同时也包括了前端;在应用之上则是对应到具体的业务功能。因此APM一个核心就是要将资源-》应用-》功能之间进行整合分析和衔接。

和BAM的整合

APM不应该是孤立的,可以将APM理解为衔接底层网管和资源监控,上层BAM业务活动监控之间的桥梁。在这里要强调两点,应用本身的性能问题最终会对应到具体的业务功能,同时对于最终的业务人员不关心应用和底层资源而更加关注业务本身的效率和性能。

对于BAM业务监控的重点包括了单个业务功能本身的执行效率和性能分析,也包括了业务系统间集成和协同的效率和分析。对于在SOA或ESB集成平台里面我们会关系系统间的业务和数据集成,这也将纳入到BAM业务监控的范畴里面。

在前面有一篇文章我专门谈到过对于企业IT信息和资产的可视化问题,可以看到IT系统和应用功能,包括其集成架构和基础设置资源的可视化将更好的反应出IT对业务的支撑情况。例如一个端到端业务流程可以看到哪些业务系统在支持,有哪些业务和数据集成;对于一个业务功能我们可以快速的看到支撑的IT系统,同时还可以朝下分析快速的看到对应使用的资源情况等。要实现这些需要的就是APM和BAM的高度整合和配合。

解决什么问题?


在讨论APM的具体功能前,还是需要思考下APM出现关键解决的问题有哪些。

首先对于资源和操作系统层的监控有时候很难真实反应出应用是否正常?传统做法有时候也会专门做应用监控,类似在应用里面内置sdk包或心跳检测机制。确保应用本身的中间件和数据库正常。这应该是APM至少应该包括的一个使用场景。

其次,如何及时的发现应用性能问题?同时在应用性能问题发现后能够协助开发人员准确的定义到具体的业务功能点,再进一步定位到具体的数据库sql或代码组件。要明白有不少场景是虽然资源利用率不高,但是应用响应缓慢或有严重的性能问题,这些都需要到应用监控层面才能够反应出来。

最后,即我们所说的业务层面,即应用究竟承载了多少业务,产生了多少业务单据,有多少业务流程或活动在执行,这些业务本身的响应和性能如何?如何能够准实时的分析和监控这些数据,那么就可以更好的反应出IT系统对整个业务的支撑情况。

核心的功能有哪些?

应用监控状态的监控:首先要反应出当前应用是否运行正常,具体的监控指标涉及到本身类似心跳方式的应用健康检测,同时包括对中间件,线程数,JVM内存,消息,数据库连接池等关键内容的监控。

性能分析和诊断:这个应该是APM相当重要的一个功能,即对于一个业务功能出现性能问题的时候,我们可以快速的进行性能分析和诊断,包括涉及到的业务组件和数据库sql,一个业务请求从发起到每一层调用所花费的具体时间,sql语句本身的时间耗费等,如果能做到这点将帮助我们快速的定位到业务性能问题。

日志采集和告警:前面有文章也谈到过特别是将来的分布式架构下,对于中间件和数据库的准实时日志采集和分析将成为监控和定位问题的一个关键点。因此APM需要具备这个能力,即可以准实时的采集各种中间件,应用的日志信息并进行结构化处理,对于出现告警的日志能够实时的发出告警和邮件通知等。

难点在哪里?

其一是APM产品能够完全平滑的部署,对原有的业务系统没有任何影响,只需要增加相关的配置,这个是APM产品能否通用化的一个关键点。其二是监控的实时性问题,能否做到基本准实时的业务监控和性能告警。其三是性能分析的时候对问题的定位能够深入到哪个程度,如是否能够到具体的组件和sql语句。

  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [应用 性能 监控] 推荐:

应用性能监控

- - 人月神话的BLOG
先看下百度里面对应用性能监控的基本定义:. APM = Application Performance Management,应用性能管理,对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化的解决方案. 应用性能管理是一个比较新的网络管理方向,主要指对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本(TCO).

JAVA 应用性能监控基础

- - Linux - 操作系统 - ITeye博客
       这里简单介绍了JAVA 应用程序部署linux 服务器上的一些常用监控信息,虽然现在很多自动化监控的东西,但是一些基本的东西,我们还是需要了解.        1.我习惯性先看看 CPU 和内存的使用情况,做一个简单的关注.           命令:top 可以关注运行状态.           命令:大写P:按CPU 使用排序,大写M:按内存使用排序,小写c:详细显示应用       .

非侵入式监控PHP应用性能监控分析

- - 博学无忧
所谓非侵入式监控PHP应用性能,就是不修改现有系统代码,而对系统进行监控. 这样的系统才能更容易的应用到PHP应用中. 如果只是监控每次请求的访问时间. 在nginx的日志中有两个选项. $request_time 和 $upstream_response_time. 1、$request_time 指的就是从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出响应数据时间.

性能监控

- - 互联网 - ITeye博客
一旦你的服务器是在控制台模式下运行,你就可以开始我们接下来的内容. iostat  iostat 命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况. 要特别注意 iostat 统计结果中的 %iowait 值,太大了表明你的系统存储子系统性能低下. meminfo 和 free  Meminfo 可让你获取内存的详细信息,你可以使用 cat 和 grep 命令来显示 meminfo 信息: 1 cat /proc/meminfo  另外你可以使用 free 命令来显示动态的内存使用信息,free 只是给你大概的内存信息,而 meminfo 提供的信息更加详细.

使用Metrics监控应用程序的性能

- - zzm
在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析. 在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如当前系统中对外提供了多少次服务,这些服务的响应时间是多少,随时间变化的情况是什么样的,系统出错的频率是多少. 这些动态的准实时信息对于监控整个系统的运行健康状况来说很重要.

Elasticsearch性能监控(二)

- -
上一期我们分享了《 Elasticsearch性能监控(一)》,介绍了两个领域的ES监测指标:查询和索引(indexing)性能和内存分配和垃圾回收;本期我们将继续讲解另外三类监测指标:主机级别的系统和网络指标、指标集群健康状态和节点可用性、资源饱和度和相关错误. 本文是Emily Chang的分享《How to monitor Elasticsearch performance》中文译文的第一部分.

Linux性能监控与分析工具

- - CSDN博客系统运维推荐文章
最近需要对一套预研完成的系统性能测试,该系统部署在Linux服务器集群上. 在高并发、高负载场景下收集每台设备资源占用的全部信息(这些信息包括CPU,内存,I/O,磁盘,网络流量等等等),进一步分析系统瓶颈. 这里用上了nmon这款工具. 由nmon负责定期收集全套系统信息,再由nmon_analyser将原始数据转换为可视化的表格与图形.

前端性能监控系统ShowSlow

- - CSDN博客Web前端推荐文章
作者:zhanhailiang 日期:2014-11-14. ShowSlow是开源的前端性能监控系统,提供了以下功能:. 前端性能指标数据收集功能:ShowSlow原生提供了数据收集工具. DOM Monster!,但也支持通过YSlow,PageSpeed等第三方工具将性能数据上报给服务端完成收集(其服务器端提供了针对多达8种不同工具上报的数据收集器dommonster,dynatrace,events,har,metric,pagespeed,webpagetest,yslow);.

Linux系统和性能监控

- - zzm
CPU性能表现如何一般从三个方面来衡量:运行队列、利用率和上下文切换. 正如前文所提及的,性能表现的好坏和基线数据(或预期)是密不可分的. 对大部分系统而言,一些基本的性能预期如下:. 运行队列——每个处理器运行队列中不应该超过1-3个线程. 例如,一个双核的系统中,运行队列长度不应该超过6. (译注:即一个系统的load average值不应该大于核数的4倍.

PHP性能监控测试----Xhprof

- - CSDN博客架构设计推荐文章
开始工作到现在,除了做新手任务,基本上都是和服务器端打交道,做前端的时间很短. 目前公司的性能监控和测试:Xhprof和ab测试. Xhprof----facebook开源的,轻量级的PHP性能分析工具: 包括函数的调用次数,花费的时间(自身花费时间和包含内部函数花费的时间),所占内存/CPU,所占内存的峰值及所占百分比.