表名 |
描述 |
清理时间(默认) |
间隔(默认) |
METRIC_RECORD |
用于记录每个机器上收集的每个 Metrics 属性 |
1 天 |
(1)主机Metric:60 (2)hadoop metric:60+1(sink间隔),默认为70s |
METRIC_RECORD_MINUTE |
聚合统计每个机器上的Metrics属性 |
1 周 |
120 |
METRIC_RECORD_HOURLY |
聚合统计每个机器上的Metrics属性 |
30 天 |
3600 |
METRIC_RECORD_DAILY |
聚合统计每个机器上的Metrics属性 |
1 年 |
86400 |
METRIC_AGGREGATE |
聚合统计所有机器上的Metrics属性(集群) |
1 周 |
30 |
METRIC_AGGREGATE_MINUTE |
聚合统计所有机器上的Metrics属性(集群) |
30 天 |
120 |
METRIC_AGGREGATE_HOURLY |
聚合统计所有机器上的Metrics属性(集群) |
1 年 |
3600 |
METRIC_AGGREGATE_DAILY |
聚合统计所有机器上的Metrics属性(集群) |
2年 |
86400 |
该表是所有表中唯一存储实际metrics数据的表,其它表都是在此表的基础之上进行时间段的相应统计。
(1)针对采集的hosts指标,即由monitor发送的指标值
采集的metric记录,由{时间戳1:值,时间戳2:值,....}这样的记录组成,其中数目表现在Metric_count上,对于monitor发送的metric。为12条,每条间隔5秒种,然后一分钟向timelineServer发送一次,存入表中。
(2)针对采集的hadoopsink指标
采集的metric记录,由{时间戳1:值,时间戳2:值,....}这样的记录组成,每条间隔10秒钟,每隔70秒发送一次,采集7条,所以metric_count为7,一分钟向timelineServer发送一次,存入表中。
字段名称 |
类型 |
详细说明 |
METRIC_NAME |
VARCHAR |
Metric名字 |
HOSTNAME |
VARCHAR |
采集该Metric的主机名字 |
SERVER_TIME |
UNSIGNED_LONG |
Metric入进来的服务器时间 |
APP_ID |
VARCHAR |
采集该Metric的服务,如果是mem_free这样的机器信息则为HOST(即由Monitor发送过来的metric,其都为HOST),如果是dfs.*类似的Metric则其为datanode,namenode,nodemananger等等 |
INSTANCE_ID |
VARCHAR |
此次采集meitric的实例id,一般为空 |
START_TIME |
UNSIGNED_LONG |
开始采集Metric的时间,通常比服务器早一分钟,这一分钟是Monitor发送时间间隔时间或者Hadoop Sink配置的发送间隔时间 |
UNITS |
CHAR |
一般为空,有的为Long |
METRIC_SUM |
DOUBLE |
该条Metrics中,所有Metric的总和 |
METRIC_COUNT |
UNSIGNED_INT |
该条Metrics中,统计的Metric数量 |
METRIC_MAX |
DOUBLE |
该条Metrics中的最大值 |
METRIC_MIN |
DOUBLE |
该条Metrics中的最小值 |
METRICS |
VARCHAR |
(1)针对采集的hosts指标,即由monitor发送的指标值 采集的metric记录,由{时间戳1:值,时间戳2:值,....}这样的记录组成,其中数目表现在Metric_count上,对于monitor发送的metric 默认间隔为12条,每条间隔5秒种,然后一分钟向timelineServer发送一次,存入表中。 (2)针对采集的hadoop sink指标 采集的metric记录,由{时间戳1:值,时间戳2:值,....}这样的记录组成,每条间隔10秒钟,每隔70秒发送一次,采集7条,所以metric_count为7,一分钟向timelineServer发送一次,存入表中。 |
由monitor或者hadoop sink每隔5分钟向该表中存入一条记录,用于统计此5分钟内所有meitric的属性,该表实则是以Metric_Record作为统计的基准。假设5分钟统计一次,以mem_free为例,则本次统计是以主机为单位,假设在metric_record表中,shh2每隔一分钟发送一条mem_free的Record,其中有12条metric,则本次统计共有5条Record,而metric_count则为60条,同样的,这五分钟内的最大,最小和总和,只需要比对提取Metric_record中这五条的Record的最大,最小,以及5条总和即能统计出这5分钟内相应的属性。
类似于这样几条语句得以统计:
(1)selecthostname,max(metric_max) from metric_record where metric_name='mem_free' andserver_time>=1471503845324 and server_time<1471504146520 group byhostname;------统计5分钟内,每台主机上该metric的最大值。
(2)selecthostname,min(metric_min) from metric_record where metric_name='mem_free' andserver_time>=1471503845324 and server_time<1471504146520 group byhostname; ------统计5分钟内,每台主机上该metric的最小值。
(3)selecthostname,sum(metric_sum) from metric_record where metric_name='mem_free' andserver_time>=1471503845324 and server_time<1471504146520 group byhostname; ------统计5分钟内,每台主机上该metric值总和。
(4)selecthostname,sum(metric_count) from metric_record where metric_name='mem_free' andserver_time>=1471503845324 and server_time<1471504146520 group byhostname; ------统计5分钟内,每台主机上统计的该metric数量和。
字段名称 |
类型 |
详细说明 |
METRIC_NAME |
VARCHAR |
统计的Metric名字 |
HOSTNAME |
VARCHAR |
聚集统计的该Metric的主机名字 |
SERVER_TIME |
UNSIGNED_LONG |
统计的服务器时间 |
APP_ID |
VARCHAR |
该Metric的服务,如果是mem_free这样的机器信息则为HOST(即由Monitor发送过来的metric,其都为HOST),如果是dfs.*类似的Metric则其为datanode,namenode,nodemananger等等 |
INSTANCE_ID |
VARCHAR |
此次统计实例id,一般为空 |
UNITS |
CHAR |
一般为空,有的为Long |
METRIC_SUM |
DOUBLE |
本次时段内统计的所有metric的总和 |
METRIC_COUNT |
UNSIGNED_INT |
本次聚集统计的metric数量,如果是monitor则是统计12*5=60条记录,metric_count就为60(也有可能是48条左右,实际中具有不确定因素),若是hadoop sink则是统计的7*5=35条记录(也有可能是28条,record表里最后一分钟还没入进去,这边就进行统计了) ,统计这些记录的汇总值,最大最小值。 |
METRIC_MAX |
DOUBLE |
本次时段内统计的所有metric的最大值 |
METRIC_MIN |
DOUBLE |
本次时段内统计的所有metric的最小值 |
其表参照METRIC_RECORD_MINUTE表,其余没有不同,是在METRIC_RECORD_MINUTE的基础上进行小时级的统计,一小时统计一次,所以说如果是mem_free这样的Monitor指标,则minute表5分钟统计60,则其一小时统计12*60=720条左右的记录。
其表参照METRIC_RECORD_HOURLY表,其余没有不同,是在METRIC_RECORD_HOURLY的基础上进行day级的统计,一天统计一次,所以说如果是mem_free这样的Monitor指标,则hourly表一小时统计720,则其一天统计24*720=17280条左右的记录。
集群级别的聚集表都是以Metric为单位进行聚集的,所以忽略了HOST的概念,以metric_name为单位进行整体统计,一个metric可能来自N台主机,对此metric进行聚集。
以Metric_Name为主要指标,由于是集群级别的统计,所以不再有HOSTNAME相关字段的说明,在此表中增加了HOSTS_COUNT的字段,即聚集的Metric来自主机的数量,而在其后hourly,daily又去除了HOSTS_COUNT的字段,变成了metric_count字段。
该表为30秒统计一次,是在表METRIC_AGGREGATE_MINUTE的基础之上进行分片统计的,由于timeline.metrics.cluster.aggregator.minute.timeslice.interval的值设为30秒,所以其实是METRIC_AGGREGATE_MINUTE表聚合统计的结果之上,再对其结果按时间进行分片,然后存入该表中。
字段名称 |
类型 |
详细说明 |
METRIC_NAME |
VARCHAR |
统计的Metric名字 |
SERVER_TIME |
UNSIGNED_LONG |
聚集统计的服务器时间 |
APP_ID |
VARCHAR |
该Metric的服务,如果是mem_free这样的机器信息则为HOST(即由Monitor发送过来的metric,其都为HOST),如果是dfs.*类似的Metric则其为datanode,namenode,nodemananger等等 |
INSTANCE_ID |
VARCHAR |
此次实例id,一般为空 |
UNITS |
CHAR |
一般为空,有的为Long |
METRIC_SUM |
DOUBLE |
本次统计的metric的总和 |
HOSTS_COUNT |
UNSIGNED_INT |
聚集的Metric来自主机的数量 |
METRIC_MAX |
DOUBLE |
本次统计的所有metric的最大值 |
METRIC_MIN |
DOUBLE |
本次统计的所有metric的最小值 |
在现版本中该表不存在,但是在经过源码验证后发现此表对应的就是METRIC_AGGREGATE表,其配置项timeline.metrics.cluster.aggregator.minute.timeslice.interval对应着METRIC_AGGREGAT的间隔时间。
METRIC_AGGREGATE_MINUTE默认每隔120秒启动聚合线程,而其中是直接基于Metric_Record进行聚合分组查询,而其结果又由另外一个线程,根据其timeslice.interval时间片,分片对其120秒中的结果进行分片聚合,聚合的结果存入表METRIC_AGGREGATE中。
字段名称 |
类型 |
详细说明 |
METRIC_NAME |
VARCHAR |
统计的Metric名字 |
SERVER_TIME |
UNSIGNED_LONG |
聚集统计的服务器时间 |
APP_ID |
VARCHAR |
该Metric的服务,如果是mem_free这样的机器信息则为HOST(即由Monitor发送过来的metric,其都为HOST),如果是dfs.*类似的Metric则其为datanode,namenode,nodemananger等等 |
INSTANCE_ID |
VARCHAR |
此次统计实例id,一般为空 |
UNITS |
CHAR |
一般为空,有的为Long |
METRIC_SUM |
DOUBLE |
本次时段内统计的所有metric的总和 |
METRIC _COUNT |
UNSIGNED_INT |
本次统计的metric数量 |
METRIC_MAX |
DOUBLE |
本次时段内统计的所有metric的最大值 |
METRIC_MIN |
DOUBLE |
本次时段内统计的所有metric的最小值 |
正如host级别的聚集一样,此表也是在表METRIC_AGGREGATE的基础之上进行统计聚集的,将其相关的时间段拉长进行统计,即可得到相应的指标。
字段名称 |
类型 |
详细说明 |
METRIC_NAME |
VARCHAR |
统计的Metric名字 |
SERVER_TIME |
UNSIGNED_LONG |
聚集统计的服务器时间 |
APP_ID |
VARCHAR |
该Metric的服务,如果是mem_free这样的机器信息则为HOST(即由Monitor发送过来的metric,其都为HOST),如果是dfs.*类似的Metric则其为datanode,namenode,nodemananger等等 |
INSTANCE_ID |
VARCHAR |
此次统计实例id,一般为空 |
UNITS |
CHAR |
一般为空,有的为Long |
METRIC_SUM |
DOUBLE |
本次时段内统计的所有metric的总和 |
METRIC _COUNT |
UNSIGNED_INT |
本次统计的metric数量 |
METRIC_MAX |
DOUBLE |
本次时段内统计的所有metric的最大值 |
METRIC_MIN |
DOUBLE |
本次时段内统计的所有metric的最小值 |
正如host级别的聚集一样,此表也是在表METRIC_AGGREGATE_HOURLY的基础之上进行统计聚集的,将其相关的时间段拉长进行统计,即可得到相应的指标。