java性能监控工具MoSKito学习--概念解释

来源:互联网 发布:cpu编程 编辑:程序博客网 时间:2024/05/19 15:43
2 MoSKito 的概念
>Producers, Stats and Values 生产者,统计和值
 >>Producers 生产者
 >>Stats 统计
 >>StatValues 统计值
 >>Values 值
>Thresholds 阈值
>Accumulators 收集器
 >>Saving your app's memory 节省你应用的内存
>Journeys 历程
生产者,统计和值
MoSKito的核心是生产者,统计和值。他们之间的冠以是一条直线,彼此获取通过如下的形式。
生产者-----》统计---------》统计值---------》值
生产者
生产统计,又叫做统计。统计可以是一切,所以生产者也可以是一切。
     注意:Producer(生产者)是一段代码,当然也是统计数据的来源(这也许是一个类,一个方法,一个服务,一个小服务程序或者任何其他产生统计数据的资源)并在资源变的活跃时统计一次。
生产者可能统计数据,依赖:
》执行表现(线程,内存,缓存,存储,服务,等等)或者
》业务(注册,支付,转账,同伴的表现,在线用户数,等等)
例如:
所有下面这些可能是生产者:
1)a business Service 一个业务服务
2) an HttpFilter or HttpServlet 一个http拦截器或者http服务
3) a Jersey Resource 一个 Jersey 资源
4) Mail Gateway 电子邮件网关
5)the interface to an external payment(or whatever)provider 给国外支付提供者的一个接口
生产者是MoSKito所有信息的来源。收集器和阈值都是基于生产者产生的值而来的。
统计
代表一个单一用例的统计,也能够对整个生产者完成统计。
例如:
如果你用一个HttpFilter(过滤器)监视URLs,那么关联的生产者将会持有一个统计对象:
》它见过的每一个URL
》统计所有的URLs
如果你监视一个service(服务),那么每一个服务方法都将会有一个对应的统计对象,并且一个统计对象会作为一个整体来表示服务。
统计值
组成统计数据的值来自于合适的统计对象。
例如:
服务统计拥有请求的数量,总数,最小,最大,最近和平均的请求持续时间,请求并发数等等。
缓存统计拥有请求数量,命中数和命中比例
内存统计拥有空闲的,使用率和可用的内存信息
数量统计包含了。。数量。
更多信息,参考Built-in Stats Implementation Reference.内置统计实现的引用
值(values)
最后,每一个统计值是一个多维的统计存在于间隔的上下文中。每一个间隔是一个获取测量数据的维度。你可以认为统计值是一个HashMap中的值集,而间隔是key集合。而且每一个值实际上包含了(至少)两组数,一组是最近完成的间隔和当前运行的间隔(interval)。
Thresholds阈值
在你的应用内部,一些生产者也许比其他生产者更重要。为了保留一个警戒线在他们身上,我们创建了阈值。
阈值连续监视一个单一的生产者并且给出一个信号当生产者的性能改变时。
 注意:一个阈值标记了一个生产者性能表现的边界。当生产者走过了(上或者下)这个边界,阈值会改变状态,这样让你知道这个生产者需要被注意了。
简而言之,阈值就是一个边界守卫:当生产者违反了你给它设置的边界时,他们给出信号。
阈值也能够和交通灯对比。他们让你知道越过边界的值通过使用不同的颜色。黄色意味着刚刚越界,桔红色意味着大问题等等。比方说紫色表示结束,也就是表示全部fallout。
阈值使得你能够在一些问题影响到你整个应用之前面对。
例如:
让我们看看我们应用的session数。
所以我们做的是:我们创建一个阈值基于生产者的Session数,也就是说:
“好吧,阈值,如果加载是从0到500个session数,转为绿色。如果session数是500到700,转为黄色。700到800,转为桔红色。超过900,则转为红色”。
所以,只要看一眼在阈值,就足以知道事情是好还是坏。

一个阈值是对监视器设置的一个参数;阈值集合给出了一个完整图片关于此时你的应用性能是怎么样的。如图threshold_simple.png。


日志和通知也是阈值可用的选项。想知道更多,参考在MoSKito-Inspect User Guide 用户指导模块的阈值部分。
Accumulators收集
通过上面的学习,每一个状态值对于多个间隔会有多个值,但是在一次只会有一个值(一个间隔对应一个值)。
例如:
如果你只关心生产者的Session数,那通过当前状态值,可以得到Session的状态。这个状态值会有一个独立值对每一个监视间隔,就像在一分钟间隔内有25个session数,一个小时间隔有35个session数。不管怎么样,他都将会有一个准确的唯一值对应每一个配置的间隔。


节约你的应用内存
只存储一个值的主要原因就是节省内存,因为MoSKito-Essential有全部值。如果我们队每一个值都额外添加200个历史值(也就是:不仅仅存储最新的值,而是200个之前的值,如果当前是按分钟数来间隔,那也就是200分钟的历史值),那么MoSkito占用的内存将会暴增。
不用在内存中直接存储所有性能数据,你可以通过连接MoSKito-Central并从中收集数据。
然而,不时,想对数据直接分析并得到他的可视化表现。典型的场景是看session数量是怎么样发展超时的,通过一个网站使用的试图表现可以看到。这就是收集器的作用。
 一个收集器是一个值收集连接对于给出的间隔,生产者,状态和值。
基本上来说,收集器添加它自己到Producer/Stat/StatValue/Interval与其结合并统计(聚集和存储)数据,通过这个生产者收集的。这些数据在之后可以用于产生瞬时评论,例如,在形成线性图。

屏幕截图SessionCount.png:最近两天的Session数


但是收集器可以做的更多。首先,他们可以被结合生成一个更大的图关于应用内部不同值的关联信息。

屏幕截图ThreadStates.png:不同状态下的线程


收集器也构建了基础图在MoSKito UI(链接)和MoSKito-Control
想知道更多关于使用收集器,请参考MoSKito-WebUI管理的收集器模块部分。
Journeys(历程)
历程允许记录用户的行为在应用内部发生时产生的调用/步骤。历程展示了一个用户在使用应用时用到的方法/函数/服务/资源。
简单来说,一个历程是将任意用户的行为转变为一个开发者或者应用管理者的语言。
例如:
当一个用户单击一个链接加载一个新的页面,在web应用内部这个单击会初始化一系列的系统函数。这完整的一步步操作和调用,伴随着他们的时间戳,就是你得到的一个历程。
历程,是MoSKito的一部分,和生产者绑定。这样,当一个系统调用完成在一个存在的MoSkito生产者时,会添加一条记录线到一个历程。历程在很多情况下都有帮助。下面的例子就是最典型的。
让我们假设一个确定的用户行为会使得系统花费很长的时间去完成。这样的延迟意味着系统方法的调用之一花费了额外的时间。
只要我们将这个用户的行为记录为一个历程,我们可以看到证而过系统随着初始化完成的步骤和调用(随着他们的时间戳),并且很容易定位是谁花费了大部分时间。这些信息是进一步提高和优化的指导图。

如图Journeys_Overview.png。


 历程也可以选择是实时还是用户历程的生命周期分析,想了解更多,请参考MoSKito-WebUI管理模块的历程部分。
到此关于MoSKito Concepts部分就结束了,接下来我们看Start Working,step by step。一步一步开始工作。