热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AmbariMetrics(相关API,底层数据库,widget等)

功能Metrics特点架构用法AmbariMetricsAPICluster级别Host级别Component级别HOSTCOMPONENTAmbariCollectorAPIM

  • 功能
  • Metrics特点
  • 架构
  • 用法
  • Ambari Metrics API
    • Cluster级别
    • Host级别
    • Component级别
    • HOST COMPONENT
  • Ambari Collector API
    • Metrics操作 API
    • Metrics 元数据API
  • Stack里定义Metrics图表
  • Sink实现举例
  • Ambari Metrics显示API
    • 相关数据表
    • 相关API
  • 其他
    • Ambari Metrics 白名单
    • Metrics 数据存储
  • 参考文献:


Ambari Metrics系统(AMS)是用来收集、聚合Hadoop集群中监控信息的。




功能
  1. 能够收集Hadoop及其他Ambari Stacks服务里的Metrics信息;
  2. 有一定的存储能力,能够将高精度的Metrics信息保存一段时间(例如能够保存5天内的Metrics信息,时间可配置);
  3. 能够将过期的Metrics信息自动清理掉;
  4. 在collection time,为外部系统(例如TSDB)提供清晰的集成点(Integration point);
  5. 在清理时,为外部系统(例如TSDB)提供清晰的集成点;
  6. 提供默认的过期Metrics信息保存方式,例如,将过期的Metrics信息存入到HDFS中;
  7. 为过期Metrics信息提供分析工具,例如将信息存储在HDFS中,则提供Hive schema,pig 脚本等用于分析Metrics信息。



Metrics特点


1. 可移植、平台无关;
2. 能够和Ganglia系统兼容;
3. 保持SNMP架构;
4. 无需要Root权限;
5. HA高可用。



架构

这里写图片描述



用法
  1. 能够通过Ambari Rest API获取Metrics;
  2. 能够通过Ambari Web浏览Metrics图表;
  3. 支持自定义配置Metrics图表;
  4. 支持在Stack 服务里定义Metrics图表。

下面从Ambari Metrics API、Ambari Collector API、Stack里定义Metrics图表、Sink实现举例、自定义配置Metrics及Ambari Metrics显示过程这几个方面对Metrics进行详细描述。



Ambari Metrics API

Ambari Metrics API是Ambari提供的Metrics 接口,用于获取集群级别(Cluster)、主机节点级别(Host)、服务组件级别(Component)、主机服务节点级别(Host Component)获取Metrics信息。从广义上将,Ambari Metrics信息查询支持时间段(time range)、时间点(point in time)查询。


Cluster级别

http://:8080/api/v1/clusters/cluster-name?fields=metrics/metrics_name[time_start,time_end,step]&_=time_now

其中:
1. cluster-name为查询的集群名字;
2. metrics_name为要查询的metrics名字,如3. load,cpu,memory
4. time_start,time_end:查询的时间段起点(精确到秒)、终点,Linux事件戳
5. step:默认的时间点间隔
6. time_now:当前时间,精确到毫秒

例如:
Get http://node1:8080/api/v1/clusters/TestCluster?fields=metrics/load[1430844925,1430848525,15]&_=1430848532904

Host级别

Get http://ambari-server:8080/api/v1/clusters/cluster-name/hosts/host-name?fields=metrics/cpu/cpu_user[1430844610,1430848210,15],metrics/cpu/cpu_wio[1430844610,1430848210,15],metrics/cpu/cpu_nice[1430844610,1430848210,15],metrics/cpu/cpu_aidle[1430844610,1430848210,15],metrics/cpu/cpu_system[1430844610,1430848210,15],metrics/cpu/cpu_idle[1430844610,1430848210,15]&_=1430848217591

Component级别

Get http://ambari-server:8080/api/v1/clusters/cluster-name/services/HDFS/components/DATANODE?fields=metrics/dfs/datanode/DfsUsed,metrics/dfs/datanode/Capacity&_=1430849798630

HOST COMPONENT

Get http://ambari-server:8080/api/v1/clusters/cluster-name/hosts/host-name/host_components/NAMENODE?fields=metrics/jvm/memHeapCommittedM[1430847303,1430850903,15],metrics/jvm/memHeapUsedM[1430847303,1430850903,15]&_=1430850903846



Ambari Collector API

Ambari Collector API分为两类:Metrics操作API 和Metrics 元数据API。

Metrics操作 API

提交Metrics数据:

POST http://ambari-metrics-collector:6188/ws/v1/timeline/metrics
{"metrics": [{"metricname": "{MetricsName}","appid": "{Unique_appid}","hostname": "{hostname}","timestamp": {cur_timestamp},"starttime": {time_stamp},"metrics": {"{time_stamp}": {value},"{next_time}": {time_stamp}}}]
}

