作者: 康凯森
日期: 2016-08-27
分类: OLAP
Kylin 1.5.4版本将支持收集查询指标到JMX,本文将介绍收集查询指标的原因,查询指标的具体内容和含义,查询指标的日常作用,如何收集查询指标。
目前Kylin作为新美大的核心OLAP服务,已经在几乎所有的新美大业务线使用。其中几个业务线已经将Kylin作为B端(数百万商家)线上查询服务,所以我们必须保证Kylin服务的高可靠,高可用,高性能。为了向用户提供Kylin查询服务的SLA,我们必须要有相应的查询指标。
为了能够根据查询服务节点,业务线,具体业务来统计相关查询指标,我们将查询指标分为了Server,Project,Cube3个层次。
以QueryCount
这个指标为例,这个指标最终会生成3种相关的Metrics:
Hadoop:name=Server_Total,service=Kylin.QueryCount
Hadoop:name=learn_kylin,service=Kylin.QueryCount
Hadoop:name=learn_kylin,service=Kylin,sub=kylin_sales_cube.QueryCount
其中Server_Total代表整个server,
learn_kylin代表project name,
kylin_sales_cube 代表 cube name.
QueryCount
:查询总次数;QueryFailCount
:查询失败总次数;QuerySuccessCount
:查询成功总次数;CacheHitCount
: 查询缓存命中次数;QueryLatency{60s,360s,3600s}{50,75,90,95,99}thePercentile
:1分钟,10分钟,1小时内的查询百分位时延;(这3个时间间隔可以通过参数kylin.query.metrics.percentiles.intervals
来配置)QueryLatencyAvgTime,QueryLatencyIMaxTime,QueryLatencyIMinTime
:查询时延的均值,最大值,最小值;ScanRowCount
: 查询读取HBase行数的相关指标;ResultRowCount
:查询返回结果行数的相关指标。查询指标除了可以给业务方提供SLA指标,在日常运维中,我们也依靠查询指标来产出Kylin查询日报和Kylin查询的监控Screen。
Kylin查询的监控Screen如图所示:
通过Kylin查询日报我们可以了解每个Query Server, 每个Project的查询总次数,查询失败率,查询时延等查询信息。通过查询的监控Screen我们可以实时掌握Kylin的查询服务情况。
通过Kylin查询指标我们可以知道在目前新美大的kylin查询中,90%的查询时延在0.5秒内,99%的查询时延在2秒内,查询失败率极低,不过缓存命中次数同样极低,缓存几乎没有作用。
在 Kylin 1.5.4版中,我们可以通过将参数kylin.query.metrics.enabled
设为true
来将查询指标收集到JMX。
查询指标收集到JMX后,我们就可以通过任意的JMX Metrics收集工具来收集Kylin的查询指标,将查询指标上报到公司的监控系统中。唯一需要注意的是,Kylin的查询指标是分为Server,Project,Cube3个层次的,而这种层次关系是通过动态的ObjectName
来实现的,所以在获取ObjectName
时需要正则匹配。