AMS-hbase distribution,tables,ntp

ambari-metrics上报数据存储

参考:
Apache Ambari User Guidehtml

数据库

  • 使用HBase存储,phoenix做为sql引擎,对上报数据进行存储。
  • 数据属性:Snappy压缩、只有一个Version的数据、多个分不一样时间级别的表存储相同的数据、使用布隆过滤器、block大小为64KB、使用缓存存储block。

存储模式

  • 本地模式   使用HBase的本地存储模式。默认模式。node

  • 分布式模式   修改Advanced ams-hbase-site:将hbase.rootdir修改成hdfs://<namenode>:<port>/user/ams/hbase;将dfs.client.read.shortcircuit改成trueredis

注意:   若是启用了HDFS的HA,不能直接链接某一个NameNode,链接HDFS的地址为hdfs:  sql

//hdfsnameservice/apps/ams/metrics
  • 为AMS完成分布式存储如下步骤:
  1. 为ams用户建立一个HDFS目录。
  2. 中止Metrics-Collector。
  3. 将建立好的路径复制到ams的hbase-site.xml的配置文件中。
su - hdfs -c 'hdfs dfs -copyFromLocal/var/lib/ambari-metrics-collector/hbase/* /apps/ams/metrics'

su - hdfs -c 'hdfs dfs -chown -R ams:hadoop/apps/ams/metrics'
  1. 选择分布式的模式。
  2. 重启Metrics-Collector。
  • 启动   HBASE_CONF_DIR="/etc/ams-hbase/conf" hbase shell

表属性

phoenix表   表名 | 描述 | 清理时间(默认)  ---|---|--- METRIC_RECORD | 用于记录每一个机器上收集的每一个 Metrics 属性 | 1天  METRIC_RECORD_MINUTE | 聚合统计每一个机器上的Metrics属性 | 1周  METRIC_RECORD_HOURLY | 聚合统计每一个机器上的Metrics属性 |30天  METRIC_RECORD_DAILY | 聚合统计每一个机器上的Metrics属性 |1年  METRIC_AGGREGATE | 聚合统计全部机器上的Metrics属性(集群) | 1周  METRIC_AGGREGATE_MINUTE | 聚合统计全部机器上的Metrics属性(集群) | 30天  METRIC_AGGREGATE_HOURLY | 聚合统计全部机器上的Metrics属性(集群) | 1年  METRIC_AGGREGATE_DAILY | 聚合统计全部机器上的Metrics属性(集群) | 2年 shell

 METRIC_RECORD

该表是全部表中惟一存储实际metrics数据的表,其它表都是在此表的基础之上进行时间段的相应统计。数据库

  • 针对采集的hosts指标,即由monitor发送的指标值apache

  • 针对采集的hadoopsink指标json

metrics问题汇总

redis上报数据未存储

  • 场景: 使用ab-01做为数据收集端,向metrics-collector所在节点发送数据。   发送数据的脚本以下:
#!/bin/sh
url=http://$1:6188/ws/v1/timeline/metrics
while [ 1 ]
do
#A=$(redis-cli info | grep total_connections_received: | awk -F ':' '{print $2}')
#echo $A > abc.txt
#sed -i 's/\r//' abc.txt
#A=$(head -1 abc.txt)
millon_time=$(( $(date +%s%N) / 1000000 ))
A=`expr $RANDOM % 10`
json="{
 \"metrics\": [
 {
 \"metricname\": \"$2\",
 \"appid\": \"$3\",
 \"hostname\": \"localhost\",
 \"timestamp\": ${millon_time},
 \"starttime\": ${millon_time},
 \"metrics\": {
 \"${millon_time}\": ${A}
 }
 }
 ]
}"
echo $json | tee -a /root/my_metric.log
curl -i -X POST -H "Content-Type: application/json" -d "${json}" ${url}
sleep 3
done

上报数据与显示问题

  • 全部经过metrics的rest接口上报的数据能存入AMS的HBase数据库。缓存

  • metrics.json中配置的可以经过url来获取。服务器

  • widget.json中作好相应的配置后才能在ambari-server的Web UI中显示。

  • 结果: Ambari的界面上的redis无监控图表。

  • 问题排查

  1. app timeline server没法启动(修复后排除)详情查看;
  2. 查询hbase监控数据存储(数据未存储);
  3. 调试后,发现因为**数据的发送方(ab-01)和接收方(ab-05)**时间差别较大致使metrics-collector将上报数据丢弃。
  • 解决方法  
  1. 暂时将ab-01的时间手动调至和ab-05相同的时间,发送数据成功。  
  2. 根源解决:部署时间同步服务器。

更新

存储相关

全部格式正确且与Metrics Collector时间差符合存储要求的数据可以经过POST发送到Metrics Collector,并存储到HBase中,无论是否在metrics.json文件中进行配置。可是没法经过GET请求获取到该数据。

监控hadoop及相关的service

ganglia原生支持Hadoop、Hbase的性能监控。

相关文章
相关标签/搜索