Metrics核心
翻译自Metrics官方文档: http://metrics.codahale.com/manual/core/
JAVA Metrics是一个用于度量的一个JAVA的类库,使用请参见 <
Java Metric使用介绍1
> http://blog.csdn.net/scutshuxue/article/details/8350135
在Metrics中最重要的包就是metrics-core,它提供以下几个基本的功能:
l 5种度量的类型:Gauges, Counters, Histograms, Meters,Timers.
l 健康检查(Health Checks)
l 可以通过JMX,终端,CSV文件来报告Metrics指标
所有的度量类型都是在Metrics或者MetricsRegistry类中,如果你的应用运行在另外一个独立的JVM应用中的话(如多个WARS部署在同一个应用服务上),你应该使用MetricsRegistry这个实例。如果你的应用是单独一个JVM进程的话,你可以使用Metrics中的静态工厂方法。
本文档假设你在使用Metrics,并且所有的接口都是一致的。
Metric Names-度量名
每一个度量(Metric)都有自己的名字,它包括以下几个内容
l Group
Metric最上层的分类,如果Metric是一个类的话,那么默认值是这个类所在包的名称(例如:com.example.proj.auth)
l Type
Metric第二层的名字,如果Metric是一个类的话,那么默认值就是这个类的名字(如SessionStore)
l Name
描述Metric信息的一个简短的描述
l Scope
可选的,表示Metric范围的描述信息,当你在一个类中有多个实例的时候会有用
Metrics跟MetricsRegistry中的工厂方法,接受class/name,class/name/scope作为参数调用,或者是使用MetricName这个类进行封装。
Gauges
Gauge是最简单的度量类型,只有一个简单的返回值,例如,你的应用中有一个由第三方类库中保持的一个度量值,你可以很容易的通过Gauge来度量他,代码如下:
- Metrics.newGauge(SessionStore.class,"cache-evictions", new Gauge<Integer>() {
- @Override
- publicInteger value() {
- return cache.getEvictionsCount();
- }
- });
那么Metrics会创建一个叫做com.example.proj.auth.SessionStore.cache-evictions的Gauge,返回缓存中Eviction的个数。
JMX Gauges
Metrics提供一个JmxGauge类,可以供很多第三方的类库通过JMX来展示度量值,通过Metric的newGauge方法可以初始化他,参数为JMX MBean的Object名和属性名,还有一个继承了Gauge的类,返回值为那个属性的值。
- Metrics.newGauge(SessionStore.class,"cache-evictions",
- new JmxGauge("net.sf.ehcache:type=Cache,scope=sessions