其中,starttime,timestamp为时间戳,精确到毫秒,一般格式为:

{"metrics": [{"metricname": "AMBARI_METRICS.SmokeTest.FakeMetric","appid": "amssmoketestfake","hostname": "ambari20-5.c.pramod-thangali.internal","timestamp": 1432075898000,"starttime": 1432075898000,"metrics": {"1432075898000": 0.963781711428,"1432075899000": 1432075898000}}]
}

查询Metrics数据:

GET http://ambari-metrics-collector:6188/ws/v1/timeline/metrics?metricNames=MetricsName&appId=AppId&hostname=HostName&precision=seconds&startTime=StartTime&endTime=EndTime

响应数据格式:

Http response: 200 OK
Http data:
{"metrics": [{"timestamp": 1432075898089,"metricname": "AMBARI_METRICS.SmokeTest.FakeMetric","appid": "amssmoketestfake","hostname": "ambari20-5.c.pramod-thangali.internal","starttime": 1432075898000,"metrics": {"1432075898000": 0.963781711428,"1432075899000": 1432075898000}}]
}

其中precision可为:Seconds(Host Metrics 10s一个点,其他30s),Minutes(5分钟),Hours(1小时),Days(1天)。另外,在获取数据时,可选择Metrics Aggregate函数(如果没有声明,则默认使用AVG),例如:

http://:6188/ws/v1/timeline/metrics?metricNames=regionserver.Server.totalRequestCount._avg,regionserver.Server.writeRequestCount._max&appId=hbase&startTime=14000000&endTime=14200000http://:6188/ws/v1/timeline/metrics?metricNames=regionserver.Server.readRequestCount,regionserver.Server.writeRequestCount._max&appId=hbase&startTime=14000000&endTime=14200000

另外,在Get数据时,MetrimcsName和Hostname支持使用%符进行匹配,获取一系列的Metrics,例如:

http://:6188/ws/v1/timeline/metrics?metricNames=regionserver.Server.%&appId=hbase&startTime=14000000&endTime=14200000http://:6188/ws/v1/timeline/metrics?metricNames=regionserver.Server.%&hostname=abc.testdomain124.devlocal&appId=hbase&startTime=14000000&endTime=14200000http://:6188/ws/v1/timeline/metrics?metricNames=master.AssignmentManger.ritCount,regionserver.Server.%&hostname=abc.testdomain124.devlocal&appId=hbase&startTime=14000000&endTime=14200000http://:6188/ws/v1/timeline/metrics?metricNames=regionserver.Server.%&hostname=abc.testdomain12%.devlocal&appId=hbase&startTime=14000000&endTime=14200000

Metrics 元数据API

获取App id列表及App id下的Metrics列表

Get http://:6188/ws/v1/timeline/metrics/metadata

这里写图片描述

获取所有主机注册的Hosts列表

Get http://:6188/ws/v1/timeline/metrics/hosts

这里写图片描述



Stack里定义Metrics图表

以为Hive添加metrics数据为例。使用的HDP stack版本为2.5。步骤如下:

1)修改metainfo.xml,添加timelineappid值,如在stack 2.5 metainfo中添加定义(覆盖common-services中的默认设置):
这里写图片描述

2)编写metrics.json文件
这里写图片描述

3)编写widgets.json文件
这里写图片描述

4)编写程序,发送数据到Ambari Metrics Collector中,见下一节。

从Ambari中获取Metrics图表数据,进行调试

获取Service Metrimcs 定义&#xff1a;http://<ambari-server>:<port>/api/v1/stacks/<stackName>/versions/<stackVersion>/services/<serviceName>/artifacts/metrics_descriptor
例如&#xff1a;http://localhost:8080/api/v1/stacks/HDP/versions/2.3/services/HDFS/artifacts/metrics_descriptor获取Cluster/Host Metrics 定义&#xff1a;http://<ambari-server>:<port>/api/v1/stacks/<stackName>/versions/<stackVersion>/artifacts/metrics_descriptor
例如&#xff1a;http://localhost:8080/api/v1/stacks/HDP/versions/2.3/artifacts/metrics_descriptor

Sink实现举例

一个简单的Metrics sink,在host上发送metric数据到metrics collector中。

#!/bin/sh

# sh sink.sh node1 test1 hikvisurl&#61;http://$1:6188/ws/v1/timeline/metrics
while [ 1 ]
do
millon_time&#61;$(( $(date &#43;%s%N) / 1000000 ))
random&#61;&#96;expr $RANDOM % 10&#96;
json&#61;"{
\"metrics\": [
{
\"metricname\": \"$2\",
\"appid\": \"$3\",
\"hostname\": \"localhost\",
\"timestamp\": ${millon_time},
\"starttime\": ${millon_time},
\"metrics\": {
\"${millon_time}\": ${random}
}
}
]
}"

