1 metering功能
L3 metering是在路由器(非DVR)层面上进行流量带宽统计。操作者配置IPranges,并分配标签(meter-label),每个标签会测量一组IP范围内的流量,并把带宽测量结果发送到oslo notificationsystem,并被Ceilometer收集。
通过设置每个L3namespace(qrouter-XXX)上的IPtables rules来实现流量统计功能,方法如下:
1,在每个路由器的FORWARD链添加metering规则
2,向metering链添加要统计的流量规则
3,这些规则将会指向一个统计流量的(数据包,bytes)链
4,增加一个agent,该代理从IPtables链获取带宽信息作为delta,然后push到oslo-messaging,ceilometer-agent-notification通过监听消息队列来收取bandwidth信息。
L3metering流量统计,以流经路由器的外部网关qg口为标准,因此,只有设置了外部网关以后,流量统计规则才会生效。
2 metering操作
2.1 metering 接口
Metering向用户提供了命令行接口:meter-label,meter-label-rule,通过创建这些接口,可以实现流量统计功能。下面列举了这些接口的数据结构。一个label可以包含多条rule,rule中指定了流量统计的目标。label是全局共享的,即在租户内的所有路由器上均会进行流量统计。
meter-label
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| description| |
| id | |
| name | |
| shared | |
| tenant_id | |
meter-label-rule
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| direction | |
| excluded | |
| id | |
|metering_label_id | |
|remote_ip_prefix | |
+-------------------+--------------------------------------+
l Meter-label支持增删改查,字段含义介绍如下。
Id: meter标签的唯一标识
Tenant_id:与标签关联的租户ID
Name: 标签的名字
Shared:设置label是否共享
Description:对标签的描述
l Meter-label-rule支持增删改查,字段含义介绍如下。
Metering_label_id:关联的label ID或name
Id: 唯一标识
Remote_ip_prefix:流量统计的IP地址段
Direction:流量统计的应用方向,分为入方向和出方向{ingress,egress},默认为ingress。
Ø 当方向为ingress , remote_ip_prefix地址表示源地址,统计从源地址流向qg口地址的流量。
Ø 当方向为egress, remote_ip_prefix 地址表示目的地址,统计从qg口流向到目的地址的流量。
Excluded:是否将IP地址段排出在流量统计之外,默认为不排除
2.2 metering统计结果查看命令
l 通过iptables命令查看,所创建meter-label-rules的统计结果。
当租户创建路由器并设置外部网关后,执行命令ip netns,能够看到相应的l3 namespace: qrouter-<router-id>。当创建了neutron meter-label,meter-label-rule,执行ip netns exec qrouter-<router-id> iptables –nL ,可查看到meter-label-chain,rule-chain。
通过执行如下命令,即可查看到流量统计结果。
# ip netns exec qrouter-<router-id> iptables -t filter -L neutron-meter-r-<label-id> -n -v -x |
如,# neutron meter-label-rule-create label1 172.24.4.0/24 # sudo ip netns exec qrouter-4a9431ff-a7d9-48cf-9127-92840eb4dae2 iptables -t filter -L neutron-meter-r-e67f353b-f9e -n -v –x
Chain neutron-meter-r-e67f353b-f9e (1 references) pkts bytes target prot opt in out source destination 0 0 neutron-meter-l-e67f353b-f9e all -- qg-4a7edbf3-a8 * 172.24.4.0/24 0.0.0.0/0 |
l 通过ceilometer命令查看
# ceilometer sample-list -m bandwidth [-q <QUERY>] |
sample-list命令将返回meter的所有采样点,采样点之间时间戳的间隔为 measure_interval 与 report_interval 之和。这两个值在/etc/metering_agent.ini中进行配置。
采样点之间具有相同的meter属性(名称name、类型type、单位unit),其统计值volume(value)、时间戳timestamp不同。resource id即为label id。
一条返回值示例:
+--------------------------------------+-----------+-------+--------+------+----------------------------+
| ResourceID | Name | Type | Volume | Unit |Timestamp |
+--------------------------------------+-----------+-------+--------+------+----------------------------+
| eb864f60-daff-494e-9c37-cb8e80d0681a | bandwidth | delta | 8568.0 |B | 2015-06-12T06:16:42.822400 |
+--------------------------------------+-----------+-------+--------+------+----------------------------+
注意,sample-list命令将以行的方式显示大量返回值。可以通过可选参数-q对结果进行筛选。可以只显示某个label的采样值或某一时间段内的采样值。
ceilometersample-list -m bandwidth -q 'resource_id=RESOURCE_ID;timestamp>START_TIME;timestamp<STOP_TIME'
q字符串参数的格式为:
-q'<field1><operator1><value1>;...;<field_n><operator_n><value_n>'
其中,操作符为 <, <=, =,!=, >= ,>中之一。
# ceilometer statistics -m bandwidth [-q <QUERY>] |
statistics命令只返回一条统计结果。它是在某个时间段内的一组采样点的集合。返回结果中包含所设置的时间段内的在样本集合上执行的5个函数,分别为,最大采样值Max,最小采样值Min,平均采样值Avg,所有样本值之和Sum和样本数量Count。
+--------+----------------------------+----------------------------+--------+-----+--------+--------+-------+---
| Period | Period Start | Period End | Max | Min | Avg | Sum |Count | Duration | DurationStart |Duration End |
+--------+----------------------------+----------------------------+--------+-----+--------+--------+-------+----------+----------------------------+----------------------------+
| 0 | 2015-06-12T06:16:42.822400 |2015-06-12T06:16:42.838430 | 8568.0 | 0.0 | 4284.0 | 8568.0 | 2 | 0.01603 | 2015-06-12T06:16:42.822400 | 2015-06-12T06:16:42.838430 |
+--------+----------------------------+----------------------------+--------+-----+--------+--------+-------+----------+----------------------------+----------------------------+
-q用法同上。因此使用statistics命令可以灵活的查看label在某一时间段内的流量统计结果总和。