所有接口能夠根據閱讀如下代碼文件來獲取python
ceilometerclient.shell.py //一級命令 ceilometerclient.v1.shell.py //v1二級命令 ceilometerclient.v2.shell.py //v2二級命令
首先配置環境變量,下面幾個基本是必須的,也能夠經過配置項傳入mongodb
OS_USERNAME OS_PASSWORD OS_TENANT_NAME OS_AUTH_URL CEILOMETER_API_VERSION
經常使用的命令shell
ceilometer //查看幫助和二級命令
如今經測試,非admin用戶沒法使用v2接口,緣由是v1和v2的acl.py文件並不相同,若是不是admin用戶v2會直接拋出異常,這個能夠經過修改policy.py代碼來控制數據庫
二級命令能夠查看收集器蒐集的數據,官方說H版本會棄用v1版本接口,因此推薦使用v2接口,相應參數及-q選項能夠查看代碼,再fields變量中有定義windows
ceilometer meter-list //列舉全部測量值 ceilometer meter-list -q resource_id=XXX //列舉某一實例測量值 ceilometer sample-list -m cpu -q resource_id=XXX //列舉某一實例的cpu採樣數據 ceilometer sample-list -m cpu_util -q 'resource_id=b7fc623d-1d4a-4ac7-b96b-78c9d921fa74;timestamp>2013-05-21T03:18:20;timestamp<2013-05-21T03:30:20' ceilometer statistics -m cpu //列舉實例的統計數據 ceilometer resource-list //列舉全部實例列表
經常使用的q的參數網絡
resuorce_id
user_id
project_id
timestamp數據結構
Openstack ceilometer主要用於監控虛擬機、服務(glance、image、network等)和事件。虛擬機的監控項主要包含CPU、磁盤、網絡、instance。本文在現有監控項的基礎上,介紹怎樣添加新的監控項目。架構
1、Ceilometer框架結構框架
Ceilometer監控經過在計算節點部署Compute服務。輪詢其計算節點上的instance。獲取各自的CPU、網絡、磁盤等監控信息,發送到RabbitMQ。Collector服務負責接收信息進行持久化存儲。具體框架例如如下圖所看到的(點擊查看大圖)。測試
本文主要介紹instance的監控。獲取instance的監控數據發送到message隊列。instance的監控數據的獲取主要經過Compute服務以pollster方式輪詢各虛擬機。Compute服務類圖例如如下(點擊查看大圖)。
經過該類圖可知,新增項目需要繼承ComputePollster類,並實現get_samples方法。最後經過配置就能夠。獲取到新的監控項數據。
由於。現有的Ceilometer沒有對內存的實時監控,本文之內存爲例。具體介紹添加新的監控項的流程。
2、新增虛擬機監控項
現有虛擬機的監控項目,沒有對內存的監控。
本文之內存爲例。介紹添加內存監控模塊的方法,添加內存監控方法比較簡單。主要在compute端添加獲取數據的方式,而後改動配置文件,就能夠將數據持久化數據庫中。
具體過程例如如下:
一、在 ceilometer/ceilometer/compute/pollsters文件夾下新建文件mem.py(名字本身定義)。在該文件下定義MEMPollster類並實現get_samples方法:
class MEMPollster(plugin.ComputePollster): |
def get_samples(self, manager, cache, instance): |
二、get_samples中獲取內存數據的方式,可參考CPU獲取數據的架構,在ceilometer/ceilometer/compute/virt/inspector.py 中定義返回數據的格式:
MEMStats = collections.namedtuple('MEMStats', ['total', 'free']) |
獲取內存方式多樣,本文採用讀取proc文件獲取instance所在進程佔用的內存大小。有時獲取的數據比instance最大內存大。因此該方式對windows系統的虛機有必定的偏差。僅做爲演示樣例參考。
方法定義例如如下:
def inspect_mems(self, instance_name): |
獲取數據後,按sample數據結構返回就能夠。
三、設計完上述獲取數據的方式後。並不能輪詢到內存數據,還需要改動一些設置文件。
首先。改動ceilometer/setup.cfg文件,在該文件ceilometer.poll.compute下,添加
mem = ceilometer.compute.pollsters.mem:MEMPollster |
其次。由於包衝突的問題。將ceilometer安裝在隔離環境中,因此source隔離環境,又一次安裝ceilometer,以上配置才幹生效。
運行 python setup.py develop 命令就能夠。
四、從新啓動ceilometer服務,進入mongodb的ceilometer數據庫就能夠在meter表中查看mem的監控數據。