echo $json |tee -a /root/my_metric.log
curl -i -X POST -H "Content-Type: application/json" -d "${json}" ${url}
sleep 5
done



Ambari Metrics显示API

Ambari Web 通过Ambari Server相关的接口&#xff0c;获取Metrics信息并负责显示。其中&#xff0c;具体的显示、管理是通过Widget进行操作的。简单理解&#xff0c;Widget是对Metrics的合并、分析后进行显示&#xff0c;如可在一个Widget图表中显示多个Metrics信息&#xff0c;或者根据Metrics的值决定显示的结果

这里写图片描述

相关数据表

&#xff08;这里Ambari底层使用的是MySQL数据库&#xff09;
相关的数据表包括&#xff1a;widget,widget_layout,widget_layout_user_widget。其中&#xff0c;各个数据表存储的数据接口如下所示&#xff1a;
1. widget表 :存储所有的widget定义员数据&#xff0c;包括id,widget_name, 对应的Metrics,widget_values,properties等数据&#xff1b;
2. widget_layout表&#xff1a;记录显示面板元数据。每个服务包括两个大的显示面板&#xff0c;serviceName_summary和serviceName_heatmap。另外&#xff0c;每个用户的又有自己的widget_layout,即每个用户可以自定义自己感兴趣的监控图表。如系统中存储用户admin&#xff0c;test用户&#xff0c;则可能有hdfs_summary和serviceName_heatmap两个section,其中对于hdfs_summary section&#xff0c;存在admin_hdfs_dashboard、test_hdfs_dashboard、admin_hdfs_heatmap和test_hdfs_heatmap &#xff08;另外&#xff0c;在数据库中&#xff0c;当test用户访问了hdfs heapmap监控区&#xff0c;数据表中才会创建出test_hdfs_heatmap layout这条记录&#xff09;。在widget_layout数据表中主要存储用户图表监控区的元数据&#xff0c;如id ,layout_name, section_name等。

相关API

查询所有的widget:

get http://ambari_server:port/api/v1/clusters/ClusterName/widgets/或&#xff1a;
get http://ambari_server:port/api/v1/clusters/ClusterName/widgets&#xff1f;widgetinfo/scope&#61;USER&widgetinfo/author&#61;admin&fields&#61;*

根据widge ID 查询某个widget 信息:

get http://ambari_server:port/api/v1/clusters/ClusterName/widgets/widget_id

对某个section中的 widget进行变更&#xff0c;保留列表中的Metrics(可用此API 在section中添加、删除metrics:

put http://ambari_server:port/api/v1/clusters/ClusterName/widget_layouts/section_id -d
&#39;{
"
WidgetLayoutInfo":{"dispaly_name": "Standard Storm Dashboard","layout_name":"layout_name","scope":"USER","section_name":"STORM_SUMMARY","widgets":[{"id":133},{"id":134}] }
}&#39;

获取某个section中活跃的widget列表

get http://ambari_server:port/api/v1/users/admin/activeWidgetLayouts?WidgetLayoutInfo/section_name&#61;section_name

目前Ambari 中hdfs,storm,kafaka,yarn定义了Widget,section_name可为hdfs_summary,yarn_summary,storm_summary,yarn_summary,kafaka_summary,yarn_summary,hdfs_heatmap,yarn_heatmap,storm,yarn_heatmap,kafaka_heatmap,yarn_heatmap

其他

Ambari Metrics 白名单

默认白名单位于/etc/ambari-metrics-collector/conf.目录下&#xff0c;可通过 ams-site 中的配置项 timeline.metrics.whitelist.file &#61;path_to_whitelist_file进行配置

Metrics 数据存储

默认情况下&#xff0c;Metrics数据存储在HBase中&#xff0c;使用的是Metrics内置的HBase&#xff0c;且该HBase是单节点模式。

进入Metrics HBase
在Metrics Collector节点&#xff0c;进入目录/usr/lib/ams-hbase/bin目录下&#xff0c;运行&#xff1a;
./hbase –config /etc/ams-hbase/conf shell即可进入hbase shell。

通过Phoenix连接HBase
在Metrics Collector节点&#xff0c;进入目录/usr/lib/ambari-metrics-collector/bin目录下&#xff0c;运行&#xff1a;
./sqlline.py localhost:61181 即可进入Phoenix。

参考文献&#xff1a;

Metrics : https://blog.csdn.net/youyou1543724847/article/details/82725184
Metrics初衷
https://issues.apache.org/jira/browse/AMBARI-5707

Metrics Collector API:
https://cwiki.apache.org/confluence/display/AMBARI/Metrics&#43;Collector&#43;API&#43;Specification

Metrics Wiki: https://cwiki.apache.org/confluence/display/AMBARI/Metrics


推荐阅读
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
author-avatar
玉龙惊云诱惑_786_286
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有