--> 监控统计
今天学到东西比较少,主要全部是一些统计监控方面的零碎知识点。总结如下。
要做监控统计,一定要了解的一个词是 Metrics,翻译为“度量”的意思。当我们对系统中的某一个服务做统计时,可以方便的使用Metrics对系统的各种性能指标以及自定义的一些维度进行统计。如统计TPS(系统每秒处理的事务数量)、QPS(系统每秒处理的请求数量)、RT(响应时间),或者是从业务层面,某一个方法的调用次数、对某一个用户所做的数据统计等等。
我使用的是webx,先说一下基本流程:
1、 先在web的配置文件的pipeline.xml中,在业务合适的数据添加<pl-valves:valve class="XXX">,其中“XXX”是自己定义的处理文件,它要继承自AbstractValve。
2、 在 XXX.class 中编写Metrics的操作,重点就是为此次统计创建一个Measurement,为此url调用过程中所能获得到的所有数据进行添加标签,这次统计QPS,那么为数据添加一个标签(这个标签是作为后来SQL查询时用的),然后通过Measurement的方法进行统计。注意,使用Measurement时,统计到的数据会根据标签自动写入相应的表中。因此不需要想传统数据库那样,要提前编写结构化的库表。
3、 在grafana这边,只需要为一个图表添加合适的数据库,以及合适的SQl语句就可以查询到数据了,比如select后面的字段就可以填写QPS。
4、 这时候就会出数据了。
但是问题来了,我想通过其他的指标来查,是不是还要重复上面的过程呢?不用!!!
为什么呢?举个栗子。
1、假设我们请求一个url:http://localhost:port/abc.json ,然后走上面的那个基本流程。
2、在XXX.class文件中,我们可以获取到url,那么也可以获取到此次请求过程中所有可用的系统数据,然后我们打标签(QPS),入库。
3、从grafana就可以查到数据了。
4、我又想从RT维度监控,还是同样的请求,那么想一下,在XXX.calss中,获取到的数据是不是一样得呢?只不过是我们从另一个维度查询相同的数据而已,是不是呢?
所以,我们没有必要再把代码在写一遍,对于同一个或同一种url,我们只需要对相同的数据通过不容维度打上不同的标签就行了,然后具体的数据我们通过grafana配置的SQL,用打的标签进行区分查询就行了。就是这么简单。