使用Heapster获取集群对象的metric数据

    Heapster可以收集Node节点上的cAdvisor数据,还可以按照kubernetes的资源类型来集合资源,比如Pod、Namespace域,可以分别获取它们的CPU、内存、网络和磁盘的metric。默认的metric数据聚合时间间隔是1分钟。

    下面是Heapster架构图:

    Heapser是用Go语言开发Kubernetes集群计算资源使用情况的数据采集工具,编译后可以直接以一个二进制文件运行,通过向heapster传递的参数来指定数据采集行为,这些数据可以选择多种sink方式,例如Graphite、influxDB、OpenTSDB、ElasticSearch、Kafka等。

    Heapster使用起来很简单,本身就是二进制文件,直接使用命令行启动,也可以放在容器里运行,在作为kubernetes插件运行时,我们是直接放在容器中的,见。

    下面是heapster的启动参数:

    Version

    API使用

    Heapster提供RESTful API接口,下面以获取 namespace的memory usage为例讲解Heapster API的使用。

    构造URL地址

    结果

    访问该地址获取的结果是这样的:

    注意:Heapster中查询的所有值都是以最小单位为单位,比如CPU为1milicore,内存为B。

    第一部分:Heapster API地址

    可以使用下面的命令获取:

    第二部分:Heapster API参数

    /api/v1/model/namespaces/spark-cluster/metrics/memory/usage

    表示查询的是spark-cluster namespace中的的metrics。

    第三部分:时间片

    ?start=2017-10-16T09:14:00Z&end=2017-10-16T09:16:00Z

    查询参数为时间片:包括start和end。使用RFC-3339时间格式,在Linux系统中可以这样获取: