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的性能監控。

相關文章
相關標籤/搜索