1.总体Metrics表说明
表名 | 描述 | 清理时间(默认) | 间隔(默认) |
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 |
2.各表详细说明
2.1 主机级别的表
2.1.1 METRIC_RECORD
该表是所有表中唯一存储实际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发送一次,存入表中。 |
2.1.2 METRIC_RECORD_MINUTE
由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的最小值 |
2.1.3 METRIC_RECORD_HOURLY
其表参照METRIC_RECORD_MINUTE表,其余没有不同,是在METRIC_RECORD_MINUTE的基础上进行小时级的统计,一小时统计一次,所以说如果是mem_free这样的Monitor指标,则minute表5分钟统计60,则其一小时统计12*60=720条左右的记录。
2.1.4 METRIC_RECORD_DAILY
其表参照METRIC_RECORD_HOURLY表,其余没有不同,是在METRIC_RECORD_HOURLY的基础上进行day级的统计,一天统计一次,所以说如果是mem_free这样的Monitor指标,则hourly表一小时统计720,则其一天统计24*720=17280条左右的记录。
2.2 集群级别的表
集群级别的聚集表都是以Metric为单位进行聚集的,所以忽略了HOST的概念,以metric_name为单位进行整体统计,一个metric可能来自N台主机,对此metric进行聚集。
2.2.1 METRIC_AGGREGATE
以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的最小值 |
2.2.2 METRIC_AGGREGATE_MINUTE
在现版本中该表不存在,但是在经过源码验证后发现此表对应的就是METRIC_AGGREGATE表,其配置项timeline.metrics.cluster.aggregator.minute.timeslice.interval对应着METRIC_AGGREGAT的间隔时间。
METRIC_AGGREGATE_MINUTE默认每隔120秒启动聚合线程,而其中是直接基于Metric_Record进行聚合分组查询,而其结果又由另外一个线程,根据其timeslice.interval时间片,分片对其120秒中的结果进行分片聚合,聚合的结果存入表METRIC_AGGREGATE中。
2.2.3 METRIC_AGGREGATE_HOURLY
字段名称 | 类型 | 详细说明 |
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的基础之上进行统计聚集的,将其相关的时间段拉长进行统计,即可得到相应的指标。
2.2.4 METRIC_AGGREGATE_DAILY
字段名称 | 类型 | 详细说明 |
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的基础之上进行统计聚集的,将其相关的时间段拉长进行统计,即可得到相应的指标。