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在某一時間段內的流量統計結果總和。