参考:
Apache Ambari User Guidehtml
本地模式 使用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
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'
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
该表是全部表中惟一存储实际metrics数据的表,其它表都是在此表的基础之上进行时间段的相应统计。数据库
针对采集的hosts指标,即由monitor发送的指标值apache
针对采集的hadoopsink指标json
#!/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无监控图表。
问题排查
全部格式正确且与Metrics Collector时间差符合存储要求的数据可以经过POST发送到Metrics Collector,并存储到HBase中,无论是否在metrics.json文件中进行配置。可是没法经过GET请求获取到该数据。
ganglia原生支持Hadoop、Hbase的性能监控。