核心概念

监控项(Metric)

监控项(Metric)又称指标,通常是衡量系统某一方面的状态或状况的衡量标准,如系统、服务或程序的性能。监控项随着时间的推移会产生一系列监控数据点。BCE中对云服务默认提供了一系列的监控项,如BCC、RDS等,并有辅助的设施自动将这些监控项数据点发布到BCM中。用户也可以自定义一系列监控项,并采用BCM的API或bcm-tool工具将它们的数据点发布到BCM中,然后按照一定的筛选条件来检索这些数据点的数据或统计数据。

  • 监控项名称: 监控项名称(MetricName)为string类型,监控项(Metric)名需要跟可见空间(Scope)、一个或多个维度(Dimension)组合在一起才能唯一确定一个监控项数据的序列。

  • 监控项数据:目前只支持数值类型,采用Double所表示的数据范围。监控项数据目前的存储时间为2周。用户也可以采用API或bcm-tool工具从任意位置推送数据。

名字空间(Scope)

名字空间(Scope)是指监控项的可见范围。不同Scope的监控项彼此完全隔离,从而不会发生冲突。通常将不同的应用程序的监控项放在不同的Scope中。在任何使用监控项的地方,都必须增加Scope的指定。

预置的Scope:

  • 以BCE_为前缀的Scope,均为BCE提供的组件预置的Scope,包括:

    BCE_BCC :为BCC (Baidu Cloud Compute) 提供的Scope。
    BCE_BMR : 为BMR (Baidu MapReduce) 提供的Scope。
    BCE_BLB :为BLB (Baidu Load Balance) 提供的Scope。
    BCE_CDN : 为CDN (Content Delivery Service) 提供的Scope。
    BCE_BOS : 为BOS (Baidu Object Storage)提供的Scope。
    BCE_CDS : 为CDS (Cloud Disk Service) 提供的Scope。
    BCE_RDS :为RDS (Relational Database Service) 提供的Scope。
    BCE_SCS :为SCS (Simple Cache Service) 提供的Scope。
    BCE_SES : 为SES (Simple Email Service) 提供的Scope。
    BCE_SMS : 为SMS (Simple Message Service) 提供的Scope。
    BCE_SQS :为SQS (Simple Queue Service) 提供的Scope。

  • 以BCM_为前缀的Scope,为BCM预置的Scope,如BCM_SITE是站点监控的scope。

自定义的Scope:

自定义Scope的名字不能以“BCE”或“BCM”开头,且只能向自定义的Scope推送数据,而不能向系统预置的Scope推送数据。

维度(Dimension)

维度(Dimension)是用来描述监控项特征的多个键值对(Key/Value,简称K/V对)。维度不同,则意味着监控项是不同的。例如,对于虚拟机的监控项CPUUsagePercent来说,一个典型的维度就是机器ID(InstanceId),同时,描述这个监控项的维度还有虚拟机的镜像ID(ImageID)。

Dimension类型为一个结构体,其定义如下:

名称 是否必须 类型或固定取值 取值范围 描述
name string 参照使用须知—命名限制 Dimension的名字
value string 参照使用须知—命名限制 Dimension的值

维度的作用:

  • 与监控项名称一起来定位一个监控项,通常用于推送或获取这个监控项的数据。
  • 实现基于维度的统计,如统计所有指定镜像ID的虚拟机的CPU使用率。

统计(Statistic)

统计(Statistic)是将指定时间段(Period)内的监控项数据进行聚合。通常用于如下两类情况:

  • 一个监控项的监控数据在一定时间内的聚合,如某台机器按小时聚合CPU使用率数据。
  • 多个满足指定维度要求的监控项数据在一定时间内的聚合,如某个用户的所有的虚拟机的CPU按小时聚合的数据。

目前提供的统计方法包括(采用lowerCamel的命名规则):

  • minimum :指定的时间段内监控项数据的最小值。
  • maximum :指定的时间段内监控项数据的最大值。
  • sum :指定时间段内监控项数据的和值。
  • average :指定时间段内监控项数据的平均值,其计算方法为sum/sampleCount。
  • sampleCount:指定时间段内监控项数据的样本数。

数据点(DataPoint)

数据点是监控项在某一个时间点的值,其格式如下:

名称 描述 类型或固定取值 取值范围 是否必须
average 平均值 Double -
maximum 最大值 Double -
minimum 最小值 Double -
sampleCount 进行汇聚的样本个数 Integer -
sum 和值 Double -
timestamp 该汇聚点的时间戳 DateTime -

单位(Unit)

单位(Unit)表示监控项值或统计值的度量单位,用于用户更好地解读这个数据。定义如下规则:

  • 系统默认支持的单位包括:
    • Seconds
    • Microseconds
    • Milliseconds
    • Bytes
    • KBytes
    • MBytes
    • GBytes
    • TBytes
    • Bits
    • KBits
    • MBits
    • GBits
    • TBits
    • Percent
    • Count
    • BytesPerSecond
    • KBytesPerSecond
    • MBytesPerSecond
    • GBytesPerSecond
    • TBytesPerSecond
    • BitsPerSecond
    • KBitsPerSecond
    • MBitsPerSecond
    • GBitsPerSecond
    • TBitsPerSecond
    • CountPerSecond
    • None
  • 如果定义的监控项存在单位,则必须附加在监控项名字后面,如CPUUsagePercent。
  • 系统会自动从监控项名字中识别上述系统默认支持的单位,在展示上做丰富的语义处理,如对于NetworkInBytes,系统自动识别单位为Bytes。
  • 对于不在上述列表中的或未指定的,系统认为单位为None。如对于MyOwnMetric,系统认为单位为None。

时间戳(Timestamp)

时间戳的定义参照使用须知—日期与时间,监控项(Metric)的每个数据点必须带有时间戳,采用UTC时间,例如
2014-09-03T08:08:08Z。用户只能推送过去的2周之内(取决于系统数据的保存时间)和未来2小时范围内的数据。

周期 (Period)

周期 (Period)也称为时间段,是用于进行数据统计的时间长度,通常会将该Period内的所有数据按照一定的统计函数(Statistic)进行计算。时间段的单位为秒,但最小精度为1分钟,因此在指定时间段的时候,必须为60的整数倍。最小可选择的值为一分钟(60),最大可选择的值为2周(1,209,600),默认为60。

Period主要用于:

  • 查询数据的时候,通过指定时间段来获得不同粒度的聚合数据;
  • 设置报警的时候,通过指定时间段来获得不同粒度的聚合数据,然后同阈值进行相应的比较。